Contextos COM+
En el caso de los componentes configurados que se ejecutan en aplicaciones COM+, los contextos son la base sobre la que se proporcionan los servicios COM+. En COM+, un contexto se define como conjunto de propiedades en tiempo de ejecución asociadas a uno o varios objetos COM que se usan para proporcionar servicios para esos objetos.
En COM+, cada objeto COM se asocia exactamente a un contexto a medida que se ejecuta (es decir, entre su activación y desactivación), y cada contexto reside en un apartamento COM precisamente. Varios objetos se pueden ejecutar en el mismo contexto y varios contextos pueden residir en el mismo apartamento. Inicializado cuando se activa un objeto, las propiedades de contexto, como las propiedades de contexto de seguridad, representan las necesidades en tiempo de ejecución de un objeto.
Nota
En el caso de los componentes no configurados que no usan servicios COM+, el contexto es, en su mayor parte, omitido.
COM+ usa propiedades de contexto como base para proporcionar servicios en tiempo de ejecución. Estas propiedades contienen el estado que determina cómo el entorno de ejecución realiza los servicios para los objetos dentro del contexto. En algunos casos, puede interactuar directamente con las propiedades de contexto de un objeto para indicar algún estado relevante para un servicio que se proporciona para el objeto. Por ejemplo, lo haría cuando un objeto que participa en una transacción automática vota en el resultado de la transacción.
Para obtener una explicación detallada de la base COM de estos conceptos, consulte Procesos, Subprocesos y Apartamentos.
Interacción mediante programación con propiedades de contexto
Cada contexto tiene un objeto ObjectContext asociado que realiza un seguimiento de sus propiedades. Puede acceder a ObjectContext llamando a la función GetObjectContext . Una vez que haya accedido a ObjectContext, puede llamar a métodos en la interfaz IObjectContext que expone para manipular las propiedades de contexto.
Por ejemplo, llamar a IObjectContext::SetComplete tiene el efecto de establecer el bit de coherencia de la transacción en "coherente" y el bit de activación JIT realizado en "done" en el contexto asociado al objeto. "Coherente" indica a COM+ que vota para confirmar la transacción y "listo" indica que el objeto está listo para desactivarse cuando el método vuelve.
Además de IObjectContext, otras interfaces especializadas que proporcionan acceso a las propiedades de contexto son IObjectContextInfo, IContextState e IObjectContextActivity. En cierta medida, ISecurityCallContext también tiene acceso a las propiedades de contexto. Puede usar IGetSecurityCallContext::GetSecurityCallContext para obtener ISecurityCallContext.
Descripción de la activación y la interceptación
Por lo general, debe pensar en el contexto solo en la medida en que representa una serie de propiedades, algunas de las cuales se pueden establecer u obtener, que se usan para proporcionar servicios COM+ para los componentes. Sin embargo, en algunas circunstancias, es posible que tenga que tener en cuenta las dos facetas interrelacionadas siguientes de contextos con mayor detalle:
- Activación de contexto o inicialización de un objeto en un contexto adecuado.
- Interceptación o lo que hace COM+ en las llamadas a través de un límite de contexto.
Relación con los contenedores de contexto de MTS
Los contextos reemplazan eficazmente los contenedores de contexto de MTS. El propósito que atienden, que proporcionan servicios automáticos mediante la captura de solicitudes de creación, ahora es una característica integrada de COM+. Como resultado, ya no es necesario usar la función SafeRef . En MTS, SafeRef se usó para obtener una referencia al objeto que podría pasarse fuera de su contenedor de contexto. En COM+, esto no es necesario; las referencias de objeto normales (estos punteros) funcionan.