CORBAテクニカル・アーティクル

     前  次    新規ウィンドウで目次を開く  新規ウィンドウで索引を開く  PDFとして表示 - 新規ウィンドウ  Adobe Readerを入手 - 新規ウィンドウ
コンテンツはここから始まります

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 on IIOPを使用してエンティティBeanにリクエストが発行されます。
  2. エンティティBeanからデータベースにリクエストが送信されます。
  3. データベースからエンティティBeanにレスポンスが返されます。
  4. エンティティBeanからクライアントにレスポンスが返されます。レスポンスに含まれているのは、クライアントが必要とするデータベースの情報のみです。

 


構成要素

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

 


留意事項

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

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

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

 


関連する概念


  先頭に戻る       前  次