Zugriff auf Schnittstellen über Mehrere Wohnungen hinweg

COM bietet eine Möglichkeit für jedes Apartment in einem Prozess, Zugriff auf eine Schnittstelle zu erhalten, die für ein Objekt in einem anderen Apartment im Prozess implementiert ist. Dies erfolgt über die IGlobalInterfaceTable-Schnittstelle . Diese Schnittstelle verfügt über drei Methoden, mit denen Sie folgende Aktionen ausführen können:

  • Registrieren Sie eine Schnittstelle als globale (prozessweite) Schnittstelle.
  • Rufen Sie einen Zeiger auf diese Schnittstelle von jeder anderen Wohnung über ein Cookie ab.
  • Widerrufen Sie die globale Registrierung einer Schnittstelle.

Die IGlobalInterfaceTable-Schnittstelle ist eine effiziente Möglichkeit für einen Prozess, einen Schnittstellenzeiger an einem Speicherort zu speichern, auf den von mehreren Apartments innerhalb des Prozesses zugegriffen werden kann, z. B. prozessweite Variablen und agile Objekte (Freethread-Objekte, gemarshallte Objekte), die Schnittstellenzeiger auf andere Objekte enthalten.

Ein agiles Objekt ist der zugrunde liegenden COM-Infrastruktur, in der es ausgeführt wird, nicht bekannt. mit anderen Worten, in welcher Wohnung, in welchem Kontext und in welchem Thread es ausgeführt wird. Das Objekt kann an Schnittstellen festgehalten werden, die für ein Apartment oder einen Kontext spezifisch sind. Aus diesem Grund funktioniert das Aufrufen dieser Schnittstellen von überall aus, wo die agile Komponente ausgeführt wird, möglicherweise nicht immer ordnungsgemäß. Die globale Schnittstellentabelle vermeidet dieses Problem, indem sichergestellt wird, dass ein gültiger Proxy (oder direkter Zeiger) auf das Objekt verwendet wird, je nachdem, wo das agile Objekt ausgeführt wird.

Hinweis

Die globale Schnittstellentabelle ist nicht über Prozess- oder Computergrenzen hinweg portierbar, sodass sie nicht anstelle des normalen Mechanismus für die Parameterübergabe verwendet werden kann.

 

Informationen zum Erstellen und Verwenden einer globalen Schnittstellentabelle finden Sie in den folgenden Themen:

Auswählen des Threadingmodells

Multithread-Wohnungen

Probleme beim In-Process-Serverthreading

Prozesse, Threads und Apartments

Singlethread- und Multithreadkommunikation

Singlethread-Wohnungen