CORBA 技術情報

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

Process-Entity デザイン パターン

ここでは、以下の内容について説明します。

 


Process-Entity デザイン パターンについて

Process-Entity デザイン パターンは、データベース レコード (エンティティ) とのクライアント アプリケーションのすべてのやり取りをサーバ マシン上の単一プロセス オブジェクトで処理する設計ソリューションです。このデザイン パターンは、クライアントの CORBA または EJB アプリケーションでリモート データベースとの複数のやり取りが普通に実行される状況で効果的です。

データベースの細かなすべてのデータを表すサーバ マシン上の単一の CORBA オブジェクトまたは EJB を設計することで、次のような性能上の利点をもたらす Oracle Tuxedo CORBA クライアント/サーバ アプリケーションを構築できます。

 


スケーラビリティとリソース利用率の向上

ここでは、以下の内容について説明します。

2 層システムの制限

データベース層を共有データのセットとして提供する従来の 2 層システムにおいて、純粋なオブジェクト指向手法とは、データベース レコードを共有 CORBA オブジェクト (CORBA アプリケーションの場合) またはエンティティ Bean (EJB アプリケーションの場合) として表現することです。ただし、この手法には次のような制限があります。

Process-Entity デザイン パターンの利点

しかし、クライアントの代わりにデータベースとやり取りするサーバ マシン上のプロセス オブジェクトのクラスを設計すれば、次のような利点によって上記の制限を克服できます。

 


適用可能性

ここでは、以下の内容について説明します。

Process-Entity デザイン パターンは、エンタープライズ レベルのミッション クリティカルなアプリケーションでほぼ普遍的に適用できます。このデザイン パターンは、クライアント アプリケーションがサーバ マシン上のデータベース レコードとやり取りする必要のある状況で使用します。

CORBA アプリケーションでの要求の流れ

図 3-1 は、CORBA アプリケーションの Process-Entity デザイン パターンの基本設計を示しています。

図 3-1 CORBA の Process-Entity デザイン パターン

CORBA の Process-Entity デザイン パターン

このプロセスは、次の順序で行われます。

  1. クライアント アプリケーションから、データベース エンティティにアクセスするために CORBA プロセス オブジェクトに要求が発行されます。
  2. CORBA オブジェクトからデータベースに要求が送信されます。
  3. データベースから CORBA オブジェクトに応答が返されます。
  4. CORBA オブジェクトからクライアントに応答が返されます。応答に含まれているのは、クライアントが必要とするデータベースの情報のみです。

EJB アプリケーションでの要求の流れ

図 3-2 は、EJB アプリケーションの Process-Entity デザイン パターンの基本設計を示しています。

図 3-2 EJB の Process-Entity デザイン パターン

EJB の Process-Entity デザイン パターン

このプロセスは、次の順序で行われます。

  1. クライアント アプリケーションから、データベース エンティティにアクセスするために RMI over IIOP を使用してエンティティ Bean に要求が発行されます。
  2. エンティティ Bean からデータベースに要求が送信されます。
  3. データベースからエンティティ Bean に応答が返されます。
  4. エンティティ Bean からクライアントに応答が返されます。応答に含まれているのは、クライアントが必要とするデータベースの情報のみです。

 


構成要素

クライアント アプリケーションでは、ファクトリ (CORBA アプリケーションの場合) またはホーム インタフェース (EJB アプリケーションの場合) からプロセス オブジェクトの参照を取得します。プロセス オブジェクトでは、データベースとのすべてのやり取りが実装されます。データベース レコード (エンティティ) は、プロセス オブジェクトのクライアント呼び出しを処理するために必要なときに取り出されます。プロセス オブジェクトのオペレーションでは、特定のデータ フィールドがクライアント アプリケーションに返されます。クライアント アプリケーションでは、そのデータで必要なすべての処理を実行します。

 


留意事項

プロセス オブジェクトは、特定のクライアント要求で実際に必要とされる最小限の情報を渡すように設計します。プロセス オブジェクトのオペレーションは、可能な限り「密度の高い」処理が実行されるように実装します。クライアント アプリケーションは、タスクを遂行するために必要なデータの取得に複数のプロセス オペレーションを呼び出さないように設計します。

複数のオペレーションを呼び出す必要がある場合は、追加の呼び出しがクライアント アプリケーションからプロセス オブジェクトにではなく、プロセス オブジェクトからデータベースに対して行われるようにプロセス オブジェクトを設計してください。そのように設計することで、クライアント アプリケーションからネットワーク経由で送信される呼び出しの数が減ります。クライアント アプリケーションからプロセス オブジェクトに連続的に呼び出しを行わなければならない場合は、プロセス オブジェクトをステートフルにしてください。オブジェクトをステートフルにする方法については、Oracle Tuxedo オンライン マニュアルの『Tuxedo CORBA サーバ アプリケーションの開発方法』を参照してください。

CORBA アプリケーションでは、OMG IDL で属性を使用しないでください。属性は、ネットワーク経由で取り出すのにコストがかかります。代わりに、クライアント アプリケーションで必要となりそうなすべての値を格納するデータ構造を返すオペレーションをプロセス オブジェクトで実装します。

 


関連する概念


  ページの先頭       前  次