この特集のトップページへ
Chapter 1:オブジェクト指向から見たCOM+

見出し 1.2.3 COM+とCORBA
 本稿の執筆時点で「分散コンピューティング」というと,COM/COM+と並んでCORBA(Common Object Request Broker Architecture)の名前が必ず登場する。CORBAは,1990年に分散オブジェクトの標準化組織であるOMG(Object Management Group)がリリースした『Object Management Architecture Guide』によって既定された分散コンピューティングテクノロジである。では,COM/COM+と対局をなすCORBAは,どのような仕組みで分散コンピューティングを構築するのであろうか。

 CORBAでは,クライアントがオブジェクトに対してリクエストを発行し,それに対してオブジェクトが応答する仕組みを備えている。その際,クライアントとオブジェクトとのあいだを取り持つのが,オブジェクトリクエストブローカ(Object Request Broker:ORB)である。CORBAもCOMと同様にIDL(Interface Definition Language)を使用してオブジェクトのインタフェースを定義している。そして,IDLコンパイラにより,クライアントサイドとサーバーサイドのコードを生成する。COMの場合,クライアントサイドのコードはプロキシコード,サーバーサイドのコードをスタブコードと呼ぶのに対して,CORBAの場合,クライアントサイドのコードをスタブコード,サーバーサイドのコードをスケルトンコードと呼ぶ点が異なる。Fig.1-8Fig.1-9に,CORBAによる分散アプリケーションアーキテクチャとCOM/COM+による分散アプリケーションアーキテクチャをそれぞれ示す。

Fig.1-8 CORBAによる分散アプリケーションアーキテクチャ
fig.1-8
Fig.1-9 COM/COM+による分散アプリケーションアーキテクチャ
fig.1-9

 次に,CORBAによるオブジェクトの接続を見てみよう。クライアントは,使用中のプログラミング言語と任意のオブジェクトのインタフェースとをマッピングするため,バインディングという処理を実行する。このマッピングには,ネットワーク上のオブジェクトを一意に識別できるID(これを「オブジェクトリファレンス」と呼ぶ)が必要となる。すでにある程度COMを理解している読者は,オブジェクトリファレンスはCOMにおけるインタフェースIDに相当すると理解してもらいたい(COMにおけるインタフェースIDについては後述する)。オブジェクトリファレンスは,前述のORBによって提供される。さらに,インタフェースの呼び出しについても,静的な呼び出しと動的な呼び出しの2種類がある。これらは,COMにおけるVTableによるアーリーバインディングと,オートメーションを使用したときのレイトバインディングなどに相当する。

 このように,分散コンピューティングをリードするCOM/COM+とCORBAという両者には,用語の違いや概念の相違はあるものの,システムダウンが許されない基幹業務で堅牢な分散システムを効率よく構築するのに欠かせない存在になっている。

 この章は,導入部ということもあって,概念的な解説や沿革の解説ばかりになってしまった。次章では,実際にCOMのソースコードを示しながら,その実装に言及する。通常のプログラムとCOMがどう違うのか,COMを利用するにはどうすればよいのかを理解していただきたい。

 また,新しい分散コンピューティング技術として注目を集めているJavaとWindows DNAとの対比は,併行して連載されている大澤文孝氏の記事で解説されている。興味がある人は,ぜひ参照していただきたい。

▼ Chapter 1のソースファイル

prev Chapter 1 8/8