オブジェクト・サービス 

分散システムに対応したアプリケーションを開発するためには、複数のアプリケーションやデータとの間で連携するための通信機能が必要となる。

ORBはこれらの通信の連携のために、各オブジェクトに対するサービス機能を持っているので、アプリケーション開発者がこれを利用することで開発作業が容易になる。

主なサービスは、以下のようなものである。


Naming Service

オブジェクトを名前で管理するためのサービスである。

オブジェクトの実体を指すIDと、名前、タイプをレコードに持つデータベース(Object Context)である。

このサービスは、次のオペレーションを用いてオブジェクトの検索、登録、削除などをおこなう。

  • オブジェクトの登録:bind( )
  • オブジェクトの検索:resolve( )
  • オブジェクトの削除:unbind( )

データベースは、階層化して名前管理をすることができる。


Event Service

オブジェクト間で非同期に通信を行うためのサービスである。

クライアントがこのサービスを利用するときは、オブジェクト間の通信を制御するEvent Channelを生成し、これを経由して相手のオブジェクトがデータを受信する。

  • EventChannelにデータを送る:push( )
  • EventChannelからデータを受け取る:pull( )


Lifesycle Service

オブジェクトを新しく定義するとき、そのオブジェクトを生成するためのサービスである。

オブジェクトの生成、削除、複製、移動などの機能がある。


Persistent Object Service

ファイルやデータベースの入出力を行うためのサービスである。

このサービスでは、ファイルやデータベースを管理するPDS(Persistent Data Service)を利用することによって、ファイル固有のインターフェースの違いを吸収する。

また、ファイルやデータベースに書き込んだデータの位置を、PID(Persistent Object Manager)に保存しておき、クライアントにデータの位置を回答する。

  • PDSと接続する:connect( )
  • PDSとの接続を切る:disconnect( )


Query Service

RDBやODBなどのデータベースの検索処理を行うサービスである。

このサービスには、結果が帰ってくるまで待ち状態になる同期型と、結果を待たないで次の処理を継続する非同期型がある。

データの検索はQuery言語によって行う。標準として、OQL-93Basic、OQL-92をサポートしている。

  • 同期型で検索する:evaluate( )
  • 非同期型で検索する:execute( )


Transaction Service

トランザクション処理を実行するためのサービスである。

処理が成功したか失敗しかのどちらかを決定し、異常終了のときはデータを実行前の状態に戻す。

  • 処理の開始:begin( )
  • 処理の正常終了を行う:commit( )
  • 処理を取り消す:rollback( )
  • 取消可能のマークを付ける:rollback_only( )
  • 状況を調べる:get_status( )
  • トランザクション名を返す:get_transaction_name( )
  • 時間を制限する:set_timeout( )

ご意見、ご感想は臼井までお願いします。mailto:yosimi-u@is.aist-nara.ac.jp