Partilhar via


Contextos COM+

Para componentes configurados executados em aplicativos COM+, contextos são a base sobre a qual os serviços COM+ são fornecidos. Em COM+, um contexto é definido como um conjunto de propriedades de tempo de execução associadas a um ou mais objetos COM que são usados para fornecer serviços para esses objetos.

Em COM+, cada objeto COM está associado precisamente a um contexto enquanto é executado (ou seja, entre sua ativação e desativação), e cada contexto reside dentro de precisamente um apartamento COM. Vários objetos podem ser executados dentro do mesmo contexto, e vários contextos podem residir dentro do mesmo apartamento. Inicializadas quando um objeto é ativado, as propriedades de contexto, como propriedades de contexto de segurança, representam as necessidades de tempo de execução de um objeto.

Observação

Para componentes não configurados que não usam serviços COM+, o contexto é, na maioria das vezes, ignorado.

 

COM+ usa propriedades de contexto como base para fornecer serviços de tempo de execução. Essas propriedades mantêm o estado que determina como o ambiente de execução executa serviços para objetos dentro do contexto. Em alguns casos, você pode interagir diretamente com as propriedades de contexto de um objeto para indicar algum estado relevante para um serviço que está sendo fornecido para o objeto. Por exemplo, você faria isso quando um objeto que está participando de uma transação automática vota no resultado da transação.

Para obter uma discussão detalhada da base COM desses conceitos, consulte Processos, tópicos e apartamentos.

Interação programática com propriedades de contexto

Cada contexto tem um associado ObjectContext objeto que controla suas propriedades. Você pode acessar ObjectContext chamando a funçãoGetObjectContext. Depois de acessar ObjectContext, você pode chamar métodos na interface deIObjectContextque ele expõe para manipular propriedades de contexto.

Por exemplo, chamar IObjectContext::SetComplete tem o efeito de definir o bit de consistência da transação como "consistente" e o bit de ativação JIT feito para "concluído" no contexto associado ao objeto. "Consistente" sinaliza para COM+ que você vota para confirmar a transação, e "concluído" indica que seu objeto está pronto para ser desativado quando o método retornar.

Além de IObjectContext, outras interfaces especializadas que fornecem acesso a propriedades de contexto são IObjectContextInfo, IContextStatee IObjectContextActivity. Até certo ponto, ISecurityCallContext também acessa propriedades de contexto. Você pode usar IGetSecurityCallContext::GetSecurityCallContext para obter ISecurityCallContext .

Noções básicas sobre ativação e intercetação

Geralmente, você precisa pensar no contexto apenas na medida em que ele representa várias propriedades, algumas das quais você pode definir ou obter, que são usadas para fornecer serviços COM+ para seus componentes. Em algumas circunstâncias, no entanto, talvez seja necessário considerar as seguintes duas facetas inter-relacionadas de contextos com mais detalhes:

Relação com os invólucros de contexto MTS

Os contextos substituem efetivamente os wrappers de contexto MTS. O propósito que eles serviam — fornecer serviços automáticos intercetando solicitações de criação — agora é um recurso integrado do COM+. Como resultado, você não precisa mais usar a função SafeRef. No MTS, SafeRef foi usado para obter uma referência ao seu objeto que poderia ser passada fora do seu invólucro de contexto. No COM+, isso é desnecessário; As referências de objeto normais (este ponteiros) funcionam.