Compartilhar via


Valores de atributo de sincronização

O atributo synchronization é uma propriedade declarativa que especifica que tipo de sincronização você deseja que seus componentes tenham quando forem ativados. Quando você inclui o atributo de sincronização, COM+ lida com os detalhes da sincronização em seu nome; Você não precisa fazer nenhuma outra chamada.

Dependendo de seus requisitos, um objeto pode compartilhar a sincronização de seu chamador, exigir uma nova sincronização ou operar sem sincronização.

COM+ fornece os seguintes valores de atributo de sincronização:

  • Desabilitado. Quando você desabilita o atributo de sincronização, COM+ ignora os requisitos de sincronização do componente na determinação do contexto para o objeto. Como resultado, o objeto pode ou não compartilhar o contexto (e a sincronização) de seu chamador.

    Em geral, você deve usar esse valor de atributo quando souber que o componente nunca acessa um gerenciador de recursos. Ao migrar componentes COM para COM+, você deve desabilitar o atributo de sincronização para manter o mesmo comportamento que o componente COM não configurado. Um componente não configurado é um componente COM que não foi instalado em um aplicativo COM+.

  • Sem suporte. Um objeto com esse valor nunca participa da sincronização, independentemente do status de seu chamador. Essa configuração está disponível apenas para componentes que não são transacionais e não usam o serviço de ativação just-in-time (JIT) COM+.

  • Com suporte. Um objeto com esse valor participa da sincronização, se existir. Você declara esse valor quando deseja que um objeto compartilhe a sincronização de seu chamador, mas não exija sincronização própria.

    Um bom motivo para definir o atributo de sincronização como Suportado é que essa configuração pode ser menos dispendiosa em termos de recursos do sistema. No entanto, é mais difícil escrever seu componente devido à necessidade de protegê-lo de chamadas simultâneas. A implicação de definir o atributo de sincronização como Supported é que, em determinadas circunstâncias, uma instância do seu objeto pode ser criada de tal forma que não seja sincronizada. Se o modelo de threading do componente for Free ou Both, você terá que proteger os dados da instância com algum tipo de mecanismo de bloqueio. Se o Modelo de Threading for Apartment (STA), você não precisará proteger os dados da instância.

  • Obrigatório. Quando você define esse atributo, COM+ garante que todos os objetos criados a partir do componente serão sincronizados. Na verdade, sempre que o COM+ cria uma instância do componente, ele garante que haja apenas um thread passando por essa instância por vez.

    À medida que COM+ ativa um objeto, ele examina o status de sincronização de seu chamador. Se o chamador estiver sincronizado, COM+ fluirá o limite de sincronização do chamador para incluir o novo objeto. Caso contrário, COM+ inicia a sincronização.

  • requer novo. Um objeto com esse valor deve participar de uma nova sincronização, onde COM+ gerencia contextos e apartamentos em nome de todos os componentes envolvidos na chamada. COM+ inicia automaticamente uma nova sincronização, que é diferente da sincronização do chamador.

    Um bom motivo para definir o atributo de sincronização como Requer Novo é que essa configuração permite que você faça chamadas externas para uma instância do componente com mais eficiência. No entanto, ele também torna as chamadas entre seu objeto e o objeto que o criou mais caras em termos de recursos do sistema.

    Por exemplo, suponha um caso em que seu objeto e seu objeto criador compartilham o mesmo limite de sincronização. Se o cliente A chamar o objeto criador e o cliente B chamar seu objeto, a segunda chamada terá que aguardar até que a primeira chamada seja concluída. Se você definir Requer novo, seu objeto será criado em um limite de sincronização separado. Nesse caso, as chamadas de outros objetos podem ser processadas ao mesmo tempo. No entanto, as chamadas do objeto criador para o objeto exigem mais recursos do sistema, pois devem cruzar os limites de sincronização.

Definindo o atributo de sincronização

Dependências de sincronização