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

更新日:

用語解説

CORBAにおけるリクエストとアプリケーションオブジェクトは、クライアントがオブジェクト参照で対象の操作を要求するリクエストと、その要求を受けて業務固有の処理を実行するApplication Objectという二つの概念です。「リクエストアプリケーションオブジェクト」という一種類の標準部品ではなく、ORBを介した呼出しの流れとして理解します。

■ 試験で押さえるポイント

  • リクエストは対象オブジェクト、呼び出す操作、入力引数、呼出しコンテキスト等から成り、正常なら戻り値・出力引数、失敗なら例外が返ります。単なるネットワークパケット一個ではなく、遠隔操作呼出しの論理単位です。

  • Application Objectは受注、在庫照会、料金計算等の個別アプリケーションに固有の振る舞いを実装します。OMA階層の最上位に位置し、一般にその業務インタフェース自体はOMGの共通仕様として標準化されません。

  • クライアントはNaming Service等でオブジェクト参照を取得し、IDLから生成されたstub等を通じて操作を呼びます。ORBが引数を共通表現へmarshalし、必要ならIIOP等でサーバ側ORBへ伝えます。

  • サーバ側ではPOA等が参照と実装体servantを対応付け、対象操作をdispatchします。オブジェクト参照、IDL上のCORBA object及び実際に処理するservant/プログラムを同一視しません。

  • IDLは言語に中立な操作名、型、引数及び例外を定義し、各言語へのmappingでstub・skeleton等を生成します。これによりクライアントとサーバのOS・実装言語が異なっても契約に基づいて呼び出せます。

  • ORBは要求の仲介と透過性を提供し、Application Objectは業務ロジックを提供します。Naming、Transaction等のObject Servicesは呼出し先発見や共通処理を補助するため、三者の役割を分けます。

  • 遠隔呼出しでは遅延、部分障害、タイムアウト及び結果不明が起こります。再試行で業務処理を二重実行しないよう、冪等性、要求ID、トランザクション境界及び例外処理を設計します。

■ 過去問での着眼点

リクエストはクライアントから対象操作への要求、Application Objectはその業務固有処理を実装するオブジェクトで、ORBが両者を仲介します。IDL、stub、ORB、POA/servant、Object Services及びApplication Objectを呼出し経路に沿って区別します。「リクエスト」と「アプリケーションオブジェクト」は別概念であり、前者が要求、後者が業務処理の主体です。

例: 在庫クライアントがInventoryオブジェクト参照のcheckStock操作を呼ぶと、ORBが商品IDをmarshalしてサーバへ送り、servantが在庫ロジックを実行して結果を返します。ORBは在庫計算そのものを行いません。

音声で聞く

同じ分野の用語