この特集のトップページへ
Chapter 4:データストア層の構築

head1.gif 4.4 リモートの呼び出し機能

 最後に,COM+のリモート呼び出し機能について説明しておこう。「Chapter 1 クライアント/サーバーアプリケーションの仕組み」では,MTSやCOM+を利用すると,リモートのCOMコンポーネントを呼び出す仕組みを備えることができると説明した。ここでは,実際にリモートでCOMコンポーネントを起動するためには,どのような設定が必要となるのかについて説明する。

head2.gif 4.4.1 COM+をリモート呼び出しする仕組み
 MTSやCOM+では,Fig.4-36のようにしてリモート呼び出しを可能にする。

Fig.4-36 リモート呼び出しの仕組み
fig4_36.gif

 クライアント側からサーバー側のCOMオブジェクトを実体化するとき,まず,クライアント側に「プロキシ」というCOMオブジェクトが生成される。プロキシは,クライアントがCOMオブジェクトを呼び出したりプロパティを参照したりしたとき,それを代理してサーバー側に依頼するCOMオブジェクトである。

 プロキシが起動されるのに伴い,サーバー側では「スタブ」というプログラムが起動される(スタブを起動するには,MS RPCというプロトコルが使われるのだが,ここでは説明を割愛する)。スタブは,クライアント側のプロキシと通信し,プロキシ側の依頼に従って,サーバー側に存在するCOMオブジェクトを呼び出し,その結果をプロキシ側に返す。プロキシとスタブのあいだは,「DCOM(Distributed COM)」と呼ばれるプロトコルで通信される。

 つまり,プロキシはクライアント側でCOMオブジェクトのように振る舞い,スタブはサーバー側でCOMクライアントのように振る舞っているのである。

 COM+では(MTSでも同じである),サーバー側のスタブは自動的に用意される。よって,クライアント側にプロキシをインストールすれば,それで通信できるようになり,COM+によって管理されたCOMコンポーネントをネットワーク越しに利用できるようになる。


One Point!プロキシとスタブは,ネットワーク環境でのみ利用されるわけではない。両者が同じメモリ空間のなかに存在しなければ,常にプロキシとスタブが利用される。「同じメモリ空間のなかに存在しない」とは,たとえば,dllファイルではなくexeファイルとして提供されるCOMコンポーネントが挙げられる。
 また,COM+の場合には,COMクライアントからの呼び出しをフックして処理するためにインターセプタと呼ばれる仕組みが用意されていて,その実装にプロキシとスタブが使われている。インターセプタの詳細は,次章で説明する。

prevpg.gif Chapter 4 12/16 nextpg.gif