|
CORBA は、オブジェクト ベースの分散アプリケーションを作成するための仕様です。CORBA のアーキテクチャと仕様は、Object Management Group (OMG) によって開発されました。OMG は、数百社の情報システム ベンダで構成されるコンソーシアムです。CORBA の目的は、分散ソフトウェア アプリケーションをビルドおよび統合するオブジェクト指向の手法を促進することです。
CORBA 仕様では、分散アプリケーションをビルドするためのオープンで一貫性のあるモデルが提供されます。そのために、CORBA 仕様では次の事項が定義されています。
CORBA 仕様では、CORBA の実装を開発する方法が説明されています。また、アプリケーションの開発で使用するプログラミング言語のバインディングも記述されています。
CORBA アーキテクチャを使用する利点を説明するために、この節では初期のクライアント/サーバ アプリケーション開発手法と CORBA の開発手法を比較します。
クライアント/サーバ コンピューティングは、ネットワーク接続された複数のマシンで処理を分散し、マシンのリソースをより効率的に利用できるようにするアプリケーション開発方法です。クライアント/サーバ コンピューティングのアプリケーションは、クライアント アプリケーションとサーバ アプリケーションの 2 つのパートで構成されます。通常、それらの 2 つのアプリケーションは、次の図で示されているようにネットワークで接続された異なるマシンで動作します。

クライアント アプリケーションは情報またはサービスを要求し、通常は結果を表示する手段をユーザに提供します。サーバ アプリケーションは、1 つまたは複数のクライアント アプリケーションの要求を満たし、通常は計算集中型の機能を実行します。
たとえば、デスクトップ システムは、情報を表示するための使いやすいグラフィカルな環境を多くのビジネス ユーザに提供します。しかし、デスクトップ システムはディスク領域とメモリが制限される場合があり、シングル ユーザ システムであるのが普通です。より大きく、より強力なマシン システムの方が、計算集中型の機能を実行し、マルチ ユーザ アクセスと共有データベース アクセスを実現するには適しています。
したがって、通常はより規模の大きいシステムでアプリケーションのサーバ部分が実行されます。このようにして、分散したデスクトップ システムとネットワーク接続されたサーバにより、分散クライアント/サーバ アプリケーションをデプロイする完璧なコンピューティング環境が実現されます。
CORBA 以外のクライアント/サーバ手法でも異機種間ネットワークで処理を分散する手段が提供されますが、その手法には次の欠点があります。
クライアント/サーバ アプリケーションでは、1 つのネットワーク プロトコルを使用する場合と、複数の異なるプロトコルを使用する場合があります。複数のプロトコルが使用される場合、アプリケーションではネットワークごとにプロトコル固有のコードを論理的に反復しなければなりません。
たとえば、一部のマシンでは整数値が最下位バイト アドレスから最上位へ向かって読み取られ (リトル エンディアン)、ほかのマシンでは逆に最上位バイトから読み取られます (ビッグ エンディアン)。また、一部のマシン システムでは、浮動小数点数またはテキスト文字列で異なる形式が使用される場合もあります。アプリケーションから異なるデータ形式が使用されるマシンにデータが送信される場合で、そのアプリケーションによってデータが変換されないときには、データは間違って解釈されます。
ネットワーク経由でデータを転送し、そのデータをターゲット システムの適切な表現に変換することを、データ マーシャリングと呼びます。多くの非 CORBA クライアント/サーバ モデルでは、アプリケーションですべてのデータ マーシャリングを実行しなければなりません。データ マーシャリングでは、アプリケーションでネットワークとオペレーティング システムの機能を利用してデータをマシン間で移動する必要があります。また、データ形式の変換を実行して、送信時と同じようにデータが読み取られるようにすることも必要です。
CORBA 以外のクライアント/サーバ手法では、クライアント アプリケーションとサーバ アプリケーションが強く結び付けられます。したがって、クライアント アプリケーションかサーバ アプリケーションで変更があった場合には、プログラマはインタフェース、ネットワーク アドレス、およびネットワーク トランスポートを変更する必要があります。また、クライアント アプリケーションとサーバ アプリケーションを別のネットワーク インタフェースをサポートするマシンに移植する場合、プログラマはそれらのアプリケーションの新しいネットワーク インタフェースを作成しなければなりません。
CORBA モデルでは、分散アプリケーションをもっと柔軟に開発することができます。
CORBA クライアント アプリケーションでは処理を要求する方法のみが理解され、CORBA サーバ アプリケーションではクライアントから要求されたタスクを遂行する方法のみが理解されています。このような分離のおかげで、クライアント アプリケーションがサーバ アプリケーションにタスクの遂行を要求する方法に影響を与えることなく、サーバでタスクを遂行する方法を変更できます。
CORBA は、分散オブジェクト コンピューティング モデルに基づいています。このモデルでは、分散コンピューティング (クライアントとサーバ) の概念とオブジェクト指向コンピューティング (オブジェクトとオペレーションをベースとする) の概念が結合されます。
オブジェクト指向コンピューティングにおいて、オブジェクトはアプリケーションを構成するエンティティであり、オペレーションはそれらのオブジェクトでサーバが実行できるタスクです。たとえば銀行業務アプリケーションでは、顧客口座のオブジェクトと、預け入れ、引き出し、および残高照会のオペレーションを利用できます。
たとえば、CORBA モデルでは必要に応じてビッグ エンディアンまたはリトル エンディアン用に自動的に形式変換が行われます。データ マーシャリングの説明については、前節を参照してください。
CORBA モデルではすべてのネットワーク インタフェースが処理されます。アプリケーションで認識されるのはオブジェクトだけです。アプリケーションは複数の異なるマシンで動作できます。その理由は、すべてのネットワーク インタフェース コードが ORB によって処理され、異なるネットワーク プロトコルをサポートするマシンに後からデプロイされる場合でもアプリケーションではネットワーク関連のどのような変更も必要としないからです。
CORBA モデルのクライアント アプリケーションでは、情報の供給源やその位置について直接知らなくても、サーバ アプリケーションに要求を送信して応答を受信することができます。CORBA 環境では、通信のためのネットワークやオペレーティング システムの情報はアプリケーションで必要としません。代わりに、クライアント アプリケーションとサーバ アプリケーションはオブジェクト リクエスト ブローカ (ORB) と通信します。次の図は、クライアント/サーバ環境の ORB を示しています。

CORBA では、クライアント アプリケーションとサーバ アプリケーションの媒介として ORB が定義されています。ORB では、クライアントの要求が適切なサーバ アプリケーションに転送され、サーバの応答が要求元のクライアント アプリケーションに返されます。ORB を使用することで、クライアント アプリケーションではサーバ アプリケーションの位置またはサーバが要求を満たす方法を知らなくてもサービスを要求できます。
CORBA モデルのクライアント アプリケーションでは、どのような要求が可能なのか、およびどのように要求を行うことができるのかを知っているだけで十分です。サーバまたはデータ形式の細かな実装は必要ありません。サーバ アプリケーションは、要求を満たすことができれば十分です。クライアント アプリケーションにデータを返す方法について知っている必要はありません。
つまり、プログラマは、クライアント アプリケーションがサーバ アプリケーションにタスクの遂行を要求する方法に影響を与えることなく、サーバでタスクを遂行する方法を変更できます。たとえば、クライアント アプリケーションとサーバ アプリケーションのインタフェースが変更されない限り、クライアント アプリケーションに変更を加えることなくサーバ アプリケーションの実装を拡張したり、新しい実装を開発したりできます。また、サーバ アプリケーションはそのままに新しいクライアント アプリケーションを作成することも可能です。
|