Interceptación de llamadas entre contextos
Cuando se activa un objeto en un contexto determinado, las llamadas posteriores a o desde él, dentro del contexto, se controlan de forma diferente a las llamadas a través del límite del contexto. Las llamadas a través del límite de contexto se controlan con servidores proxy ligeros. Estos servidores proxy controlan cualquier mediación necesaria para ajustar el entorno en tiempo de ejecución de uno que admita al autor de la llamada a uno que admita el destinatario. Este proceso se conoce como interceptación.
La interceptación de llamadas entre contextos es necesaria porque los objetos de distintos contextos tienen requisitos en tiempo de ejecución diferentes, es precisamente el motivo de los contextos. COM+ intercepta todas las referencias de objeto que se pasan como parámetros de método y las convierte automáticamente en servidores proxy para que se puedan usar en el nuevo contexto.
Si comparte referencias de objeto entre límites de contexto por otros medios (por ejemplo, en variables globales), siempre debe usar CoMarshalInterface y CoUnmarshalInterface. Estas funciones pueden traducir una referencia de objeto a un proxy utilizable en un contexto diferente. Nunca comparta una referencia de objeto sin formato a través de los límites del contexto.
El comportamiento de las llamadas entre contextos puede tener consecuencias no deseadas en el caso de objetos que exponen interfaces que no se pueden serializar. En esta circunstancia, es probable que desee insistir en que el objeto que no se puede serializar se active solo en el contexto de su autor de la llamada y nunca en su propio contexto. Para ello, seleccione la opción Debe activarse en el contexto del autor de la llamada en la pestaña Activación de la página Propiedades del componente. (Consulte Aplicación de la activación en el contexto del autor de la llamada para obtener instrucciones paso a paso).
Temas relacionados