Webアプリ開発エンジニアのための技術情報サイト「テックスコア」

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)
オブジェクト管理アーキテクチャ(OMA)

 CORBAの主要な構成要素は次の5つです。ここで、それぞれの機能や役割を簡単に説明します。

  • ORB
  • CORBAサービス(共通オブジェクトサービス)
  • CORBAファシリティ(共通ファシリティ)
  • ドメインインタフェース
  • アプリケーションオブジェクト
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

 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製品は、これらすべてのサービスを実装していなければいけないわけではありませんが、ネーミングサービス等、良く使われるサービスはほとんどの製品に実装されています。

サービス名 機能
ライフサイクルサービス

バス上でオブジェクトの作成・コピー・移動・削除を行うための操作を提供するサービス

ネーミングサービス

バス上のオブジェクトが他のオブジェクトを名前で見つけ出すことを可能にするサービス

パーシステントオブジェクトサービス
オブジェクトをデータベースやファイルに格納する(永続化)するための特定のインタフェースを提供するサービス
イベントサービス

バス上のオブジェクトによる特定のイベントへの関与を動的に登録したり破棄したりするサービス

トランザクションサービス
トランザクションを利用するオブジェクトに対して2相コミットを提供するサービス
並行性制御サービス
トランザクションやスレッドに代わってロックを入手するサービス
リレーションシップサービス

オブジェクト同士に動的に関係を持たせることを可能にするサービス

外部化サービス
オブジェクトが保有するデータをストリームなどを利用し外部に対して入出力するための方法を提供するサービス
セキュリティサービス
分散オブジェクトのセキュリティのためのフレームワークを提供するサービス
タイムサービス
分散オブジェクト環境において時間の同期を取るためのインタフェースを提供するサービス
クエリサービス
オブジェクトに対する問い合わせを提供するサービス
ライセンシングサービス
オブジェクトの利用料を計測するための機能を提供するサービス
プロパティサービス
名前つきの値をオブジェクトに対応付ける操作を提供するサービス
トレーダサービス
オブジェクトをサービスの種類によって登録や検索するサービス
コレクションサービス
分散環境で共通に用いられるコレクションを作成したり操作したりするためのインタフェースを提供するサービス
ノーティフィケーションサービス
イベントサービス機能に加えて、フィルタリング等の機能を提供するサービス

 

1.1.4 CORBAファシリティ(共通ファシリティ)

 CORBAファシリティはIDLで記述されたフレームワークの集合です。アプリケーションオブジェクトはCORBAファシリティの提供するサービスを直接利用することができます。CORBAサービスサービスはオブジェクトそのものの操作に関するものであったのに対して、CORBAファシリティは、たとえば印刷機能など、より抽象度の高いサービスを提供します。CORBAファシリティは、比較的汎用的に利用できる水平型フレームワークと、ある分野に特化した垂直型フレームワークに分類されます。垂直型フレームワークのほうがより上位レイヤに位置すると考えられます。

図5:CORBA構成要素の階層構造

1.1.5 ドメインインターフェース

 ドメインインタフェースは産業分野別に仕様化が行われているフレームワークです。産業分野別にビジネスオブジェクトを検討するグループが存在しており、そこで仕様化が進められています。以下に現存するグループの一部を表に示します。実際にそれぞれのグループで仕様化されたフレームワークを用いて多数のアプリケーションが開発されています。

グループ 説明
Electoronic Commerce Domain Task Force

電子商取引に関するサービスを検討するために設立され、認証や決済などの機能の標準化を行っています。

Financial Domein Task Force

金融関係のサービスを検討するために設立され、通貨の定義や管理を行うサービス、会計システムや保険業務向けのサービスの標準化を行っています。

Manufacturing Task Force 製造分野で開発から製品化、リサイクルといった製品のライフサイクル全体に関連する機能が検討されています。
Telecommunication Domain Task Force

通信分野の機能の標準化を行っています。

CORBAmed Task Force 医療分野の機能の標準化を行っています。
Transportation Domain Task Force 旅行に関する機能の標準化を行っています。
Distributed Simulation SIG

分散シミュレーションに関する機能の標準化を行っています。

1.1.6 アプリケーションオブジェクト

 アプリケーション作成者のプログラムにより生成されるオブジェクトです。他のCORBA構成要素と連携して分散アプリケーションを構築することができます。



  TECHSCOREのTOPページへ 次のページへ
techscore(トップページへ)
TECHSCORE書店
TECHSCOREトップページJavaSQLXMLリッチクライアントモデリングセマンティックWebその他技術Tuigwaa