1. CORBA概要
CORBA 1章 CORBA概要
1.1 CORBAのアーキテクチャCORBA(Common Object Request Broaker Architecture)とは、ネットワーク上の分散環境でのオブジェクト間通信をサポートするためのミドルウェア基盤技術です。CORBAはOMGという標準化機構によって標準化が行われています。同じような分散オブジェクト環境向けのフレームワークにはDCOMやJava RMIなどが存在しますが、これらは特定の環境やプログラミング言語でしか動作しません。それに対してCORBAは環境や言語に依存しないオープンな仕様であり、複数の環境や言語の混在した分散アプリケーションを構築することができます。また、CORBAにはアプリケーションから利用可能なサービスが豊富に用意されており、高機能な分散アプリケーション開発を容易なものにしてくれます。 1.1.1 CORBAの構成要素CORBAの構成はオブジェクト管理アーキテクチャ(OMA)によって定義されています。OMAの構成を図に示します。 図1:オブジェクト管理アーキテクチャ(OMA) CORBAの主要な構成要素は次の5つです。ここで、それぞれの機能や役割を簡単に説明します。
1.1.2 ORB (Object Request Broker)ORBはクライアントオブジェクトとサーバオブジェクトとの間のメッセージ通信を仲介するオブジェクトバスです。クライアントオブジェクトやサーバオブジェクトはあらゆるメッセージ通信はORBを通してのみ行われます。したがってオブジェクトは直接的にはORBとしか通信しません。 ORBを介した通信の特徴のひとつに、オブジェクトの位置透過性があります。 オブジェクトの位置透過性とは、あるオブジェクトが他のオブジェクトにメッセージを送信する際、相手オブジェクトがローカルマシンに存在するかリモートのマシンに存在するかを全く意識することなく通信が可能であることをいいます。すべての通信はORBを介しているため、クライアントからサーバへの要求はまずクライアントマシン上のORBに対して行われます。そしてそのORBは、もしサーバオブジェクトがローカルマシンに存在すれば直接そのオブジェクトに要求を送り、リモートのマシン上に存在していればそのリモートマシン上のORBに対して要求を送ります。ここで、異なるマシンのORB間で通信を行うためにはGIOP(General Inter-Orb Protocol)やIIOP(Internet Inter-Orb Protocol)等のプロトコルが用いられます。 図2:オブジェクトの位置透過性 ORBのもう一つの特徴として、オブジェクト実装言語に対する独立性があります。 CORBAオブジェクトは、実装と定義(インタフェース)がまったく分離しています。インタフェースはIDL(Interface Definition Language)と呼ばれる独自のインタフェース記述言語によって記述され、オブジェクトの実装は完全に外部から隠蔽されます。そのため、オブジェクトがどのようなプログラム言語で実装されていたとしても、その言語とIDLとのマッピングが定義されている限り、一様にCORBAオブジェクトとして扱うことが可能となります。 CORBAオブジェクト間で通信するとき、それぞれの実装言語が異なっていれば、当然データの型式も異なります。このデータ形式の違いはORBによって吸収されます。CORBAオブジェクトからORBにデータが送られるとき、ORBは言語固有のデータ形式をCORBAの規格で定義された共通のデータ形式に変換します。ORBからCORBAオブジェクトにデータが送られるとき、逆に共通データ形式から言語固有の形式に変換します。したがってORB間の通信は常に共通のデータ形式で行われます。言語固有の形式から共通形式への変換をマーシャリング(Marshaling)、共通形式から言語固有形式への変換をアンマーシャリング(Unmarshaling)といいます。 図3:マーシャリング/アンマーシャリング 現在OMGにおいてIDLとのマッピングが定義されている言語は、C/C++/Ada/Smalltalk/COBOL/Java です。これ以外にもCORBA製品ベンダによって独自のマッピングが定義されているものもあります。このようなさまざまな言語で記述されたオブジェクトはすべてCORBAによる分散アプリケーションに組み込むことができます。つまり、これまでのソフトウェアの資産を有効に利用できるいう利点があるのです。この言語非依存性はCORBA最大の利点のひとつです。 図4:CORBAオブジェクトの言語独立性 1.1.3 CORBAサービス(共通オブジェクトサービス)CORBAサービスはCORBA上でオブジェクトを扱うためのシステムレベルのサービスの集合です。オブジェクトの検索や、オブジェクトの作成・コピーなど、ORBの機能を拡張・補完する機能を持っています。これらのサービスはIDLで規定されたインタフェースを持っており、通常のCORBAオブジェクトと同様にアクセスすることができます。 共通オブジェクトサービスには以下のようなものが規格で定義されています。CORBA製品は、これらすべてのサービスを実装していなければいけないわけではありませんが、ネーミングサービス等、良く使われるサービスはほとんどの製品に実装されています。
1.1.4 CORBAファシリティ(共通ファシリティ)CORBAファシリティはIDLで記述されたフレームワークの集合です。アプリケーションオブジェクトはCORBAファシリティの提供するサービスを直接利用することができます。CORBAサービスサービスはオブジェクトそのものの操作に関するものであったのに対して、CORBAファシリティは、たとえば印刷機能など、より抽象度の高いサービスを提供します。CORBAファシリティは、比較的汎用的に利用できる水平型フレームワークと、ある分野に特化した垂直型フレームワークに分類されます。垂直型フレームワークのほうがより上位レイヤに位置すると考えられます。 図5:CORBA構成要素の階層構造 1.1.5 ドメインインターフェースドメインインタフェースは産業分野別に仕様化が行われているフレームワークです。産業分野別にビジネスオブジェクトを検討するグループが存在しており、そこで仕様化が進められています。以下に現存するグループの一部を表に示します。実際にそれぞれのグループで仕様化されたフレームワークを用いて多数のアプリケーションが開発されています。
1.1.6 アプリケーションオブジェクトアプリケーション作成者のプログラムにより生成されるオブジェクトです。他のCORBA構成要素と連携して分散アプリケーションを構築することができます。 |
![]()
![]()
|