Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O atributo de sincronização é uma propriedade declarativa que especifica que tipo de sincronização você deseja que seus componentes tenham quando são ativados. Quando você inclui o atributo de sincronização, o COM+ manipula os detalhes da sincronização em seu nome; você não precisa fazer outras chamadas.
Dependendo de seus requisitos, um objeto pode compartilhar a sincronização do chamador, exigir uma nova sincronização ou operar sem sincronização.
O COM+ fornece os seguintes valores de atributo de sincronização:
Desactivado. Quando você desabilitar 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 do chamador (e a sincronização).
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+.
Não há 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 a ativação just-in-time (JIT) do do COM+.
Suportado. Um objeto com esse valor participará da sincronização se ele existir. Você declara esse valor quando deseja que um objeto compartilhe a sincronização de seu chamador, mas não requer sincronização própria.
Um bom motivo para definir seu atributo de sincronização como Compatível é que essa configuração pode ser mais barata em termos de recursos do sistema. No entanto, é mais difícil gravar seu componente devido à necessidade de protegê-lo contra chamadas simultâneas. A implicação de definir o atributo de sincronização como Compatível é que, em determinadas circunstâncias, uma instância do seu objeto pode ser criada de forma que não seja sincronizada. Se o modelo de threading do componente for Gratuito ou Ambos, você precisará proteger os dados da instância com algum tipo de mecanismo de bloqueio. Se o modelo de threading for STA (Apartamento), você não precisará proteger os dados da instância.
Necessário. Quando você define esse atributo, COM+ garante que todos os objetos criados a partir do componente serão sincronizados. Na verdade, sempre que COM+ cria uma instância do componente, ele garante que haja apenas um thread passando por essa instância de cada vez.
À medida que o COM+ ativa um objeto, ele examina o status de sincronização de seu chamador. Se o chamador for sincronizado, COM+ fluirá o limite de sincronização do chamador para incluir o novo objeto. Caso contrário, COM+ iniciará a sincronização.
Requer Novo. Um objeto com esse valor deve participar de uma nova sincronização, em que COM+ gerencia contextos e apartamentos em nome de todos os componentes envolvidos na chamada. O COM+ inicia automaticamente uma nova sincronização, que é distinta da sincronização do chamador.
Um bom motivo para definir seu atributo de sincronização como Requires New é 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 o objeto e o objeto que o criaram mais caro em termos de recursos do sistema.
Por exemplo, suponha um caso em que seu objeto e seu objeto criador compartilhem 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 Exigir Novo, seu objeto será criado em um limite de sincronização separado. Nesse caso, 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 elas devem cruzar os limites de sincronização.
Tópicos relacionados