Acceso a interfaces entre apartamentos

COM proporciona una manera para que cualquier apartamento en un proceso obtenga acceso a una interfaz implementada en un objeto en cualquier otro apartamento del proceso. Esto se realiza a través de la interfaz IGlobalInterfaceTable . Esta interfaz tiene tres métodos, lo que le permite hacer lo siguiente:

  • Registre una interfaz como una interfaz global (en todo el proceso).
  • Obtenga un puntero a esa interfaz desde cualquier otro apartamento a través de una cookie.
  • Revocar el registro global de una interfaz.

La interfaz IGlobalInterfaceTable es una manera eficaz de almacenar un puntero de interfaz en una ubicación de memoria a la que se puede acceder desde varios apartamentos dentro del proceso, como variables de todo el proceso y objetos ágiles (objetos sin subprocesos, serializado) que contienen punteros de interfaz a otros objetos.

Un objeto ágil no es consciente de la infraestructura COM subyacente en la que se ejecuta; es decir, en qué apartamento, contexto y subproceso se está ejecutando. El objeto puede mantenerse en interfaces específicas de un apartamento o contexto. Por este motivo, llamar a estas interfaces desde cualquier lugar donde se ejecute el componente ágil podría no funcionar siempre correctamente. La tabla de interfaz global evita este problema al garantizar que se usa un proxy válido (o puntero directo) al objeto, en función de dónde se ejecuta el objeto agile.

Nota

La tabla de interfaz global no es portátil entre los límites de proceso o máquina, por lo que no se puede usar en lugar del mecanismo normal de paso de parámetros.

 

Para obtener información sobre cómo crear y usar una tabla de interfaz global, consulte los temas siguientes:

Elección del modelo de subprocesos

Apartamentos multiproceso

Problemas de subprocesos del servidor en proceso

Procesos, subprocesos y apartamentos

Comunicación multiproceso y multiproceso

Apartamentos de un solo subproceso