Freigeben über


Stellvertreter

Ein Proxy befindet sich im Adressraum des aufrufenden Prozesses und fungiert als Ersatz für das Remoteobjekt. Aus Sicht des aufrufenden Objekts ist der Proxy das Objekt. In der Regel besteht die Rolle des Proxys darin, die Schnittstellenparameter für Aufrufe von Methoden in den Objektschnittstellen zu verpacken. Der Proxy packt die Parameter in einen Nachrichtenpuffer und übergibt den Puffer an den Kanal, der den Transport zwischen Prozessen verarbeitet. Der Proxy wird als aggregiertes oder zusammengesetztes Objekt implementiert. Sie enthält ein vom System bereitgestelltes, manager-Element, das als Proxy-Manager bezeichnet wird, und eine oder mehrere schnittstellenspezifische Komponenten, die als Schnittstellenproxys bezeichnet werden. Die Anzahl der Schnittstellenproxys entspricht der Anzahl der Objektschnittstellen, die für diesen bestimmten Client verfügbar gemacht wurden. Damit der Client dem Komponentenobjektmodell entspricht, scheint der Proxy das eigentliche Objekt zu sein.

Anmerkung

Bei der benutzerdefinierten Marshaling kann der Proxy ähnlich implementiert werden, oder er kann direkt mit dem Objekt kommunizieren, ohne einen Stub zu verwenden.

 

Jeder Schnittstellenproxy ist ein Komponentenobjekt, das den Marshallingcode für eine der Schnittstellen des Objekts implementiert. Der Proxy stellt das Objekt dar, für das er Marshallingcode bereitstellt. Jeder Proxy implementiert auch die IRpcProxyBuffer Schnittstelle. Obwohl die durch den Proxy dargestellte Objektschnittstelle öffentlich ist, ist die IRpcProxyBuffer Implementierung privat und wird intern innerhalb des Proxys verwendet. Der Proxy-Manager verfolgt die Schnittstellenproxys und enthält auch die öffentliche Implementierung der steuerungsbasierten IUnknown Schnittstelle für das Aggregat. Jeder Schnittstellenproxy kann in einer separaten DLL vorhanden sein, die geladen wird, wenn die von ihr unterstützte Schnittstelle für den Client materialisiert wird.

Struktur des Proxys

Das folgende Diagramm zeigt die Struktur eines Proxys, der die standardmäßige Marshalling von Parametern unterstützt, die zu zwei Schnittstellen gehören: IA1 und IA2. Jeder Schnittstellenproxy implementiert IRpcProxyBuffer für die interne Kommunikation zwischen den Aggregatteilen. Wenn der Proxy bereit ist, seine marshalierten Parameter über die Prozessgrenze zu übergeben, ruft er Methoden in der IRpcChannelBuffer Schnittstelle auf, die vom Kanal implementiert wird. Der Kanal leitet wiederum den Aufruf an die RPC-Laufzeitbibliothek weiter, damit er sein Ziel im Objekt erreichen kann.

Diagramm, das die Struktur des Proxys zeigt.

Kanal-

Inter-Object Kommunikations-

Marshaling Details

Microsoft RPC-

Stub-