プロキシ

プロキシは、呼び出し元プロセスのアドレス空間に存在し、リモート オブジェクトのサロゲートとして機能します。 呼び出し元のオブジェクトの観点からは、プロキシはオブジェクトです。 通常、プロキシの役割は、オブジェクト インターフェイス内のメソッドの呼び出し用のインターフェイス パラメーターをパッケージ化することです。 プロキシは、パラメーターをメッセージ バッファーにパッケージ化し、チャネルにバッファーを渡します。このチャネルは、プロセス間のトランスポートを処理します。 プロキシは、集計オブジェクトまたは複合オブジェクトとして実装されます。 これには、プロキシ マネージャーと呼ばれるシステム提供のマネージャー部分と、インターフェイス プロキシと呼ばれる 1 つ以上のインターフェイス固有のコンポーネントが含まれています。 インターフェイス プロキシの数は、その特定のクライアントに公開されているオブジェクト インターフェイスの数と同じです。 コンポーネント オブジェクト モデルに準拠しているクライアントには、プロキシが実際のオブジェクトのように見えます。

Note

カスタム マーシャリングを使用すると、プロキシを同様に実装したり、スタブを使用せずにオブジェクトと直接通信したりできます。

 

各インターフェイス プロキシは、オブジェクトのインターフェイスの 1 つのマーシャリング コードを実装するコンポーネント オブジェクトです。 プロキシは、マーシャリング コードを提供するオブジェクトを表します。 各プロキシは、IRpcProxyBuffer インターフェイスも実装します。 プロキシによって表されるオブジェクト インターフェイスはパブリックですが、IRpcProxyBuffer の実装はプライベートであり、プロキシ内で内部的に使用されます。 プロキシ マネージャーはインターフェイス プロキシを追跡し、集計の制御する IUnknown インターフェイスのパブリック実装も含みます。 各インターフェイス プロキシは、サポートするインターフェイスがクライアントに具体化されるときにロードされる個別の DLL に存在できます。

プロキシの構造

次の図は、IA1 と IA2 の 2 つのインターフェイスに属するパラメーターの標準マーシャリングをサポートするプロキシの構造を示しています。 各インターフェイス プロキシは、集約部分間の内部通信用に IRpcProxyBuffer を実装します。 プロキシは、マーシャリングされたパラメーターをプロセス境界を越えて渡す準備ができたら、チャネルによって実装される IRpcChannelBuffer インターフェイス内のメソッドを呼び出します。 チャネルは、呼び出しを RPC ランタイム ライブラリに転送して、オブジェクト内の宛先に到達できるようにします。

Diagram that shows the structure of the proxy.

Channel

オブジェクト間通信

マーシャリングの詳細

Microsoft RPC

Stub