JP2000517453A - 分散型オブジェクト指向計算用システム開発ツール - Google Patents

分散型オブジェクト指向計算用システム開発ツール

Info

Publication number
JP2000517453A
JP2000517453A JP11503411A JP50341199A JP2000517453A JP 2000517453 A JP2000517453 A JP 2000517453A JP 11503411 A JP11503411 A JP 11503411A JP 50341199 A JP50341199 A JP 50341199A JP 2000517453 A JP2000517453 A JP 2000517453A
Authority
JP
Japan
Prior art keywords
service
objects
client
server
services
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP11503411A
Other languages
English (en)
Inventor
アンドリュー アルバート ザンダー
イアン アレクサンダー ローズ
Original Assignee
シトル プロプライエタリー リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from AUPO7401A external-priority patent/AUPO740197A0/en
Priority claimed from AUPO9988A external-priority patent/AUPO998897A0/en
Application filed by シトル プロプライエタリー リミテッド filed Critical シトル プロプライエタリー リミテッド
Publication of JP2000517453A publication Critical patent/JP2000517453A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)

Abstract

(57)【要約】 一般的には複数のクライアント(26)と、複数のサーバー(29)と、クライアントのサービスに関する要求をサーバーへ通信するための分散型オブジェクトインフラストラクチャ(25)とを含む大規模分散型オブジェクト指向(LSDOO)コンピューターシステムを造るための開発ツールである。本開発ツールは、予め定められたオブジェクト設計パターンを提供する一連のテンプレート(12)と、コード発生器(15)と、好ましくは基本的な分散型サービス(21)とを含む。コード発生器(15)は、クライアントプロセス(32)により要求されるような所望のサーバープロセス(33)を定義するため、及び設計パターンの中から選択されたものを組み込むためにユーザーにより作り出されたオブジェクト指向システムモデル(11)から、分散型オブジェクトインフラストラクチャ(25)からクライアントアプリケーションコードを分離するための、各クライアントプロセス用クライアントアクセスレイヤー(27)と、分散型オブジェクトインフラストラクチャ(25)からサーバーアプリケーションコードを分離させるための、各サーバープロセス用サーバーアクセスレイヤー(28)と、ユーザーがサーバーセマンティックスのインプリメンテョンを統合するための規則を含む、各サービスを実行するためのサーバーアプリケーションコードのスタブ部(29)とを生成するために配置されている。基本分散型サービスのセットは、システム内でファイルを複製するためのファイル複製サービス(30)及びシステム内で利用可能なサービスの検索のためのサービスファインダーサービス(31)を含んでいてもよい。

Description

【発明の詳細な説明】 分散型オブジェクト指向計算用システム開発ツール 発明の属する技術分野 本発明は分散型オブジェクト指向計算システム、特に、大規模分散型オブジェ クト指向システム(LSDOO)に関する。このようなシステムは多くの機器、 特に、ある種のビジネス機能を自律的に遂行するために協働する、コンピュータ ーネットワーク上にリンクされた機器に関係するオブジェクトを有している。予 想されるシステムのサイズのガイドラインは、典型的には、数百万乃至数億オブ ジェクト、100乃至1000人のユーザー、約100乃至1000の機器で毎 秒合計1000乃至50000回の演算をする。 発明の背景 分散型オブジェクト指向(OO)技術は、コンピューターネットワーク上に搭 載するアプリケーションの開発者に、彼らのアプリケーションを展開する際に多 くの利用できる可能性のある利点を提供する。オブジェクト指向技術は、その中 で複雑さと変化とを管理する、制御された環境を提供する。分散型計算を使用す れば、アプリケーションは、一方で万一ネットワークの一部が損傷を受けた場合 でも回復力に優れた環境を提供しながら、広範な地理的領域に亘って作動するこ とができる。 概括すれば、LSDOOシステムは、(世界企業システムに迫る上端を持つ) 10のファクターで評価できる、最小のコストで受容できる信頼性を提供し、他 のビジネスクリティカルシステムとの標準化された対話を支援し、単にデータの 記憶に役立つだけでなくオペレーションを効率的に支援する。 オブジェクト管理グループ会社(OMG)、ソフトウェアベンダーのコンソーシ アム、エンドユーザーにより開発されたこのようなシステムを構築するための既 知の標準の例は、コモン・オブジェクト・リクエスト・ブローカー・アーキテク チュア(CORBA)である。CORBAオブジェクト・リクエスト・ブロー カー(ORB)は、異種の言語で実行でき且つ異なる機器により異質の環境で実 行できる、オブジェクト間での相互作動性を提供するためのアプリケーション・ フレームワークである。CORBAは、オブジェクトがフレームワーク内では目 に見えないで要求し、答えを受け取ることができるようにする、非常に柔軟なア ーキテクチュアである。CORBA2.0/IIOP仕様、CORBAサービス 仕様、及び他の関連仕様などの参考文献がOMGから発行されている。 CORBA及び同様なDOOのアーキテクチュアは広範なアプリケーションを 持っており複雑なので、大きなシステムの開発には高いコストがかかる。このコ ストは、先ず非常に長い仕様をそのアーキテクチュアに適合させる問題から発生 して、特定のタスクを処理する際に複数の可能な選択肢を複数提供し、又次は、 その選択のどの組み合わせが広範な設計要件に対し最適解を提供するかを特定す る問題から発生する。 更に、分散型オブジェクト指向技術の利点を実現することは、多くの開発者と 共に以下のような処理すべき関心事へ挑戦することである。 ・スケーラビリティ − 数十の機器及び一千万までのCORBAオブジェクト に至るシステムをいかに構築するか。 ・性能 − 満足できる性能のシステムをいかに構築するか。 ・故障許容限界 − 毎週7日24時間の可用性をいかに達成するか。 ・持続性 − オブジェクトの状態を高性能分散型環境にいかに効率的且つ安全 に維持するか。 ・管理 − 非集中型コンピューターシステムをいかに管理するか。 ・実行 − ソフトウェアの高度再使用を許容しながら、開発、試験、リスクを いかに包含するか。 IBM名義の欧州特許EP727739号は、オブジェクト指向言語で書かれ たネットワーク管理アプリケーションプログラムをネットワーク通信プロトコル に変換するためのプログラミング・インタフェースを開示している。オブジェク ト・ダイナミックス社名義の国際特許公告WO97/22925号は、ソフトウ ェアのコンポーネント及びシステムを、現存のオブジェクトモデルと互換性があ り且つそれらを拡張する独立した構成部品から組み立てることにより設計及び構 築するためのシステムを開示している。ガーロフ他名義の米国特許第56993 10号は、オブジェクト指向管理技術が、ユーザーの入力した仕様からソースコ ードを生成するためのコード発生器と共に使用されているコンピューターシステ ムを開示している。しかし、これら初期の開示は、以下に述べるパワーと柔軟性 を提供する設計パターンに特徴付けられるLSDOOシステムを構築するための 開発ツールならびに方法を述べてはいない。用語解説 特に指定がないか又は使用されている文脈から明らかな場合を除き、以下の用 語は添付説明の意味に用いる。 「属性」 ゲット及び(通常は)セット・オペレーションにより表に出される Nステートデータ。 「同報通信デレゲーション」 全コンフェデレーツに対するデレゲーション。 「大容量オペレーション」 多数(又は全ての)オブジェクトのNステートに アクセスするオペレーション。 「クライアント」 1つ又はそれ以上のサービスへのアクセスを要求するアプ リケーション。 「クラスタ」 クラスタ状に構成された機器から成る、対等クラスタ分散モデ ル。クラスタは互いに対等者として協働し、クラスタ内の機器は特殊化され る。 「集合」 あるコモナリティを有するメンバーのセット、好ましくは順序付け されていないオブジェクトのセット、を参照するオブジェクト。 「コンフェデレーツ」 フェデレーションを構成する集合。 「CORBAオブジェクト」 それに対しクライアントがCORBAオブジェ クト・リファランスを取得するオブジェクト。 「COSS」 通常のオブジェクトサービス。 「デレゲーション」 オペレーションを実行するためのもうひとつのオブジェ クトを含む1つのオブジェクト。 「設計パターン」 システム設計の中で生じるLSDOOの問題点に取り組む ための設計解。 「指定デレゲーション」 コンフェデレーツの識別されたサブセットに対する デレゲーション。 「分散モデル」は、システムを実行するために機器及びデータリンクをどのよ うに物理的に組織するかを述べる。 「明示的グループ」 グループオペレーションであり、そこではメンバーがア イデンティティによってリストされている。 「ファクトリー」 他のオブジェクトを造るオブジェクト。 「フェデレーション」 より早く、安く、信頼性の高いサービスを提供するた めに協働する集合のセット。 「フレンド」 オブジェクト同士がIステートを共有しているが独立したNス テートを持っているように見える関係。 「ゲートウェイ」 非CORBA環境のCORBA表現。 「ジェネリック・インタフェース」 特定インタフェース間に存在する、根本 問題ドメインコモナリティを識別するインタフェース。 「優雅故障」 コンポーネントの故障に対して、故障の影響を直接には被らな いオペレーションを実行し続けることによって対応するシステム。 「グループオペレーション」 1つの基本的オペレーションが多数のオブジェ クトに適用されるオペレーション。 「アイデンティティ」 オブジェクトと不変の1対1の関係を有するNステー トデータ。 「暗示的グループ」 メンバーが探索述語によって定義されるグループオペレ ーション。 「Iステート」 オブジェクトの実行によって記憶される状態。 「ライフサイクル」 オブジェクトを作成、コピー、再配置、破壊するプロセ ス。 「LSDOO」 大規模分散型オブジェクト指向であり、典型的には、あるビ ジネスファンクションを自律的に実行するために協働する多くの機器上にオ ブジェクトを有するシステム。 「メンバー」 集合により参照されるオブジェクト。 「自然集合」 システムの機能性を支援するのに必要な集合。 「正規化オブジェクト」 下記事項全てが真の場合オブジェクトは正規化され る。 i) オブジェクトの状態が他のオブジェクトと重複しない。 ii) オブジェクトのセマンティクスがそのオブジェクトのみに よって定義され、実行される。 iii)そのインタフェースが、全ての状態にアクセスし、それを オブジェクトのセマンティクスと矛盾しない何らかの方法 で変更するのに丁度十分である。 「正規化システム」 システム内の全オブジェクトが正規化されると、システ ムは正規化される。 「Nステート」 正規化された状態であり、オブジェクトが正しい挙動を表示 するのに必要なステートの量が最小である。 「オブジェクト」 オブジェクトのOOコンセプト、即ち、アイデンティティ を有し、定義されたインタフェースを通してアクセスされる状態(Nステー ト)のアトム。オブジェクトはLSDOOシステムの基本的なコンポーネン トであり、(プリンターのような)ハードウェア装置であってもよいし、( プリントマネジャーのような)ソフトウェア・アプリケーションでもよい。 「オブジェクト・リファランス」 オブジェクトに対し不変の多数対1の関係 を有する、オブジェクトに対するポインター。 「OOPL」 オブジェクト指向プログラミング言語。 「パーティション」 オブジェクトの物理的グループであり、そこでは各オブ ジェクトが正確に一つのパーティションと関係している。一般的に、パーテ ィションと計算ハードウェアのセットとの間には1対1の対応関係がある。 「性能集合」 グループオペレーションの効率的実行を提供することによって システム性能を改善する集合。 「レプリカ」 複製されたオブジェクトのIステート複製の一つ。 「複製」 いくつかの物理的位置におけるオブジェクトのIステートの複製。 「RDBMS」 関係データベース管理システム。 「セカンドクラス・オブジェクト」 CORBAオブジェクト・リファランス では参照することのできないオブジェクト。 「サービス」 機能性の抽象的プロバイダーであり、CORBA IDLイン タフェースによって定義される。(通常サービスは、互いに協働する論理的 にグルーピングされたオブジェクトによって提供される。) 「ツリー降順」 再帰デレゲーションの一形態であり、そこでは代表者がツリ ーを形成する。 「ウォーム」 再帰デレゲーションの一形態であり、そこでは代表者が任意の グループを形成する。 「ラッパー」 システムのコンポーネントを、他のコンポーネント、共通サー ビス、インフラストラクチャにおける変化及び不良から守る内部インタフェ ース。 発明の目的 本発明の目的は、先行技術に関係する問題の少なくとも幾つかを改良又は克服 する大規模分散型オブジェクト指向コンピューターシステムのための開発ツール を提供することである。 本発明のもう一つの目的は、開発者がオブジェクトモデリングとビジネスロジ ック実行に焦点を絞れるようにしながら、少数のパワフルなCORBA使用モデ ルを実行する、大規模分散型オブジェクト指向コンピューターシステムを開発す るための方法を提供することである。 本発明の更にもう一つの目的は、 ・CORBAを使用するシステムモデリングのガイドラインと、 ・抽象的オブジェクトモデルを展開可能なCORBAインタフェース設計言語( IDL)に翻訳するためのモデリングツールと、 ・CORBAクライアント、サーバー、ファクトリー、集台を作るためにインフ ラストラクチャレベルコードを生成するための、コードライブラリーを含むコー ド生成器と、 ・分散された構成、デバッギング、管理、性能計測のためのシステム管理機能と を提供する大規模分散型オブジェクト指向計算のためのシステム開発ツール及び /又は方法を提供することである。 発明の開示 ある形態においては、唯一又は事実最も広範囲な形態である必要はないが、本 発明は、複数のクライアントと、複数のサーバーと、クライアントのサービスに 関する要求をサーバーへ通信するための分散型オブジェクトインフラストラクチ ャとを含む、大規模分散型オブジェクト指向コンピューターシステムを構築する ための開発ツールに在り、前記開発ツールは、 (a)(i)各オブジェクトの固有のアイデンティフィケーションを容易にする オブジェクトアイデンティティパターンと、 (ii)あるコモナリティを有するオブジェクトの論理的グルーピングを容 易にする集合パターンと、 (iii)オブジェクトのセットに目標を絞ったオペレーションを容易にす るグループオペレーションパターンと、 (iv)クライアントとは無関係に一つのオブジェクトともう一つのオブジ ェクトとの連携を容易にするフレンドパターンと、 (v)性能目的にオブジェクトの物理的グルーピングを容易にするパーティ ションパターンと を含む、予め定められたオブジェクト設計パターンを提供する一連のテンプレー トと、 (b)クライアントプロセスが要求することになる所望のサーバープロセスを定 義るために、そしてオブジェクト設計パターンの内の選択されたものを組み込む ためにユーザーによって作り出されるオブジェクト指向システムモデルから、以 下の (i)分散型オブジェクトインフラストラクチャからクライアントアプリ ケーションコードを切り離すための、各クライアントプロセス用のク ライアントアクセスレイヤーと、 (ii)分散型オブジェクトインフラストラクチャからサーバーアプリケ ーションコードを切り離すための、各サーバープロセス用のサーバー アクセスレイヤーと、 (iii)ユーザーがサーバーセマンティックスのインプリメンテーショ ンを統合するための規定を含む、各サービスを実行するためのサーバ ーアプリケーションコードのスタブ部と を生成するために配置されているコード発生器とから成る。 前記開発ツールは更に、システム内で利用可能なサービスの発見のためのサー ビスファインダーサービスを含む基本的分散型サービスのセットを含んでいるの が相応しい。 必要であれば、前記一連のテンプレートは更に、以下のオブジェクト設計パタ 一ン、即ち、 (vi)改善されたサービスを提供するために協働する集合のセットで あるフェデレーションパターン (vii)フェデレーション内のセットからの集合の最適選定を容易に する統一されたサービスパターン、及び/又は (viii)特別にアイデンティファイされたオブジェクト上での複数 のオペレーションを容易にする大容量オペレーションパターン の内の一つ又はそれ以上を含んでいてもよい。 オブジェクトアイデンティティはオブジェクトの属性であり、構造化名を用い て表され、オブジェクトの複製を考慮しているのが望ましい。 なるべくなら、1つの集合にグルーピングされたオブジェクトはメンバーとし て知られ、集合のメンバーの知識は明示的に維持され、リストの形式になってい るか、或いは規則の適用によって明示的になっているのが好ましい。 グループオペレーションが適用されるオブジェクトのセットは、明示的に又は 暗示的に定義されたグループオペレーションの有効範囲として知られているのが 望ましい。 明示的に定義されたグループオペレーションは、サービスとオペレーションに 対するパラメータ、好ましくはオブジェクト識別子のリスト、から成るオブジェ クトにより支持された根本的オペレーションに基づいており、有効範囲を定義す る。 暗示的に定義されたグループオペレーションは根本的オペレーションに基づい てはおらず、クライアント指定フィルターがオブジェクトに適用されオペレーシ ョンの有効範囲を定義する。 2つのオブジェクトは、もしそれらが分散型オブジェクトインフラストラクチ ャを通してクライアントと連携して現れるのではなく、互いに連携して現れるの であればフレンドであるのが相応しい。 パーティションはオブジェクトの物理的なグルーピングであり、そこではシス テム内の各オブジェクトは1つのパーティションとだけ関係し、そのパーティシ ヨンはコンピューターハードウェアの1つのセットと対応する。 なるべくなら、フェデレーション内の集合は、より早くより広くより信頼性の あるサービスを提供するために、互いにオペレーションを委任できるのが望まし い。 統一されたサービスは統合された集合であり、そこでは予め定められた集合の サブセットはクライアントには見えないのが相応しい。 クライアントアクセスレイヤーは、サービスを実行するオブジェクトにアクセ スするエージェントクラスと、エージェントクラスにより操作されるデータ構造 を表すための別のクラスとを含んでいるのが望ましい。 なるべくなら、エージェントクラスは分散型オブジェクトインフラストラクチ ャ用のインタフェースコードをクライアントアプリケーションコードから分離し て、オブジェクトのアイデンティティ、インタフェース、その実現に取り組むた めの手段をカプセル化しておくのが望ましい。 サーバーアクセスレイヤーは、あらゆるパーティションに関してオブジェクト を管理するためのサービスマネージャーを含んでいてもよく、オブジェクトの創 造と削除とを考慮している。 サーバーアクセスレイヤーは、サービスを実行するオブジェクトへのアクセス を提供するためのアダプタークラスを含んでいるのが望ましい。 基本的分散型サービスのセットは更に、システム内のファイルを複製するため のファイル複製サービスを含んでいるのが相応しい。 基本的分散型サービスのセットは、コードライブラリーによって供給されるの が望ましい。 必要があれば、システムはCORBA標準を利用し、そこでは、 (a)分散型オブジェクトインフラストラクチャはオブジェクトリクエストブロ ーカー(ORB)を含み、 (b)オブジェクト指向システムモデルはCORBAコンセプトを使用してモデ ル化され、 (c)サーバーインタフェースはCORBAインタフェース設計言語(IDL) に従って生成される。 別の形態においては、本発明は、複数のクライアントと、複数のサーバーと、 クライアントのサービスに関する要求をサーバーへ通信するための分散型オブジ ェクトインフラストラクチャとを含む、大規模分散型オブジエクト指向コンピュ ーターシステムの開発ための方法に在り、前記開発方法は、 (a)(i)各オブジェクトの固有のアイデンティフィケーションを容易にする オブジェクトアイデンティティパターンと、 (ii)あるコモナリティを有するオブジェクトの論理的グルーピングを容 易にする集合パターンと、 (iii)オブジェクトのセットに目標を絞ったオペレーションを容易にす るグループオペレーションパターンと、 (iv)クライアントとは無関係に一つのオブジェクトともう一つのオブジ ェクトとの連携を容易にするフレンドパターンと、 (v)性能目的にオブジェクトの物理的グルーピングを容易にするパーティ ションパターンと を含む、予め定められたオブジェクト設計パターンのための一連のテンプレート から一つ又はそれ以上のテンプレートを選択する段階と、 (b)クライアントプロセスによって要求されることになる所望のサーバープロ セスを定義するための、そしてそのモデルが選択されたオブジェクト設計パター ンを組み込むところの、オブジェクト指向システムモデルを作る段階と、 (c)前記オブジェクト指向システムモデルから、以下の (i)分散型オブジェクトインフラストラクチャからクライアントアプリ ケーションコードを切り離すための、各クライアントプロセス用のク ライアントアクセスレイヤーと、 (ii)分散型オブジェクトインフラストラクチャからサーバーアプリケ ーションコードを切り離すための、各サーバープロセス用のサーバー アクセスレイヤーと、 (iii)ユーザーがサーバーセマンティックスのインプリメンテーショ ンを統合するための規定を含む、各サービスを実行するためのサーバ ーアプリケーションコードのスタブ部と のためのコードモジュールを生成する段階とから成る。 前記方法は更に、システム内で利用可能なサービスの発見のためのサービスフ ァインダーサービスを含む基本的分散型サービスのセットを提供する段階含んで いるのが望ましい。 前記段階(c)における選択に利用可能な前記一連のテンプレートは更に、以 下のオブジェクト設計パターン、即ち、 (vi)改善されたサービスを提供するために協働する集合のセットで あるフェデレーションパターン、 (vii)フェデレーション内のセットからの集合の最適選定を容易に する統一されたサービスパターン、及び/又は (viii)特別にアイデンティファイされたオブジェクト上での複数 のオペレーションを容易にする大容量オペレーションパターン の内の一つ又はそれ以上を含んでいてもよい。 オブジェクトアイデンティティパターンが選択されると、オブジェクトのアイ デンティティ属性は構造化名を用いて表され、この属性はオブジェクトの複製を 考慮している。 集合パターンが選択されると、メンバーとして一つの集合にグルーピングされ たオブジェクトを参照し、リスト形式のように明示的に、或いは規則の適用によ り暗示的にの何れかで集合のメンバーの知識を保持する。 グループオペレーションパターンが選択されると、グループオペレーションが グループオペレーションの有効範囲として適用されるオブジェクトのセットを参 照するが、この有効範囲は明示的に定義されていても暗示的に定義されていても よい。 フレンドパターンが選択されると、フレンドオブジェクトを、彼らが分散型オ ブジェクトインフラストラクチャを通してクライアントと連携して現れるのでは なく、互いに連携して現れるように配置する。 パーティションパターンが選択されると、オブジェクトの物理的グルーピング をパーティションに割り当て、そこではシステム内の各オブジェクトは、コンピ ューターハードウェアの1つのセットに対応する1つのパーティションにだけ関 係する。 フェデレーションパターンが選択されると、より早くより広くより信頼性の高 いサービスを提供するために、集合が互いにオペレーションを委託できるように する。 統一されたサービスパターンが選択されると、統合された集合内の予め定めら れた集合のサブセットを、クライアントが要求する統一されたサービスが見えな いように配置する。 前記クライアントアクセスレイヤーを生成する段階は更に、エージェントクラ スによって操作されるデータ構造を表現するためにサービス及び他のクラスを実 行するオブジェクトにアクセスするため、エージェントクラスを生成する段階を 含むのが望ましい。 前記エージェントクラスを生成する段階は、分散型オブジェクトインフラスト ラクチャのためのインタフェースコードをクライアントアプリケーションコード から分離し、オブジェクトのアイデンティティ、インタフェース、その実現に取 り組むための手段をカプセル化するのが望ましい。 前記サーバーアクセスレイヤーを生成する段階は、あらゆるパーティションに 関してオブジェクトを管理するためのサービスマネジャーの規定を含んでいても よく、オブジェクトの創造と削除を容易にする。 前記サーバーアクセスレイヤーを生成する段階は、アダプタークラスが、サー ビスを実行するオブジェクトへのアクセスを提供できるようにすることが望まし い。 前記基本的分散型サービスのセットを提供する段階は、更に、システム内のフ ァイルを複製するためのファイル複製サービスを提供する段階を含んでいてもよ い。 又別の形態においては、本発明は、上に説明した何れかの開発ツール又は開発 方法を使って構築された大規模オブジェクト指向システムに在り、そこではオブ ジェクト指向システムは共通の管理インタフェースを含んでいる。 上記共通の管理インタフェースは、テストの規定、使用可能、使用不可能、バ ックアップ、再スタート機能を含む、システム内の全ての統一されたサービスを 遠隔管理し易くするのが望ましい。 更に、この管理インタフェースは又、統一された各サービスを照会できる、バ ージョン番号、著作権情報、ステータス、ホスト機器、プロセスアイデンティテ ィ、等の属性の1つ又はそれ以上を含む属性のセットをサポートする。 図面の簡単な説明 本発明の理解を助けるために、好適な実施例を以下の図面と共に説明する。 図1は、コンピューターネットワークの線図であり、その上でオブジェクトが 大規模OOシステム内に分散されている。 図2は、第1の実施例の開発ツールのための使用モデルの線図である。 図3は、第1の実施例のアーキテクチュアの概観である。 図4は、集合設計パターンの図を示す線図である。 図5は、プルモデルを使用して実行された集合を示す線図である。 図6は、プッシュモデルを使用して実行された集合を示す線図である。 図7は、個々のオペレーションに委任するグループオペレーションを示す線図 である。 図8は、他のグループオペレーションに委任するグループオペレーションを示 す線図である。 図9は、フレンド設計パターンの例を示す。 図10は、対等クラスター分散モデルを示し、ここではクラスターはパーティ ション設計パターンに関係する。 図11は、統合された集合を示す。 図12は、不可視的に統合されたファクトリーの例を示す。 図13は、2つの統合されたオブジェクトの間に存在するフェデレーションイ ンタフェースの配置を示す。 図14は、統一されたサービスパターンの例を示す。 図15は、統一された統合サーバーを含む典型的なクライアント/サーバーシ ナリオを示す。 図16は、オブジェクト識別子(OID)のオペレーションを示す。 図17は、本実施例のサーバープロセスにおけるアダプターとImplクラス 間の関係を示す。 図18は、サービスロケーターサービスとサービスマネージャー間の対話を示 す。 図面の詳細な説明概要 図1はコンピューターネットワークを示し、その上にOOシステムのオブジェ クトが分散配置されている。ネットワークは、ネットワークバックボーン3に接 続されたコンピューター端末即ちPC1、ファイル即ちプリントサーバー2等の コンピューター機器、又は命令とデータを互いに共有するための他の通信インフ ラストラクチャを含んでいる。コンピューター機器は遠く離れた位置4、5、6 に配置し、ネットワークバックボーンの分枝をルーター7のような切替え装置で 接続しておけばよい。ここでは、オブジェクトは特定のプリンター8に例をとり サービスはファイル記憶機能に例を取る。 図2では、システム開発ツール10のインテジャが、本実施例で実行されるよ うに、CORBA標準に従うシステムを作るために示されている。CORBAの 作業知識は以下の記述のように仮定されるか、そうでなければ上記のCORBA 仕様に対しリファランスが作られる。先ず開発者は設計ガイド12の支援の下に 共通オブジェクトモデリング技術を使って論理オブジェクトモデル11を考え出 す。本実施例では、開発ツールは更に、開発者が汎用モデリング言語(UML) で表現されたCORBAシステムモデル14を規定するのを支援する、モデルウ ィザード13を含んでいる。他の実施例では、システムモデルを、もう1つのオ ブジェクト指向コンピューター支援ソフトウェアエンジニアリング(CASE) ツールのようなある他のツールで作ることもでき、又モデルウィザードを先に存 在しているUMLモデル又は他のOOモデルで初期化することもできる。 開発者がCORBAシステムモデルが正しいと満足している場合、コードウィ ザード15の形のコード発生器はシステムを取り上げ、CORBAインタフェー ス設計言語(IDL)モジュール16と、開発者が規定したオブジェクトセマン ティックス18に対するフックを含むサーバー17に対するインプリメンテーシ ョンと、サービスに対する単純化されたクライアントインタフェース19とを作 る。開発者10はオブジェクトセマンティック18を、好都合にも本実施例内で 単純化クライアントインタフェース19のためにコードウィザードによって使用 されているC++のような適当な言語でコード化するのが望ましい。他の実施例 ではジャバ、スモールトーク、OOソフトウェアに適した他の言語等を使うこと もできる。基本的分散型サービスのセットは、開発ツールライブラリー21によ っても提供され、これは他の共通機能を含んでいる。 CORBAに従うオブジェクトリクエストブローカー(ORB)20、即ちそ の中でシステムが稼動する環境、も又支給される。ビジジェニックの「ビジブロ ーカー」、イオナ技術の「オービック」等の商業的に入手可能な製品がこの目的 に適している。適当な目標OSは、サンマイクロシステムの「ソラリス」、ヒュー レットパッカードの「HPUX」、マイクロソフトの「NT」或いは他の適当なマ ルチタスクOSであると思われる。 次に、サーバー22及びデフォルトクライアント23に対し実行可能なものが 生成されたモジュール16,17,19及び開発者がコード化したモジュール1 8を外部ソースのORBコンポーネント20と共に連結することによって作られ る。開発者は、何れのコードウィザード出力ファイルをも、その初期選択を修正 し、又は開発ツールによってサポートされているものよりもっと複雑なCORB Aコンセプトを使用するために、拡張又は修正することができる。便宜上、本実 施例のシステム開発ツール10を以後「ORBマスター」と呼ぶ。アーキテクチュア 図3は本実施例によって生成された、生成されたサービスの典型的なクライア ント/サーバーの図である。この線図に示されているORBマスターアーキテク チュアのキーとなる態様は、クライアントアプリケーションコード26、クライ アントアクセスレイヤー27、サーバーアクセスレイヤー28、サーバーアプリ ケーションコード29、基本サービスであり、基本サービスはファイル複製サー ビス30とサービスファインダーサービス31を含んでいる。クライアントプロ セス32、サーバープロセス33及び基本サービスはORB25の形態の分散型 オブジェクトインフラストラクチャを通して通信すると理解されたい。 ORBマスターアーキテクチュアはサービス開発者がアプリケーションコード (クライアントアプリケーションコード及びサーバーアプリケーションコード) 領域内に開発努力を集中できるようにする。ORBマスターアーキテクチュアは これを、いくつかの有用な分散型サービス(ファイル複製及びサービスファイン ディング)、いくつかの有用な設計パターンのコード(グループオペレーション 、統一されたサービス、等以下で論議する)を提供することによって行う。この アーキテクチュアは又、クライアントと、ORB依存コードをアプリケーション 特定コードから分離し、そしてサービスの分散態様を実施するコードを他のサー ビスセマンティックスを実行するコードから分離するサーバーアクセスレイヤー (CAL及びBAL)とを提供する。 OOアーキテクチュアにおける最も基本的なコンポーネントはオブジェクトで ある。クライアント/サーバーのパラダイム内では、オブジェクトのグループが サービスを提供するために協働し、サービスにはクライアントのアプリケーショ ンがアクセスする。ORBマスターのアーキテクチュアは、CORBAとは対照 的に、アイデンティティ、サポートインタフェースを有し、インプレメンテーシ ョンを有するオブジェクトのコンセプトに依存する。アイデンティティはオブジ ェクトの属性である構造化名を用いて表され、インタフェースはIDLを用いて 定義され、インプレメンテーションはCORBAオブジェクトリフアランスを用 いてアドレスされる。従って、ORBマスターオブジェクトは丁度第1クラスC ORBAオブジェクトにアイデンティティを付加したものである。アイデンテ ィティは以下に記述する設計パターンにおいては暗示的である。 命名属性とオブジェクトとの間には多数対1の関係がある。命名属性はオブジ ェクトの読取専用属性である。オブジェクトの命名属性はそのオブジェクト識別 子(OID)として指定される。OIDとオブジェクトの間には1対1の関係が ある。OIDは、データベースキーとして、そしてオブジェクトに対するオブジ ェクトキー(CORBAインターオペラブル・オブジェクト・リファランス(I OR))としての両方に使われる。オブジェクトリフアランスはオブジェクトの 現在のインプリメンテーシヨンにアドレスするか、又は何にもアドレスしない。 即ち、1つのオブジェクトに対するオブジェクトリフアランスは引き続いて異な るオブジェクトにアドレスするのに使うことはできない。オブジェクトリファラ ンスはオブジェクトが動いたときには変化するかもしれず、それ故、オブジェク トアイデンティティを表すことはできない。当然、オブジェクトリファランスは クライアントによって持続的に保持されるべきではない(代わりにOIDを使う べきである)。このアーキテクチュアはオブジェクトが1つ以上のインプリメン テーシヨンを持てるようにする、即ち、オブジェクトが複製できるようにする。 サービスは、ある特定のビジネスニーズに合致するように、機能的に且つ論理 的にグルーピングされる。サービスは関係するサービスプロバイダーオブジェク トのグループによって実行される。サービスはOID(即ち名前)によって識別 される。全てが同一の統一されたサービスをサポートするサービスマネージャー の1つのセットは、(それらのOIDをサービス名とした)単一の複製されたオ ブジェクトであるのが効率的である。一般的には以下の2種類のサービスプロバ イダーオブジェクトがある。即ち、 サービスマネージャー:これは、分散管理、コンポーネントオブジェクトの集合 上のグループオペレーション、コンポーネントオブジェクトのライフサイクル管 理を取り扱うサービスのオペレーションを提供する、 コンポーネントオブジェクト:これは、サービスにより管理された状態の最も小 さく分割された識別可能なコンポーネントである、の2つである。 サービスマネージャーとコンポーネントオブジェクトのインプリメンテーション は、図2に示すように、サーバーアクセスレイヤー(SAL)とサーバーアプリ ケーションコードとに分けられる。SALは、後出の「サーバーアクセスレイヤ ー」の項で詳しく説明する。 システム開発ツールの1つの目的は、少なくともクライアントアプリケーショ ンに関しては、CORBAアーキテクチュアを理解する必要なしに、サービスへ の完全なアクセスを提供することである。ORBマスタークライアントアクセス レイヤー(CAL)はこの目的を達成するためにシークする。CALはアプリケ ーションコードを、サービスを実行するオブジェクトにアクセスするのに必要な コードから分離する。CALとアプリケーションコードとの間のインタフェース は、サービスのためにインタフェース定義言語(IDL)から生成されたC++ クラスの何れをも表に出さない。CALは、後出の「クライアントアクセスレイ ヤー」の項で詳しく説明する。インタフェース この項では、LSDOOでのインタフェースの役割を、C++ヘッダーファイ ルのようなOOPLインタフェースと対比する。インタフェースの役割はサービ スの定義を提供することである。インプリメンテーションの役割は、定義された オペレーションを遂行するためにオブジェクトの状態上で活動することによりサ ービスを実行することである。開発者は、サービスを利用するために、オブジェ クト状態のコンセプトを必要とする。疑いの余地なく、これは実際のインプリメ ンテーションで用いられる実際の状態でなくともよく、むしろ、リファランスオ ブジェクトが有するであろう正規化状態「Nステート」のコンセプトである。N ステートのコンセプトがなければ、オブジェクトのオペレーションは結び付けら れていないように見える。例えば、基本的なネームサーバーを考えよう。 このIDLはインタフェースのシンタックスを正確に規定する。トークン名はオ ペレーションセマンティックスを暗示する。例えば、add()オペレーション が'name'を'named'に対応付けるとしよう。結合が(ある規則のセットに照らし て)真であれば、リターン結果も真であろう。find()からの単一のリターンは、 名前が一意に違いないことを示している。コメントがこの理解を増すであろう。 それは相互オペレーションセマンティックスを暗示する。find()オペレーション は、名前に合致し、delete()オペレーションよりもより好結果のadd()オペレー ションを経たオブジェクトを返すと想定できる。この理解はNステートを説明す るコメントを通して深めることができる。それはサービスの質については何も言 っていない。即ち、如何に早く、如何に多く、如何に信頼できるかである。 オブジェクトのNステートを表に出すことに失敗すると、オペレーション同士 が相互連結を持っていないので、インタフェースが使用できなくなる。RDBM Sに対する過剰反応として、OOデザイナーは通常、これを単なるインプリメン テーションの課題だと考えて、議論しているオブジェクトの状態を避けるため非 常に長く行ってしまう。この遠慮はインプリメンテーション状態(Iステート) に有効に適用されるが、Nステートを議論しなければならない。又、Nステート は無定形の形の無い物ではなく、構造を持っている。1つの有用なNステートコ ンセプトは属性のそれである。属性は、その値を得て通常はセットするためのオ ペレーションを持つ1つのNステートデータである。属性を得ることはNステー トを変えはしない。それをセットすると、その値を提案されたものに変えるか、 或いは、もしそれがオブジェクトのセマンティックに違反するものであれば、フ ェイルする。1つの属性をセットしても、Nステートの他の部分は何も変わらな い。属性の特別のタイプは「リレーション」であり、これはそのタイプがオブジ ェクトリファランスであるところの属性である。 もう1つの属性の特別なタイプは「ネーム」であり、これはオブジェクトと多 数対1の関係を有する属性である。ネームの特別なタイプが「キー」であり、こ れは不変のネームである。キーの特別なタイプが「アイデンティティ」であり、 これはオブジェクトと1対1の関係を有するキーである。属性として表に出され ていないNステートはオペレーションを通して表に出され、「コンスタント」オ ペレーションはNステートを変化させないでおくように設計されている。 Nステート、属性、リレーション、キー、ネーム、コンスタンとオペレーショ ン、及び品質のコンセプトは、アプリケーションの機能性にとって非常に重要で あるのでインタフェースにおいて避けることはできない。しかし、これらのコン セプトのどれも、CORBAのIDLグラマーで本来的に表現可能ではない。I DL属性は閉じているが、ユーザーの定義した例外をサポートできないので、半 機能的である。それ故、規定を開発して発行し、これらのコンセプトをIDLで エンコードするために一貫して適用しなければならない。CORBAは、インタ フェースレポジトリー(IR)サービスを規定する。しかし、このサービスは非 常に小さな役割しか持っておらず、それは、それが単に「シンタックスレポジト リー」であるからであり、それは、インタフェースを含む他の複雑さの何れをも 表現する方法を持っていないからである。IRは恐らくは、ゲートウェイ及び基 本のブラウザーに対して唯一有用であり、即ち、サービスのコンセプトをシンタ ックスのそれ以上には何ら有していないものなのである。設計パターン 本実施例の開発ツールはCORBAに基づいて分散型アプリケーションを構築 するためのアーキテクチュアを提供する。本節では、数多くのORBマスター設 計パターンについて説明するが、これらは設計システムのためのテンプレートで ある。各パターンは1つ又はそれ以上のLSDOO問題点に取り組む。設計パタ ーンのコンセプトについてもっと詳しいことは、ガンマ.E他の1995年ニュ ーヨーク、アディソン・ウェズリー発行「設計パターン」及びモブレィ.T.J 他の1997年ウィリィ発行「CORBA設計パターン」を参照されたい。以下 に議論するパターンは、特に有用であり、システム設計ツールの支援の下で構築 されるサーバーにおいて重要な役割を果たす。開発者は、システムの最もビジネ ス優先度の高いものに取り組むパターンに焦点を絞りながら、設計ガイド12及 び論理モデル11の指示により、システム設計に対し設計パターンを選択的に適 用することができる。 ・集合パターン 集合は、性能及びシステムモデリングの問題点に取り組む幾つかのコモナリテ ィを有するオブジェクトのセットを参照しやすく配列する1つのオブジェクトで ある。このパターンは、以下に述べるフレンド及びフェデレーションパターンと 共に働く。集合はメンバーのセットに参照をつけるオブジェクトである。メンバ ーはある形式のコモナリティを有するオブジェクトであり、集合が管理するのは 正しくこれである。以下の4つは集合の例である。即ち、 − ネームサーバーはオブジェクトのセットを表し、各オブジェクトは名前を 持っており、それ故、集合は名前による検索をサポートする、 − トポロジーサーバーはオブジェクトのセットを表し、各オブジェクトはリ レーションを持っており、それ故、集合はリレーションによる検索をサポートす る、 − CORBA−IPゲートウェイは、インタフェースプロトコル(IP)を 表すオブジェクトと、IPオブジェクトのセットを表す集合から成り、それ故、 集合は、与えられたIPアドレスに対応するオブジェクトを見つけ出すなど、I Pタイプのオペレーションをサポートする、及び − エラーログはエラーオブジェクトの集合であり、それ故、集合は、エラー オブジェクトのライフサイクル、その検索、関係する統計をサポートする。 集合は常にそのメンバーを知っている。集合はその知識を常に明示的に、例え ば、メンバーオブジェクト参照のリストとして、或いは規則を通して暗示的に、 例えば、123.22.*.*に合致するIPアドレスを持った何らかのオブジ ェクトとして保持する。メンバーは複数の集合の一部であってもよく、例えば、 プリンターオブジェクトはネームサーバー集合、インベントリー集合、IPオブ ジェクトゲートウェイ集合の一部であってもよい。メンバーがその集合に関し持 っている知識は変化することができる。あるメンバーはその集合と緊密な関係を 有していて、そのアイデンティティを知っており、それと協働するように設計さ れており、例えばゲートウェイメンバーがそれに当たる。他のオブジェクトは、 誰かいるとして、誰が彼らを集めているのかを認識していないかもしれない。そ のようなオブジェクトは、ライフサイクルや状態変更通知のような、彼らを簡単 に集めることができる機能をサポートしているかもしれない。 集合は最も普及したLSDOOパターンであり、設計プロセスで非常によく使 われる。RDBMSシステムでは、全てのデータは、簡単な照会言語でアクセス するのにテーブルで利用できる。対照的に、典型的なOOシステムは最初のオブ ジェクトと共にスタートし、これが他のオブジェクトを明らかにし、そのオブジ ェクトが又他のを明らかにし、関心のあるオブジェクト全てが見つけ出されるま でこれが繰り返される。リレーション図に接続されていないオブジェクトは全て 見つけ出せない。図4では、図の根元は最初のオブジェクトリファランス35で あり、これはC0RBA::resolve_initial_reference()のようなステートメントを用 いてORBから手に入れることができる。集合は、図4に示す図では、無葉オブ ジェクト35、36、37、38である。 従来型OOモデリングの主要機能は集合を識別することである。そのような識 別及びそれを行うための技法はLSDOOと同じである。以下は、その中で集合 をオブジェクトモデルの中に明らかにする共通の状況である。即ち、 − 属性検索、例えば、ペーパー外にあるプリンターを探す、 − グループオペレーション、例えば、オフラインのプリンターを探し、オン ラインにセットする、 − ネーミング、例えば、IPアドレス12.34.56.78のオブジェクトを探し出 す、 − 束縛関係、例えば、装置内のプリント回路板のリストを返す、又は − 連結性、例えば、2つの終点オブジェクトを接続する最小コストパスを見 つけ出す。 集合は、ポインターを、代表的にはモデリング、検索、ネーミング、束縛など のメンバーの幾つかに返してもよく、テーブル探索に似たそのメンバーのNステ ート幾つかを復帰させてもよく、そのメンバー(アクティブ集合)上でオペレー ションを実行してもよく、カスケード削除のようにメンバーのライフサイクルを 管理することもできる。集合パターンを他のOOコンセプトと組み合わせて適用 することもできる。多くの集合は非集合態様を有しており、例えば、プリンター オブジェクトは、プリンター機能を実行すると同時に、そのコンポーネントオブ ジェクトの集合であってもよい。以下に集合を他のOOコンセプトと結合する例 を示す。即ち、 − フェデレーションパターン、これは集合がより広範囲の照会に答えて協働 できるようにする、 − フレンドパターン、以下に議論する通り、 − ファクトリー、ここでは非CORBA環境に対するゲートウェイが通常、 全体としては異なる環境を表す集合と、オブジェクトの異なるコンセプトを表す 個々のオブジェクトとを有している。 集合に対するインタフェースは、例えば、ネームによってメンバーを見つけ出 す等の集合の機能性を提供するオペレーションを有し、メンバー(ゲートウェイ /集合は例外であってもよい)を追加及び除去するためのいくつかのオペレーシ ョンを有し、通常フェデレーションをサポートし、そして、結果が大きかったり 応答が遅い場合は、結果の取り消し又は逐次返却をサポートする。メンバーを追 加及び除去するには多くのアプローチがある。集合がファクトリーであれば、有 用なアプローチの幾つかはファクトリーであり、ファクトリーで作られるオブジ ェクトは全て自動的にメンバーであり、集合サポートにメンバーの追加と除去の オペレーションを提供し、集合が異なるドメインへのゲートウェイであればゲー トウェイであり、集合のメンバーシップは通常そのドメインで表示される。例え ば、IPルーターをインストールすれば、対応するネットマスクを持ったIPゲ ートウェイ集合のメンバーシップを発生させることになる。 効率的且つ柔軟性のある集合を構築するのは挑戦であり、スケールは集合の手 に負えないものである。問題は、集合が如何にすれば、メンバーの状態を、その オペレーションが効率よく実行できる十分な状態に維持できるかということであ る。例えば、不完全なプリンターのリストの返却をサポートするプリンター集合 は、各プリンターをポーリングする(これはプリンターが沢山あれば遅い)か、 又はプリンター状態のローカルキャッシュを探索するか(これは、プリンターと の同期性を維持するのにキャッシュが必要である)の何れかによってそのオペレ ーションを実行することができる。フレンドパターンは集合的Nステートへの1 つの解を提供するが、それはメンバーのフレンドである集合がそれらのIステー トにすばやくアクセスできるものである。例えば、製造者がHPであるプリンタ ーを見つけ出すのは、プリンターのIステートがRDBMSに記憶されていれば 容易である。フレンド関係は、フレンドパターンで論議する幾つかの欠点を持っ ている。 非フレンド集合はメンバーのリストを維持しなければならない。これは、図5 及び6に示すように、プル及びプッシュ・データシェアリングモデルをサポート するには十分であり、即ち、 − プルモデル40は、メンバー42に、集合41が必要に応じてそのNステ ートにアクセスできるようにするステートインタフェース43を持つことを要求 し(プルモデルは、キャッシュを維持し、要求に応じて委任し、又は集合的オペ レーションを実行するのに使うことができる)、 − プッシュモデル45は、集合に、集合的Nステートを更新するのに使用で きるオファインタフェース47を持つことを要求する(プッシュはメンバー48 又は他のパーティから来ることもできる)。 プッシュモデルは、クライアントの複雑さを犠牲にして、集合の大局から実行 することは容易である。プルモデルは、集合を犠牲にして、よりメンバー寄りで ある。デレゲーションは通常遅く、キャッシュはプルモデルを使って維持するに は複雑である。集合は設計、構築するのは難しくてもよく、設計を普及させる傾 向にあり、それ故、標準集合の再使用を考慮すべきである。カスタムインタフェ ースは設計できるが、これらは標準コード化されたインプリメンテーションを使 って実行されるべきである。 候補標準集合は以下の通りであり、即ち、 − あらゆる集合に対するネームサーバーであり、これは1つまたはそれ以上 の非常に独特なキーを有し、対応するオブジェクト、例えば、IPアドレスをオ ブジェクトリファランスに変換するIPゲートウェイを返すものであり、 − あらゆる集合に対するOMG互換トレーダーであり、これは、例えば最良 のプリンターを見つけ出すようなほとんど変化しない属性に基づいて、多くの中 から1つのオブジェクトを選択するものであり、 − あらゆる集合に対するOVテレコムトポロジーであり、そこでは1つのオ ブジェクトがもう1つのオブジェクトと、例えば、所有者と所有されているオブ ジェクトの間に、何らかの形式の関係を確立する。このときには、標準サービス の良いインプリメンテーションは殆どなく、これがこのアプローチをいくらか制 限する。又、標準解は常にカスタム構築のものよりも遅い。 ・大容量オペレーション(又は自然集合)パターン 集合パターンの派生であり、自然集合とも称され、大容量オペレーションを実 行する。特別に識別されたオブジェクト上での複数のオペレーションは、大容量 オペレーションであると考えられる。自然集合は正規化システムモデルに必要な 集合である。自然集合はシステムの機能性を実行するのに必要な集合であり、正 規化システムの1部である。 LSDOOシステムを設計する際には、全てのOOシステムと同じく、抽象的 オブジェクトモデルからスタートする。これは、インプリメンテーションの問題 点に関わることなくシステムのロジックを補足するモデルである。次に、抽象的 オブジェクトモデルを、特定のインプリメンテーション技術、この場合はCOR BA、上にマッピングする。自然集合は集合の抽象的コンセプトのマッピングで ある。システムに対して自然集合を認識するのはやや困難であり、それはこれが 従来のOOモデリングからの結果だからである。オブジェクト指向プログラミン グ言語(OOPL)の用語で考えると、LSDOOシステムでは理解できない幾 つかの自然集合がありそれらは次の通りである。即ち、 − 多くのOOPLは、例えば、C++又はジャバのスタティックメンバーフ ァンクション及びデータのような、クラスデータのコンセプトを有している。 DOOはこのコンセプトを持っていない。自然集合オブジェクトを使ってクラス データを明示的にモデル化しなければならない。 − OOPLの構造のコンセプト、例えば、C++及びジャバnew()オペレー ションは、何らかの特定のオブジェクト上で実行されるのではないグローバルな オペレーションである。DOOでは、新しいオペレーションは、ある特定のオブ ジェクト、典型的には連結されたファクトリー/集合オブジェクト上で実行され なければならない。オブジェクトモデルのテストのためにイベントトレース又は CRCを実行する場合には、各オブジェクトをどのようにして見つけ出し、それ を作るのに何を使ったかを非常に注意深く吟味しなければならない。 CORBA::resolve_initial_reference()ステートメントを使えば、各オブジェクト を、それをORBから手に入れた最初のオブジェクトリファランスまで遡って追 跡できる。 自然集合インタフェースは集合のために記述したインタフェース構造上で拡張 する。自然集合の機能性では以下のテーマがしばしば浮上してくる。即ち、 − 名前を構成するものの詳細に関する名前による探索は、先のインタフェー スの役割の項参照、 − オブジェクトの属性から形成される幾つかの述語に従う、オブジェクトの 探索、 − オブジェクトライフサイクルオペレーション、特にカスケード除去、及び − そのプロジェクトに在りうる例に関する特定の集合的テーマは、パス選択 、伝播、最善の選定である。共通のインタフェースの表現はこれらの共通のテー マに対して展開されなければならない。ここに幾つかの例と注意がある。即ち、 あなたの集合のインタフェースを予測できるように命名せよ、例えば、Xの 集合はX集合と呼ばれる、 大容量オペレーション、通知、等に対して、一貫したサポートがなければ ならない、 性能集合オペレーションをあなたの自然集合と接続することを探求せよ、 − 例外は注意深く使用せよ。例えば、「オブジェクトが見つからない」は滅 多に例外状態であることはなく、検索とネーム探索の予想される結果である。自 然集合インタフェースで繰り返すテーマは、探索オペレーションを典型とする、 オブジェクトのリストを返すオペレーションである。返されたオブジェクトを表 す幾つかのオプションがあり、即ち、 − オブジェクトリファランスを、あまり多くない場合には返却せよ、そうす ればあなたの代表的クライアントは返されたリファランスの各々に「get attrib utes」呼び出しを即座に掛けることはないであろう、 − もしそれがあなたの代表的クライアントが必要としているもので、属性の サイズが大きすぎなければ、オブジェクトアイデンティティに属性を加えて返却 せよ、 − 多くのオブジェクトがある場合はオブジェクトアイデンティティを返しな さい。 もしアイデンティティを返せば、アイデンティティをオブジェクトリファランス に変換するグループオペレーションを提供しなければならない。もし返さなけれ ば、非CORBA型又はセカンドクラスのオブジェクトを実行していることにな る。実行に際しては、集合インタフェースが非常な類似性(リスト返却、逐次結 果、フェデレーション等)を示す。これは全て、あなたがクライアント及びサー バーサイドに包んでおかねばならない「house-keeping」コードである。 ・グループオペレーション(又は性能集合)パターン 集合パターンの更なる派生で、性能集合とも呼ばれ、グループオペレーション を実行する。1つではなく多くのオブジェクトを狙っているオペレーションはグ ループオペレーションと考えられる。グループオペレーションの効果は、単一の オペレーションを繰り返し実行するのと同じである。グループオペレーションに は2つの形態、明示と暗示がある。即ち、 − 明示的グループではクライアントが目標オブジェクトをリスト表示し、例 えば、このオブジェクトのリストで挙げられたオブジェクトの状態属性を返し、 − 暗示的グループではクライアントがメンバーシップ状態とその基準に合致 する全てのオブジェクトから成るグループを指定し、例えば、状態故障を有する 各オブジェクト上で自己試験を実行する。 性能集合はオブジェクトモデリングプロセスからは起こってこない。これは、 イベントのような技法を使った、システムのダイナミックな挙動の念入りな探索 から出てくる。グループオペレーションに要求される2つの価値のある状態があ り、それは、先ずクライアントが計画されたグルーピングに興味を抱かなければ ならず、次にグループオペレーションが対応する単一のオペレーションよりも相 当に速くなければならない。価値のある明示的グループを作る因子には次のもの が含まれる。即ち、 − クライアントは、それが如何に起こりうるかをあなたが考えるに必要なリ ファランスのリストを保持しなければならない(明らかな方法は、クライアント が探索オペレーションのような幾つかのオペレーションによってオブジェクトポ インターのリストを与えられることである。もっと狡猾な方法はクライアントが 徐々に個々のポインターを蓄積することである。)、 − クライアントはしばしばリストないの各オブジェクト上で全く同じオペレ ーションを実行する(例えば、クライアントはポインターを保有している多くの プリンターに対してテストオペレーションを実行しようとする。)、 − グループオペレーションは単一オペレーションよりも高速でなければなら ない(これはインタフェースで議論した問題点に依る。経験則では2kb以下の データを戻すような単一オペレーションはグループオペレーションの候補である 。)。 興味ある暗示的グループを作る因子は以下の通りである。即ち、 − 幾つかの自然集合はメンバーシップ規準をとり、オブジェクトポインター のリスト、典型的には幾つかの形式の探索オペレーションを返すオペレーション を提供しなければならない、 − クライアントはしばしば返された各オブジェクト上で全く同じオペレーシ ョンを実行する、そして − グループオペレーションは連結された探索及び単一オペレーションよりも 高速でなければならない。 全ての暗示的グループオペレーションは、極端な場合を除きこの基準に合致しな ければならない。 明示的グループインタフェースでの重要な決定は、目標のオブジェクトをどの ようにして指摘するかである。CORBAオブジェクトリファランスは、整理が 遅く、効率的に委任するのが下手(後のフェデレーションパターンの論議参照) なので、これを選定するのは良くない。幾つかのキー属性は、通常良い選択であ る。グループインタフェースはその基礎となる単一オペレーションインタフェー スと対応しなければならない。システムの設計者及び保守する者を支援するため には、対応が予測できるのが望ましい。例えば、単一オペレーション、 Result X::M(in_args,out_args) は次の明示的グループオペレーション Sequence<Result>Xcollection::M(sequence<Xid>.in_args,sequence<out_args>) に対応する。 単一及びグループオペレーションによって生ずる例外の間のマッピングを定義し なければならない。一般的には、グループオペレーションでは、例外が正確に何 に対応するかが明確でないので、ユーザー例外は出てくるべきではない。 暗示的グループは、集合がN個のリストの復帰オペレーションを持っており、 そのメンバーがM個の単一オペレーションを持っていれば人口爆発が起き、集合 上にN*M個の暗示的グループオペレーションがあることになる。これは、復帰 オブジェクトアイデンティティに対する全てのリスト復帰オペレーションを手に 入れ、オブジェクトアイデンティティのシーケンス上のグループオペレーション を提供することにより、N+Mにまで低減することができる。 性能集合は、そのメンバーが集合のフレンドであれば遥かに効率的である。し かし、フレンドパターンには幾つかの注意事項がある。フレンドは以下の速度改 善を可能とする。即ち、 − グループサイズをNとすれば、N−1のORB周回を約5(N−1)ms 節約でき、 − グループオペレーションがオブジェクトリファランスではなくオブジェク トアイデンティティを使えば、整理リファランスにおいて相当な時間、約Nms が節約でき、そして − IステートがRDBMS内に保持されていれば、大容量オペレーションを 使う高速オペレーションを実質的に得ることになる。何であれ性能集合を統合す るのは利益がありそうである。統合デレゲーションに対する一般的アプローチは 後に、フェデレーションパターンに関係して論議する。しかし、グループオペレ ーションの委任には特別な問題がある。グループオペレーションは、図7に示す ように、単一オペレーションのセットに非効率的に委任されるべきではない。む しろ、図8に示すように、グループオペレーションはグループオペレーションに 委任すべきであり、そのほうが効率的である。最初の集合はグループを、各々が 正確に一つの実行集合を目指す、グループのセットに分割する。こうすると、グ ループオペレーション性能が確実に維持できる。 ・フレンドパターン オブジェクトの1つの基本的な特性は「カプセル化」であり、オブジェクトの 状態は公にされたインタフェースを通してのみ利用できる。不都合にも、現在の CORBAインプリメンテーションのためにCORBAインタフェースを通して カプセル化されたオブジェクトにアクセスするのは比較的遅いオペレーションと なり、通常毎秒2−3百オペレーションしかできない。図9に示すように、フレ ンドパターン50は厳格なカプセル化モデルを緩和する。2つのオブジェクト5 1と52とは、53にカプセル化されているようにクライアントに見えればフレ ンドであるが、54との間ではカプセル化されているようには互いに見えない。 フレンドは、それを通してフレンドが通信するインタフェースが、公にされたC ORBAインタフェースよりも高速且つ充実するように設計されているので、有 用なパターンである。フレンドオブジェクトは性能のためにIステートを共有す るが、Nステートは共有しない。彼らは性能問題に取り組み、集合及びファクト リーパターンと共に働く。 フレンドの挙動の1例は、プリンターオブジェクトがそのIステートを記憶し ているデータベースにアクセスすることにより「オフラインにあるプリンターを 復帰させる」を実行するプリンター集合である。フレンドの挙動は対称である必 要はない。上の例を使えば、プリンターオブジェクトは決して集合Iステートに アクセスすることはない。オブジェクトは多くのタイプの多くのオブジェクトと フレンドになれる。もし複数のオブジェクトが同じプロセスで実行されれば、メ モリーに記憶されているIステートを共有することができる。複数のオブジェク トが同じディスクを共有すれば、データベース内に記憶されているIステートを 共有できる。正式には、ゲートウェイとそのメンバーは本来的にフレンドである が、フレンドインタフェースは異なるドメインにある。この論議ではこのどちら かといえば明白なケースを避け、代わりにフレンドが性能上の理由で使われると ころに焦点を当てる。 フレンドは、LSDOOから妥当な性能を抽出することにおいて重要なパター ンである。これは、フレンドインタフェースが、全体システムをその基本的OO 特性に保ちながら、CORBAインタフェースよりも数百倍高速で作動できるか らである。フレンドは純粋なOOコンセプトとは相容れないので、その利用は相 当な利益が付加される領域に限定すべきである。プル状態モデルを使用しての自 然集合上での探索オペレーション及び性能集合上での全オペレーションは、集合 とメンバーがフレンドであれば相当に早い。フレンドでなければ、これらのオペ レーションは、単純な非効率的なインプリメンテーションか、複雑で効率的なイ ンプリメンテーションかの何れかになる。フレンドであれば、単純で効率的なイ ンプリメンテーションが可能となる。 誰か一人が、与えられたシステム内で、オブジェクトのインプリメンテーショ ンに対し唯一責任を持っている場合、フレンドのコンセプトは全く制限とはなら ず、システムはOO及び純粋なCORBAを外から見る。他の開発者がシステム 内の幾つかのオブジェクトを実行するように期待される場合、それらの統合のポ イントも又純粋CORBAでなければならず、即ち、フレンド関係には依存しな い。しかし、システム内の全てのオブジェクトが互いに独立して再実行可能にな る必要性は滅多にない。 一緒にに実行されねばならないオブジェクトのグループは、拡張性境界のコン セプトである。境界の外ではオブジェクトは任意に取り替えることができ、境界 の内側では拘束がある。プリンター−PCシステムのハードウェアを同様に考え る。プリンターはPCの拡張性境界の外側にあるので、公にされたインタフェー スがあり、順応するプリンターであれば何ででもインプリメンテーションが受容 できる。今、カプセルに入ったユニットであるプリンター内のトナーカートリッ ジを考えるが、これは公になったインタフェースを持っておらず、異なるインプ リメンテーションと取り替えることはできない。トナーカートリッジはプリンタ ーの拡張性境界の内側にある。プリンター製造業者は協議してトナーカートリッ ジ工業の標準に合わせることもできるはずだが、そのような細かなレベルでの拡 張性価値はコストに値しないのであろう。LSDOO用語では、プリンターとト ナーカートリッジはフレンドで、プリンターとPCはそうではない。LSDOO システム内の全てのオブジェクトが独立して再実行可能であるのは現実的ではな く、プリンター内の全てのコンポーネントがそうであると期待するのも同じであ る。フレンドは拡張境界内のオブジェクトに対する候補インプリメンテーション である。 フレンドであるオブジェクトに対する外部インタフェースはその事実に影響さ れるべきではない。即ち、外からは、フレンドオブジェクトは純粋なCORBA オブジェクトと見えなければならない。フレンド間のインタフェースはインプリ メンテーションと関係づけて後に議論する。オブジェクトがたとえ純粋なCOR BAオブジェクトだと見えても、そこには更に以下の3つの独立性のレベルがあ りる。 − 依存、即ち、オブジェクトが、公にされたインタフェースを通しては全て の有効な値にセットできないNステートを有している場合、依存である。依存と いう用語は、オブジェクトに対する幾つかの非CORBAアクセスがあることを 意味し、これはある異なるドメインからのもの、或いはフレンドインタフェース を通しての他のオブジェクトからのものかもしれない。 − 弱い独立、即ち、全てのオペレーションが、原則的には、公にされたイン タフェースを通して行えるのであれば、2つのオブジェクトは弱い独立である。 実際には、そのインプリメンテーションは実用に耐えぬほど遅い。 − 強い独立、即ち、1つのオブジェクトが、システムの機能又は性能を変え ることなく新しいインプリメンテーションと置換できるのであれば、2つのオブ ジェクトは強い独立である。通常、拡張性境界内のオブジェクトは依存であり、 拡張性境界外のオブジェクトは強い独立である。 フレンドインタフェースを実行するには多くの技法がある。例を幾つか挙げる とそのアプローチは以下の通りである。 − 1つのオブジェクトはその状態をRDBMS内に記憶することができ、他 のオブジェクトはデータベースにアクセスできる。このアプローチは、自然集合 又は性能集合内のグループオペレーションで探索オペレーションを実行するのに は魅力的である。 − 複数のオブジェクトが、同じプロセス、又はプロセス間の共有メモリーの 何れかの中で、メモリー内状態を共有できる。 − オブジェクトはCORBAインタフェースを使用でき、クライアントとサー バーを同じプロセスにリンクすることによって高速を実現できる。これはなおフ レンドインタフェースであり、強い独立をサポートしていないことに注目された い。 弱い独立はインタフェース設計を通して達成される。強い独立は、インタフェ ース設計とインプリメンテーション設計を必要とする。強い独立には2つのアプ ローチがあり次の通りである。 − Add、即ち、集合は非フレンドの追加を許すadd()オペレーションをサ ポートする。それ故集合はフレンドと非フレンドが混じっている。平等なサービ ス品質を提供したいとすれば、効率的な非フレンドのインプリメンテーションを 構築せねばならず、そうすると、フレンドパターンを全部落とすことになる。 − フェデレート、即ち、集合は、異なる集合があなたの集合のオペレーショ ンの実行に参加することを許容するフェデレーションインタフェースをサポート する。これは強い独立を提供し、あなたの効率的且つ単純なフレンドインプリメ ンテーションを維持する。しかし、異なる開発者は今、メンバーと同じく集合の 部分を実行する負荷を負う。纏めると、2つのアプローチがあるように見えるが 「Add」アプローチは無意味なように思える。 IPルーターがIPポートを外部に見えるようにすれば同じ状況となるが、そ の中及びその間ではIPプロトコルを使う必要はない。先に論じたように、フレ ンドインタフェースは2つのオブジェクトに特権的な関係を与える。特権は他の 開発者のオブジェクトには使えないので、システムの拡張性は低減される。 ・パーティションパターン(又は分散モデル) 分散モデルは、性能、信頼性、システム内での操作性の問題点に取り組みなが ら、オブジェクトをどのように機器上にマッピングするかを記述する。CORB Aを使えば、クライアントはオブジェクトの位置を意識する必要はなく、ORB が、オブジェクトがどこにあっても、システムが働くことを保証する。分散モデ ルは以下のことを記述する。即ち、 − どのような機器がシステム内に存在するか、即ち、機器のタイプ、数、目 的、 − どのオブジェクトがどの機器上に在るか、即ち、集合、メンバー、レプリ カが機器上にどのように分散されているか、そして − どのようなデータフローが存在するか、即ち、機器の各ペア間でどれだけ のデータが伝送されているか、である。分散モデルは、メタモデル又は展開モデ ルの何れかとして存在する。展開された分散モデルは特定のカスタマーによって 実行される。メタ分散モデルは、システム設計者が配慮した展開モデルの完全な セットである。 システム設計者とコンポーネント設計者は共にメタ分散モデルを必要とする。 システム設計者は、ターゲットユーザーのニーズに応える詳細なモデルを必要と する。コンポーネント設計者は一般的モデルを必要とするだけであるが、コンポ ーネントが役に立つように展開できることを立証できるほどには詳細でなければ ならない。システム設計者はエンドユーザーに、実際には、大きなシステムバッ クグラウンドを持っていない展開分散モデルユーザーはこれを自分でやることを 期待しないであろうという設計をしていることを保証する責任がある。分散モデ ルなしでの成功は、LANを作り上げるのに、ケーブル、ハブ、ルーターをラン ダムに接続するのと同じように、殆どありえないことである。 コンポーネント開発者は、CORBAインタフェースを表に出して、メタモデ ルを展開モデルとして例示できるようにすべきである。システム開発者は、コマ ンドライン又は構成ファイルのように、CORBAインタフェース、又は他のイ ンタフェースの何れかを使用できる。分散モデルを設計する際には、以下のイン プリメンテーションの問題点を考慮しなければならない。即ち、 − 展開後成長パスを含めた最小及び最大のシステムサイズ、 − クライアントとサーバーとの間の、特別な識別及び利用結合におけるデー タフロー、 − バックアップ、ソフトウェアのアップグレード、機器の保守を含むシステ ム管理戦略、及び − 機器及びネットワーク損傷の影響、である。メタモデル、展開モデルは共 に、これらの相違はー般原理の中にあると考える必要がある。メタモデル設計は 集合、フェデレーション、複製、フレンドパターンを利用するために、システム オブジェクトモデル及びインタフェース設計と対話しなければならない。展開モ デル設計は機器、ネットワーク帯域幅、機器配置、システム構成、最終用途を選 定しなければならない。いろいろな根拠があってあまり詰めてやる必要はなく、 最大に展開されたシステムでも最小のものの10倍になることはあまりない。 分散モデルの抽象的ゴールは、所有権のコストを低減することである。ハード ウェア、ソフトウェアなどの所有権問題の明らかなコストを別にすれば、最大の 要素は管理であろう。管理コストに関する経験則によれば、1次推定ではコスト はデータベース機器の数に比例し、2次推定では構成しなければならないものの 数に比例する。多くの現行システムに対する分散モデルは数個のUI機器を持っ た1サーバー機器である。CORBAシステムを10から数百のサーバー機器上 に展開すると期待するのは妥当である。この水準を超えると脅威的な困難に遭遇 するであろう。 図10は1つの有用な分散モデルの例、対等クラスター分散モデル55を示し ており、これは以下の顕著な特徴を有している。即ち、 − 各クラスター内のマシンは特別な機能を有する、例えばデータベースマシ ン又はイベントハンドラーである。 − クラスター56、57、58は同等に機能的なピアである。 − エントリーレベルは1台のマシンを含む1台のクラスターを持つことにな り、クラスターにマシンを加えるか又はシステムにクラスターを加えるか何れか で展開のスケールを上げることができる。 − 多くのシステムの場合このモデルは、クラスターが10台程度、各クラス ターにマシンが10台程度までの規模となる。 − 管理コストが下がる理由は、以下の通りである。 (i)データベースマシンの数が通常はクラスターの数と等しい。 (ii)各クラスターは、自分自身に関する情報と対等者のアイデンティティ のみで構成される。 − 各クラスターは、相互に働き合う外部システム59、60、61の近くに 置かれる。 − ユーザー62、63、64は主に自分の近くのクラスター、59、60、 61と相互に働く。しかし、システム内の置かれたデータに対してアクセスを妨 げるものは何もない。 クラスターはパーティションのコンセプトを確立する。パーティションとは性 能を目的に物理的グルーピングを具体化する設計パターンである。これは、ドメ インの論理的コンセプト、即ち、種々の管理を目的にオブジェクトを論理的にグ ルーピングすることとは関係がない。現実世界の多くのシステムは対等クラスタ ーモデルを提示しており、例えば電話システムのスイッチは、既存のスイッチを 内部拡張するか又は新たなスイッチを加えるかの何れかにより、成長する内部構 造を持ったピアである。このクラスターモデルでマシンが100台以上になるこ とは滅多にない。 ・フェデレーションパターン フェデレーションにより集合はより秀れたサービスを提供すべく協力できるよ うになり、それによりシステムの性能と信頼性の問題が提起される。多くのオブ ジェクトは、自分のオペレーションを実行する時幾つか他のオブジェクトを使っ て権限を委譲する。集合はフェデレーションと呼ばれる特定の形式のデレゲーシ ョンを頻繁に使う。図11は統合集合65を示す。フェデレーションが起こるの は、集合オブジェクトのグループ(コンフェデレート66、67として知られる いる)が、個々の集合オブジェクトが提供するサービスよりも秀れたサービス、 即ち、速度、拡張性、信頼性の高いサービスを提供すべく協力するように設計さ れた時である。 ネームサーバーが統合集合のよい例である。各ネームサーバーはネームスペー スの一部を保有し、他のネームサーバーに対するポインタを有している。あるサ ーバーが要求に答えられない場合、そのサーバーは答えられるサーバーに権限を 委任する。特定の集合フェデレートがクライアントフェデレーションに対して利 害があるという事実は、集合のNステートモデルの一部である。例えばIPネー ムサーバーを使う場合クライアントには、全IPスペースの内のどの部分を探索 するか(Nステート範囲)が重要であり、どのように探索されるか(Iステート モデル)は重要でない。フェデレーションは又、 − トラスペアレント(透明)であり得る。この場合、クライアントはフェデ レーション達成に関与しない。統一サービスパターンはトラスペアレントフェデ レーションの特別なケースである。 − トランスルーセント(半透明)であり得る。この場合、クライアントはフ ェデレーション達成にある程度関与する。フェデレーションの別の特別な使用が 集合/ファクトリーオブジェクトに当てはまる。COSSライフサイクルには、 オブジェクトファクトリーに関するモデルが説明されており、共通のテーマは「 オ ブジェクトを何処に置くか」である。あるアプローチでは、オブジェクトをファ クトリーと同じ機器上に置くようクライアントに決めさせている。別のアプロー チでは、統合ファクトリーに決めさせているので、ファクトリーはクライアント には知られていないアルゴリズムに基づいて位置を共同で決めている。図12は 例えば、各コンフェデレート(72、73)が特定のIPアドレスマスクを扱う 見えない統合ファクトリー70を示しており、この場合例えば、各コンフェデレ ート(72、73)は特定のIPアドレスマスクを扱う。創造要求71はフェデ レーション70によって、正しいコンフェデレートへ委任される、本例では、コ ンフェデレート72からコンフェデレート73に委任され、コンフェデレート7 3は新たなオブジェクト75を返す。 フェデレーションは、システムが管理するオブジェクト数を増大させるための キーパターンである。システムが拡大されコンピュータがシステムに加えられる と、集合オブジェクトを更に加える必要がある。これはシステムを物理的インプ リメンテーションの必然的な結果である。しかし、クライアントは最大限まで物 理的インプリメンテーションの問題とは無関係でなければならない。フェデレー ションは1つの論理的集合のイルージョンを留めつつも複数の物理的オブジェク トを許容し矛盾を抑えることになる。以下の状況がフェデレーションの必要性を 示しており、プリンタ集合を使って以下のように示されている。 − 集合は複数のマシン上にメンバーを有している。これは、集合フェデレー ションを有する各マシン上のローカル集合を示している。ローカル集合は性能改 善用のフレンドインプリメンテーションを利用できる。例えば、あるプリンタ集 合がプリンタオブジェクトを有する各マシン上に存在すると、複数プリンタ集合 は探索を互いに委任する。 − クライアントは通常、特定サブセットのメンバーにアクセスするが、時に はそれ以上のアクセスをする。これは、フェデレートはグローバルデータにアク セスするが、集合はローカル化されたデータアクセスパタンを利用することを示 している。ドメインにしばしば関連しているローカル化されたアクセスは、管理 システムにはよく見られる。例えば、プリンタ集合オブジェクトは部門線上に組 織される。照会の多くは部門のプリンタ集合で回答できるが、必要なら回答は委 任される。 − 優雅故障が必要である、即ち、コンポーネント故障に直接影響されずにシ ステムが作動し続けるということである。これは、オペレーションを作動中のコ ンフェデレートに委任するフェデレーテッド集合があることを示している。例え ば、ある照会が作動していないプリンタ集合を要求すると、照会は回避されて部 分的結果が返される。 − 他の開発者による拡張性が必要である、特に、他の集合が非常に異なるイ ンプリメンテーションを有している場合がこれに当たる。これは、それぞれのイ ンプリメンテーションを提供する異なる開発者を有する統合集合を示している。 例えば、IPの統合集合と共通管理インタフェースサービス(CMIS)で管理 される(複数の)プリンタの場合、各集合は各々のプロトコルで要求を発し、応 答をCORBA返却値に翻訳する フェデレーションは集合インタフェースから自然に来ることが可能である。例 えばCOSSネームサービスの場合、ネームコンテキストオブジェクトは集合で あり、resolve()オペレーションは正規インタフェイスを使って他方のネームコ ンテキストオブジェクトへ委任する。自然インタフェイスは、通常、ワーム、ツ リー降順、指名のデレゲーションインプリメンテーションに関連している。特別 なフェデレーションインタフェイスを時に必要とするが、これは同報通信デレゲ ーションのインプリメンテーション通常関連している。 インタフェイスは、フェデレーションの実行に影響する情報でクライアントが 入手し得なくて、当該情報を集合に与えるのが難しくないのであれば、トランス ペアレントフェデレーション(トランスルーセントフェでレーションよりも)を 支援すべきである。フェデレーションはコンフェデレートが共同で実行するアル ゴリズムであり、オブジェクト間のコミュニケーションを意味する。従って、フ ェデレーションとそれに付随するアルゴリズムは集合のNステートモデルの一部 であり、単なるIステート問題ではない。明らかに、見えないように統合された サービスはコンフェデレートとコンフェデレート以外という2つのタイプのクラ イアントを有しているが、コンフェデレートしかフェデレーションのアルゴリズ ムに興味を示さないであろう。従って、コンフェデレート上に一般的なインタフ ェイスとフェデレーションインタフェイスを持つと更にはっきりする。図13に 2つのコンフェデレート71、72の間に存在するコンフェデレーションインタ フェイス70を示すが、両インタフェイスは一般的インタフェイス73、クライ アントインタフェイス74とは異なる。 インプリメンテーションを考えると、複数機器の場合には、集合は全て統合さ れていなければならないのが恐らく本当であろう。フェデレーションにより、コ スト殆どなしで多くの利益が得られる。しかしインプリメンテーションが所望の 目的を達成するのを保証するため、フェデレーションの目的を注意深く(性能、 信頼性、その他)考えるべきである。フェデレーションを実行する際の主な問題 は「委任をどう達成するか」である。委任の手法例としては、ツリー降順、ワー ム、指名、同報通信等のデレゲーションがある。 − ツリー降順デレゲーションの場合、メンバーは自然ツリー構造を持ってい る必要がある。集合は木を下ることで他のコンフェデレートに委任する。例えば M.3100ネットワークレプリゼンテーション中に完全に識別された名前(F DN)レゾルーション、ツリー降順は予見可能で受け入れ可能な性能を有してい る。 − ワームデレケーションの場合、メンバーが一般的なグラフとして相互接続 される必要がある。集合は、グラフ中のノードをトラバースすること、例えばネ ットワークルーティング用の「最短パスアルゴリズム」によって委任する。ワー ムに影響する問題として、サイクル検出、ゴール探索、予測不能最悪ケースでの 性能を挙げることができる。 − 指名デレゲーションは、委任するコンフェデレートが委任されるコンフェ デレートを直接識別できる場合である。これは分割された問題で頻繁に起こる。 例えば、電話番号は多くのディレクトリに分けることができ、調べれば任意の番 号を正しいディレクトリにデレゲートさせることができる。指名デレゲーション では、予測可能で満足な性能が発揮される。 − 同報通信デレゲーションは、委任するコンフェデレートが委任される特定 のコンフェデレートを識別できない場合であり、従って唯一の解決策はコンフェ デレート全てに委任し応答を集めることである。例えば統合警報ログでは、過去 5分間に同報通信されるべく起きた警報を照会により探す必要がある。同報通信 デレゲーションの性能は予測できるが貧弱である。こうしたデレゲーション手法 は全て、優雅故障を提示できる。ツリー降順、指名の両デレゲーションはオペレ ーション全てを実行済みであると証明している点で権威がより高い。ワーム、同 報通信の両デレゲーションは解の一部でないメンバーにより影響されるので、こ れらのアルゴリズムは時には部分的実行を不正確に報告する。シングルポイント の故障を避けるため、指名、同報通信の両フェデレーションは、オペレーション が実行されるべき集合オブジェクトの選択をクライアントに提供すべきである。 詳細は下記の統一サービスパタンの説明を参照されたい。 上記説明から得られる結論の一部を以下に示す。 − ツリー降順デレゲーションは終始良好な性能を示す。 − ワームデレゲーションは特に貧弱な性能を示す場合があるが、問題によっ ては良好な性能を示す。例えば電話通信ネットワークは任意の2つの終端点間で 短路パス(5ホップス以下)を持つよう設計されているが、ワームはこうしたネ ットワークで最短パスを見つけるのに優れた性能を示す。 − 指名デレゲーションは良好な性能を示すが、各コンフェデレートを訪問す る必要がないように問題を分けられるのが条件である。システムが大きくなるに 連れ、この必要性が増し真実味も増すようである。例えば、プリンタ集合オブジ ェクトが3つあり、読者が持っている300台の内の殆どに特定の照会をする場 合、指名デレゲーションなら依然として3台にしか照会をしないであろう。 − 同報通信デレゲーションは一定の時間内に応答するが、非常に上手く判断 する訳ではない。「どう委任するか」の質問後に「誰へか」と言う質問がくる。 ワームとツリー降順の両デレゲーションの手法は通常、メンバーと集合インタフ ェイスに含まれているデレゲーションターゲットを有している。例えば、COS Sネーミングは、Nステートコンセプトであるコンテキストネームに基づいて、 委任する。 同報通信デレゲーションは全コンフェデレートに対し単純なソルーションデレ ゲートを有する。唯一必要となるのは、コンフェデレートが互いに自分の存在を 知らせ合う方法である。複製登録が良好な手法となる。指名デレゲーションでは もっと複雑となり、3つに分けるのが可能である。 − 誰がコンフェデレートか? 同報通信デレゲーションに関しては、登録ベ ースとするのが良好な手法である。 − スペースをどう分割するか? 自然鍵(例えばFDN)、代用鍵(例えば 分割されたシークケンス番号)の何れかに基づいた分割ルールが必要となる。良 好な管理では、各コンフェデレートに固有のパーティションルールを記憶させる 必要がある。他者は必要に応じて固有のルールを問い合わせるようにすれば、全 体構成ベースに対する必要性が避けられる。 − スペースにキーをどう付けるか? オペレーションで鍵を明らかにする、例 えばオブジェクトアイデンティ又は他の鍵を回覧する。 同報通信デレゲーションに影響する微妙な問題は、再同報通信をすることなく その時に知る必要のある対等者に対し初期のコンフェデレート同報通信をループ することである。解決策は多いが一部の解決策はクライアントのインタフェイス を汚す。最善の手法は、インプリメンテーションが再同報通信しない特定インタ フェイスを使うことである。効率的なデレゲーションは分散システムに対し一般 に重要である。これは、オブジェクト鍵とアイデンティティに影響するため、一 度決めると変更しにくい設計上の決定である。やり方が拙いとスケールとフェデ レートの能力を制限することになる。上記議論は幾つかのインプリメンテーショ ン手法では確認済みであるが、特定のシステムに対しては徹底的な分析が必要で ある。 フェデレーションパタンへとの類似性は、DNS又はX.500のようなネー ムサービスで、単純な照会に答えられるヘルプデスクで引き出してもよく、何故 なら、より複雑な照会はもっと経験を積んだスタッフに委任され、欠陥は開発技 術者に送られるからである。 私的なフェデレーションインタフェイスを持つことは魅力的であり、私的なフ ェデレーションインタフェイスはコンフェデレートを分散フレンドにすることに なる。私的なフェデレーションインタフェイスはフレンドの強力な独立特性を壊 すことになる。従って、私的なフェデレーションインタフェイスはある製品に対 しては許容できることだが、再使用可能なプラットホームコンポーネントには滅 多に許容できない。システムは同報通信の使用を最小限にしかつワームの性能を 有するよう設計されるべきとするのが好ましい。地球規模の範囲の照会に答えら れるフェデレーテッド集合を設計することが、魅力的である。これは必要とする 機器又はクラスターが10台までのシステムでは許容できる。10台を超すシス テムでは上手くゆかない。詳細は分散モデルパタンについて述べた節を参照され たい。非CORBAフェデレーションスキームを設計することができる。データ ベーススキームを公にする手法である。この低コスト機構はフレンド関係である ので、それ故にオブジェクトカプセル封入違反に関係した生まれつきの制約条件 を抱えている。 ・統一パターンサービス 統一サービスパタンとは、使いやすく信頼性のある統合集合であり、従ってフ レンドパターン、集合パターン、フェデレーションパターンと共に働く。統合集 合の望ましい特性を挙げると以下の通りである。 − ユーザーに気付かれずに統合される。 − サービスネームのみに基づいてクライアントがコンフェデレートを得るた めの機構がある場合。 − 全コンフェデレーツが任意のオペレーションに対し、速度のみを例外とし て全く同じ応答をする場合。 − クライアントに返却されたコンフェデレートが、許容可能な(恐らく良好 な)性能を持ってねばならない場合。 − クライアントは、あるコンフェデレートで失敗しても他のコンフェデレー トを得られる場合。こうした特性により統一サービスには信頼性と便利性が備わ る。 同報通信又は指名のデレゲーション76を使って実行されるどの統合サービス も統一サービスでなければならない。統一サービス75は、サービスネームに基 づいてコンフェデレート76を選択しコンフェデレート77を再選択するための インタフェイス78を有している。統一サービスは図14に示されるように、統 合サービスに対する前置き方式のものとして作られている。前置き方式では、利 用可能な中から「最善」のコンフェデレート79を選択する能力が必要である。 これをトレーダーオペレーションとして実行することが魅力的である。しかし、 ただ一つの故障点でもこの手法を制限する可能性がある。「最善」の実行には以 下の点を考慮すべきである。 − 作動していないコンフェデレートは「最善」でない。 − コンフェデレートへの負荷量は少ない方がよい。 − ネットワーク遅延が短く、帯域幅連結性が高いコンフェデレートの方がよ い。 チケットエージェンシーは統一サービスに似ている。チケットエージェンシー は多くのコンフェデレーツ(予約クラーク)を有する、コンフェデレートセレク タ(電話ディレクトリと呼び出し分配器)がある、全コンフェデレートは同じサ ービスを提供できる(一部は速度が遅いが)、1つのコンフェデレートが故障して もサービスに何ら影響しない、等の点である。ツリー降順とワームの委任フェデ レーションはあるメンバー上でオペレーションを実行するのであり一般には統一 サービスのための候補でないことに留意するべきである。 図15は、クライアント/サーバー80中での統一統合サーバーのオペレーシ ョンを示す。クライアント82、第1サーバー83、第2サーバー84、サービ スファインダ85と通信するORB81が備えられている。サービスファインダ のサービスのオペレーションを以下に詳述する。エンティティA、B、Cは第1 サーバー83から、エンティティD、Eは第2サーバー84から利用できる。統 一統合サーバーである第1、第2の両サーバーの作動例は以下の通りである。 1.クライアント82がサービスファインダ85にサーバー(特定のサービスを 支援する)を要求すると、サービスファインダは第1サーバー83を戻す。 2.クライアント82は第1サーバー83上にオペレーションを呼び出す。 3.第1サーバー83は第2サーバー84上にオペレーションを呼び出すが、理 由は第1サーバー83が要求全体を果たせないからである。 4.第1サーバー83が結果(エンティティE)をクライアント82に戻すと、 次にクライアント82はエンティティE上にオペレーションを呼び出す。機能的考察 本節では、ORBマスターが生成するサービスの機能的考察について述べる。 ORBマスター・アーキテクチュアは、全サービスによって行われる共通の機能 があることを認識しており、それら共通の機能はアーキテクチュアによりアドレ スされる。多くの場合に、それらは生成されたコードまたはライブラリコードに より完璧に実行される。共通機能は以下のカテゴリー、即ち − 分散管理 − グループオペレーション − クライアント/サーバ対話の管理 − コンポーネントオブジェクトのライフサイクル にグループ分けされる。上記サービスへの導入部で説明したように、これらの機 能はサービスマネジャー・オブジェクトにより実行される。 ・分散管理 ORBマスター・アーキテクチュアにおいて、全サービスマネジャーは一体化 されたサービスプロバイダーである。これは、サービスにより採用される分散モ デルの詳細が当該サービスのクライアントから隠されているということである。 一体化されたサービス設計パターンのおかげで、クライアントは、全コンポーネ ントオブジェクトを、それらが分散していることとは無関係に、単一の集合に属 するものとして扱うことができる。この単一集合的考察を提供できるようにする ために、全サービスマネジャーは以下のインターフェースをサポートせねばなら ない。即ち、 「導出する」 OIDを与えられると、オブジェクトのリファランスを戻すか 、ORBMasterIDL::NoSuchObjectという例外を戻す。 更に、サービスマネジャーはクライアントがコンポーネントオブジェクトを創 造できるようにしている。即ち、 「創造する」 (少なくとも)読み出しのみという属性を与えられ(サービスが OIDを生成できる場合にはこれを除く)、新しいオブジェクト を創造するか、ORBMasterIDL::ObjectAlreadyExistsという例外 をリターンする。 備考:これらのインターフェースはORBマスターが生成するアクセスレイヤー 内にカプセル化されており、概要は図3を参照されたい。 システム開発ツールは、分散モデルのためにコンポーネントオブジェクトの複 製とコンポーネントオブジェクトの分割の両方をサポートする。コンポーネント オブジェクトが複製されると、それらの状態は提供されるサービスにつきサービ スマネジャーの内の2つ以上により記憶される。ORBマスター・アーキテクチ ュアは、オブジェクト・アイデンティティーのコンセプトをオブジェクトインプ リメンテーションから分離することにより、オブジェクトの複製を可能にしてい る。システム開発ツールの最新の実施例では、オブジェクトの状態を複製するた めの直接サポートは提供されていない。しかしながら、この目的のために、OR Bマスターファイル複製サービスがサービス開発者により使用されることができ る。システム開発ツールの他の実施例では、複製に関してより多くのサポートを 提供している。コンポーネントオブジェクトが分割されると、それらの状態はた った1つのサービスマネジャーにより記憶される。これらのサービスに関して、 2つの関連問題、即ちOID導出及びコンポーネントオブジェクト配置管理を説 明せねばならない。 分割されたコンポーネントオブジェクトのための(OIDからオブジェクトリ ファランスまでをマッピングしている)OID導出は、論理的には2段階プロセ スである。まず、権限のあるサービスマネジャーを見つけて、その権限のあるサ ービスマネジャーにOIDを導出するように、或いはMasterIDL::NoSuchObject という例外を戻すように頼む。サービスマネジャーは、他のサービスマネジャー に照会せずに、OIDがサービスのコンポーネントオブジェクトを表しているか どうかを判定できるなら、OIDに関して権限を有することになる。権限を有す るサービスマネジャーはまた、(当該サービスがオブジェクトの創造をサポート する場合)権限を持つ対象となるコンポーネントオブジェクトを創造する。 オブジェクト分割が用いられるとき、オブジェクト導出はオブジェクト登録ツ リーを基にする。オブジェクト登録ツリーは、それらノードが、自身が根となる サブツリーに対する権限を代表しているツリーである。それらノードには結びつ いた名前があり、OIDはコンポーネントがこれらの名前に対応する構造を持つ 名前である。OIDは、図16に示すように、オブジェクト登録ツリー90のノ ードに対応するものより多くのコンポーネントを有してもよい。 サービス名、チャンク名、及び身分証という3つのコンポーネントから成るO IDを例にとると、OID=「プリンター/チャンク2/123/24」である。 本実施例のオブジェクト登録ツリーは深さ2であるが、他の実施例では任意のO ID及びいかなる深さのオブジェクト登録ツリーをサポートしてもよい。OID は、共通の根91に対して限定された絶対的な名前である。間近のノード92及 び93は、例えば「プリンター」ノード92というサービス名により、サービスを 効率良くグループに分ける。オブジェクト登録ツリーの葉ノード94、95、9 6、97は、導出オペレーション及び(当該サービスがサポートするなら)創造オ ペレーションをサポートするサービスマネジャーである。 ORBマスターが生成するサービスは、それらのユーザー(一般的にはシステ ム管理者の役割を演じているユーザーのみ)に対して、コンポーネントオブジェ クトがどこに置かれるかを2つの方法、即ち、 − どのサービスもクライアントがコンポーネントオブジェクトを創造できる ようにしている訳ではないが、何れのサービスマネジャーが、所定のコンポーネ ントオブジェクト(これは分割ルールを用いて表される)を創造するのかを特定す ることにより、そして − コンポーネントオブジェクトが創造された後それらを移動させて、オブジ ェクト登録ツリーのノードが、CosLifeCycle::LifeCycleObject::moveというオ ペレーションをサポートするオブジェクトとなり、ひいてはコンポーネントオブ ジェクトのグループをそれらのOIDに基づき移動させることができるようにな ることにより、 規定するために、サポートを提供する。 分割ルールは、オブジェクトがオブジェクト登録ツリーの葉ノードに結びつい た名前に創造されるとき、オブジェクトに与えられる属性のサブセット用の値か らマッピングを定義する。 創造オペレーションに対する属性の1つがOIDである場合、仮に分割ルール がマップするオブジェクト登録ツリーの同じノードに対して導出もしないOID でオペレーションが発動されたなら、それはエラーである。分割コンポーネント オブジェクトのオブジェクト創造(がサポートされる場合)は、論理的に2段階の プロセス、即ち、 − 分割ルールがマッピングする、権限を有するサービスマネジャーを見つけ そして、 − そのサービスマネジャーに、新しいオブジェクトを創造して、そのオブジ ェクトリファランスを、或いは当該オブジェクトが既に存在している場合には、 ORBMasterIDL::ObjectAlreadyExistsという例外を戻すように頼むこと、 である。 ・グループオペレーション グループオペレーションは、2つ以上のコンポーネントオブジェクトに用いる オペレーションである。グループオペレーションが特定して実施されるオブジェ クトのセットは、オペレーションの範囲として知られている。グループオペレー ションは、コンポーネントオブジェクトよりむしろサービスマネジャーによりサ ポートされる。グループオペレーションは、以下の基準、即ち、 − 範囲の定義 − 部分的完了へのサポート − 委任方法 − 処理行動 に従い分類される。 グループオペレーションの範囲は明示的または暗示的の何れかで定義される。 明示的に定義されたグループオペレーションは、サービスのコンポーネントオブ ジェクトによりサポートされる下層のオペレーションに基づいており、その範囲 のオブジェクト毎に下層のコンポーネントオブジェクトオペレーションを発動す ることに相当し、それらの範囲はオペレーションに対するパラメータ(OIDの リスト)により明示的に定義されており、インプリメンテーションの効率性とい う理由のためにだけ存在しており、それらのインターフェースは開発者が規定す る下層のコンポーネントオブジェクトインターフェースに基づきシステム開発ツ ールにより生成されている。一方、暗示的に定義されるグループオペレーション は、個別のコンポーネントオブジェクトに関する下層のオペレーションに基づい ておらず、それらの範囲は当該サービスがサービスのコンポーネントオブジェク ト全てに対してクライアントの規定するフィルターを使用することにより求めら れるもので、(インプリメンテーションの効率性という理由ではなく)開発者によ り識別される問題定義域意味論を実行するという理由から存在し、それらのイン ターフェースは開発者規定のインターフェースに基づくシステム開発ツールによ り部分的に生成されるというものである。暗示的に定義されたグループオペレー ションは照合インターフェースであるのが一般的である。 コードジェネレータは、開発者規定のコンポーネントオブジェクトインターフ ェースから暗示的定義範囲グループオペレーション用のインターフェースを生成 する。グループオペレーション規模で使用されるコンポーネントオブジェクトイ ンターフェースは、 − リターン無効で、 − どのようなタイプのパラメータにおいてもゼロ或いはそれ以上を有し、 − どのようなタイプをも戻すことのできるオプションのアウトパラメータを 有し、 − それらのデータ内容として、ORBMasterIDL::ReturnCodeという構成を含ん だユーザ一例外のみを起こす、 ことが望ましい。 コンポーネントオペレーションは従って、以下の形式になる。 ここに、 <interface>は、開発者により定義されたコンポーネントオブジェクトインタ ーフェースの名前、 <baseoperation>は、コンポーネントオブジェクトに関して開発者が定義した 下層のオペレーション、 <in arg list>は、インパラメータのオペレーションリスト、 <result type>は、アウトパラメータのタイプ、 <out param>は、オプションのアウトパラメータ、 <exception list>はオペレーションにより起きるユーザー例外のオプションの リスト、 である。 システム開発ツールにより生成されるIDLの一例は以下の通りである。 1.ストラクチャ(<interface>を含むモジュールの範囲において): ここに、 validは、当該構造の他のフィールド(常時有効であるrcを除く)が有効であ るかどうかを示し、 <out param>は、oidにより識別されるオブジェクトに付随してリターンされる 値、(<base operation>がアウトパラメータを有する場合のみ存在する)、 oidは、構造がその結果を保持するオブジェクトのOID、そして、 rcは、コンポーネントオブジェクトによりリターンされるであろう例外を表し ている。 2.<interface><base operation>Resultのシーケンスを定義するtypedef: 3.(サービスマネジャーインターフェースに関して定義された)オペレーション : ここに、 oidsは、オペレーションの範囲、 <in arg list>は、<base operation>によりサポートされるパラメータのオプ ションのリスト、 resultsは、オペレーション用に得た結果のリスト、 である。 グループオペレーションを生成するため、開発者がシステム開発ツールを必要 とする対象である、コンポーネントオブジェクトオペレーションgetNameの例を 以下に示す。 この例については、システム開発ツールは以下に示す追加的IDLを生成する 。 上で定義されたIDLインターフェースをカプセル化するC++、CAL、及 びSALインターフェースクラスは、以後「アクセスレイヤー」の節で示す例の中 で説明する。暗示的に定義された範囲を有するオペレーションは、開発者により 定義され、システム開発ツールに対しては暗示的に範囲を定められたグループオ ペレーションとして識別される。 グループオペレーションはまた部分的な完了をサポートする。これは、オペレ ーションを実行するサービスは、当該範囲の全オブジェクトに対してオペレーシ ョンが適用されるよう全力を尽くすであろうということである。そのサービスに 利用されるものには、オペレーションが適用されるであろう。範囲内のオブジェ クトに接触できないときには、クライアントは報告を受けることが望ましい。暗 示的に範囲が定められたグループオペレーションの場合には、サービスがコンポ ーネントオブジェクトを分割し、どのオブジェクトが実際に範囲に入るのか判断 できなくなるので(例えば、仮にオペレーション実行時、ある分割が利用できな くなる)、これは不可能である。明示的に範囲が定められたグループオペレーシ ョンについては、システム開発ツールは、サービスが利用できない各オブジェク トに関連づけてObjectUnavailableというリターンコードを戻すことを必要条件 とする。暗示的に範囲が定められたグループオペレーションについては、システ ム開発ツールは、サービスがORBMasterIDL::ResultAuthorityタイプのパラメ ータを結果に付随させて戻すことを必要条件とする。 委任方法には以下に簡単に説明するもの、即ち、 − 複製されたコンポーネントオブジェクトに基づくサービスに関するオペレ ーションのみに適用される方法は無い、 − 分割されたコンポーネントオブジェクトに基づくサービスに関するオペレ ーション及び暗示的に範囲を定められたグループオペレーションのみに適用され るよう指向性を持たせる方法、 − 分割されたコンポーネントオブジェクトに基づくサービスに関するオペレ ーションのみと、明示的に範囲を定められたグループオペレーション及び暗示的 に範囲を定められたグループオペレーションの両方に適用されるよう拡大した方 法、 が含まれる。処理的オペレーションはORBマスターの他の実施例によりサポー トされることになっている。 ・クライアント/サーバ対話(結果イテレイター)の管理 照会であるグループオペレーションは、個別「結果」のリストをそれらのクライ アントに戻すのが普通である。これらの照会が、照会毎にIDLオペレーション を使用して実行されるなら、次のような、 − 照会クライアントは、何らかの「結果」が入手可能となる前に全ての「結果」 を受信するための必要条件であるメモリを配置せねばならない、 − 照会クライアントは、全体的なオペレーションが完了するまでは「結果」の 内のいくつかについて処理を始めることはできない、 ということになる。結果イテレイターは、これらの問題を解決するために使用さ れる標準設計パターンである。この設計パターンはこれらのインターフェース、 即ちテンプレート化されたクラスと、ORBマスターライブラリの部分を形成す るORBMaster::ResultIterator<class T>と、ORBが生成し且つテンプレート 化されたクラスを使用するエージェントクラスとを限定するIDL用の標準形式 を採っている。 システム開発ツール結果イテレイター設計パターンは、照会を実行するために 3通りのIDLオペレーション、即ち、 1.結果の第1バッチを戻すオペレーション、 2.結果のその次のバッチを戻すオペレーション、 3.クライアントが照会に興味を無くしたことを通知するためのオペレーション 取り消し、 を使用する。結果のバッチは、クライアントが規定した数以下の個別結果を含ん だセットである。サーバは、以下に述べるように、結果の実際の数をバッチで確 定する。 − 以下の何れかのことが起きるまで、即ち、 (i)少なくとも1つの結果が入手できる、或いは、 (ii)入手できる全データがサーチされたとサーバが確定する、 までは第1バッチブロックを戻し、次に入手できるそれら結果を戻す(が、 クライアントが規定した数を超えない)というオペレーション。サーバは、 クライアントが照会のための識別子として使用するresultIDを出力する。サ ーバはまた、入手できる全データがサーバにより探索されたとき、真に設定 されるブールのisLastも出力する。 次のバッチを戻すオペレーションは、resultIDを入力として採る以外は、同様に 行われる。一旦、1つの結果がクライアントに戻されると、各結果がたった1回 限り戻されるようにするため、それはサーバにより破棄される。オペレーション 取り消しは、本質的には、クライアントが照会にもはや興味を持っていないこと のサーバへの通知である。これ以外のセマンティックスは有していない。サーバ はこの通知を使用して、照会実行のためにそれが配置されていたリソースをリリ ースする。 以下の例は、非常に長い列のリストを戻す、getAllの照会を示している。結果イテレイターを利用するために、この照会は以下のオペレーションにより実 行される。 ・ライフサイクル管理 クライアントがコンポーネントオブジェクトを創造できるようにしているサー ビスもあれば、そうでないサービスもある。クライアントがコンポーネントオブ ジェクトを創造できるなら、オブジェクト創造時、すでにそれの読み出しのみと いう属性の全てが定義されていなければならない。これは、創造オペレーション が、入力値としてそれらの属性全ての値を採るか、そうでなければサーバがそれ らを生成するかせねばならない、ということを意味している。一般的には、サー バにより生成される読み出しのみという属性だけがOIDである。従って、OI Dは創造オペレーションに対する入力パラメータとしてクライアントにより規定 されるか、或いは創造オペレーションのインプリメンテーションの一部としてサ ーバにより生成されるかの何れかである。アクセスレイヤー クライアントアクセスレイヤー(CAL)は、サービスを実行するオブジェクト にアクセスするのに必要なコードからアプリケーションコードを分離させる。C ALとアプリケーションコードの間のインターフェースは、サービス用のIDL から生成されるC++クラスの何れも公開しない。同様に、ORBマスター・サ ーバ・アクセスレイヤー(SAL)は、アクセスするために、IDLが生成するコ ードからアプリケーションコードを分離させる。好適実施例のCAL及びSAL について以下により詳細を述べる。クライアントアクセスレイヤー (CAL) クライアントアプリケーションコードとCAL間のインターフェースを提供す るクラスは、 − サービスを実行する分散型オブジェクトにアクセスするために使用される エージェントクラス、及び − エージェントクラスにより扱われるデータ構造を表現するクラスと、から 成る。エージェントクラスは、アプリケーションコードからIDLが生成したコ ードを分離させるため、且つオブジェクトを完全にカプセル化する、即ちオブジ ェクトのアイデンティティーとそのインターフェースとそれのインプリメンテー ション(複数インプリメンテーション)をアドレスするための方法をカプセル化 するため、という2つの主目的を担う。実際は、エージェントクラス及びサポー トするデータ構造は、IDLについての代替C++マッピングである。次の副節 では、非標準代替C++IDLマッピングを導入するための位置調整について説 明する。 ・IDLのための代替C++結合を提供するための位置調整 代替C++IDLマッピングの提供のために2つの主要な位置調整がある。 1.開発者には、彼らがCORBAサービスの熟達した開発者となる前に多大な トレーニングが必要で、彼らにアクセスするクライアントコードも必要である。 (a)CAL及びSALに対してインターフェースを定義するクラスは(標準 C++IDLマッピングとは異なり)、ANSIC++という標準テン プレートライブラリを使用する。これは、C++に熟達した開発者は既 にインターフェースの主要部分であるデータ構造を理解しているという ことを意味する。 (b)標準IDLマッピングは、オプションの数をより少なくしてより単純化 することによって、タスクを行う2つ以上のやり方を提示して(例えば 、メモリ管理用に2つ以上のモデルがある)おり、必然的に前記SAL とCALインターフェースクラスは使用がより簡単になる。 (c)標準IDLマッピングはより複雑なコンセプト(例えば、標準オブジェ クトリファランスは、システム開発ツールエージェントクラスよりもよ り複雑なコンセプトである)をユーザーに公開する。 2.IDLのための標準C++マッピングは、オブジェクトアイデンティティー 及びオブジェクトの可動性をアドレスしない。 (a)CORBAオブジェクトリファランスは、一様性のために比較を行わな い。 (b)CORBAオブジェクトリファランスは、変更(例えば、あるサーバに より実行中のオブジェクトが他のサーバに移動する)してもよい。 (c)CORBAオブジェクトリファランスは、あまりに大きいのでオブジェ クトを持続的に記憶するためのデータベースキーとして使用するには適 していない。 ・代替IDL結合 IDLのための代わりのクライアント側マッピングは、マッピングルールのセ ットに従い開発される。これらのルールは、普通以下の通りである。 1.各IDLインターフェースに、C++エージェントクラスが与えられる。C ++エージェントクラスの名前は<IDL module>_<IDL interface>Agentである 。 2.エージェントクラスの継承(公開仮想)はIDLインターフェースの継承を映 し出し、例えば、 である。 3.エージェントクラスは、対応するインターフェースについて各IDLが定義 したオペレーションのための方法を含んでいる。これらのオペレーション全ては OVEエラーを戻し、IDLコンパイラにより生成されるデータタイプではなく STLデータタイプを使用する。 4.エージェントクラスは、割り当て演算子と、ORBMaster_Agentに関してと同 じセマンティックスを有するコピーコンストラクターを提供する。 5.IDLが定義したstructsはC++クラスとして表現される。これらのクラ スのためのネーミング変換は、(IDL structの範囲により異なるが)、 <IDL module>_<IDL interface>_<Structurename>;又は、 <IDL module>_<Structure name> である。 6.IDL constructs管理を表現するクラスはそれら自身のメモリを管理し、 それらのデータメンバー全てのための初期値を提供するコンストラクタを有して いる。構築に際して、それらは提供されたデータメンバーの全てをコピーする。 それらは、割り当て演算子及びソースオブジェクトの深いコピーを生み出すコピ ーコンストラクタをサポートする。 ・エージェントクラス これらのエージェントクラスの例は、オブジェクトのクライアントの立場から 見た分散型オブジェクトを表している。エージェントオブジェクトは、常時それ らが表現する分散されたオブジェクトのOIDを含んでいる。コンポーネントオ ブジェクト用のエージェントの場合には、これはコンポーネントオブジェクトの OIDであり、サービスマネジャーオブジェクト用のエージェントの場合には、 これはサービス名である。オブジェクトにアクセスするためにエージェントが使 用されるとき、当該オブジェクトのためのCORBAオブジェクトリファランス も提示されねばならない。エージェントクラスは、必要時これらのオブジェクト リファランスを入手する。エージェントクラスの事例は、以下の方法、即ち、 − OIDを表現する列にそれらを結びつける、 − 同じオブジェクトを同時に両方のエージェントが代表するという割り当て に従い、エージェントを次から次へと割り当てる、 − 同じオブジェクトを同時に両方のエージェントが代表するという構築に従 い、別のエージェントをソースとして利用しながらある1つのエージェントを構 築する、 − それらを(アプリケーションコードではなくCAL及びSAL内のコード に対してのみ使える)CORBAオブジェクトリファランスに結びつける、 により、分散型オブジェクトに結合される。 必要時に、CORBAオブジェクトリファランスが提示されないなら、エージ ェントが、適当なCORBAオブジェクトリファランスに対してOIDを自動的 に導出する。エージェントクラスはまたシステム例外の妨害も行い、それらが発 生するとCORBAオブジェクトリファランスに対してOIDを再導出する。こ れにより、オブジェクトのクライアントによる介入なしに、異なるオブジェクト のインプリメンテーションにアクセスするために同じエージェントを使用するこ とができる。これは、以下のような事例、即ち、 − 負荷の均衡を図るためにオブジェクトが管理者により動かされる、 − オブジェクトのある1つの複製コピーが失敗し、自動的に別物に取り換え られる、 という事例においては有効である。自動的導出が首尾良くいかない場合にのみエ ラー表示がクライアントに戻される。 エージェントクラスの目的は、CORBAに従属するコードとアプリケーショ ンコードを明確に分離させることである。この分離の結果として、CORBAヘ ッダーファイルも、又IDLコンパイラにより生成されるヘッダーファイルも、 エージェントクラス用のヘッダーファイルに含まれない。(明らかにORBコー ドに依存している)エージェントクラスのインプリメンテーションは、各エージ ェントクラスが、隠されたアクセスレイヤー(アクセスレイヤークラスヘッダー ファイルは一般使用に対しては提供されず、クライアントとサーバアクセスレイ ヤー内の内的使用にのみ利用できる)という事例に対するポインターである私的 データメンバーを含むことにより、隠蔽される。以下のクラスは、ORBMaster_A gentというエージェントパラダイムをサポートするため、実施例のORBマスタ ー・サポート・ライブラリの一部として提供されており、2つの目的、即ち − 例えば全エージェントクラスの共通性をカプセル化するORBマスターサ ーバにより実行される特定オブジェクト用のエージェントクラスにより限定され る基本クラス、及び − ORBマスターサーバにより実行されるどのようなオブジェクトをも表す ために使用できる、 という目的を担っている。 このクラスは、開発者によりアクセスされるもので、以下のようなマンページが そのために含まれている。 システム開発ツールはまた、ORBMaster_Agentから継承する特定のエージェント クラスを(IDLから)生成する。システム開発ツールは、これらのエージェント クラスを、それらを完璧に実行して生成する。ORBMaster_Agentクラスにのよう に、特定のエージェントクラスは隠されたアクセスレイヤーオブジェクトを含ん でいる。これらは、同様にCORBAオブジェクトリファランスを含ん でいる。また、ORBMaster_Agentクラスのように、これらの特定エージェントク ラスは、開発者が、コピーコンストラクター、割り当て演算子、及び結合方法を 使用して、エージェントを特定CORBAオブジェクトに結合できるようにして いる。備考:COBRAオブジェクトリファランスは、システム開発ツールサー ビスをサポートするオブジェクトを識別するには十分でないので、エージェント はCOBRAオブジェクトリファランスにいつも結合されるわけではない。サーバアクセスレイヤー (SAL) システム開発ツールの実行の裏には2つの基本的な仮定がある。 1.コンポーネントオブジェクトは、あるオブジェクト記憶サービスにより、常 時持続して記憶されている。当該オブジェクト記憶サービスは相関性があっ てもよく、またOOデータベースでもよく、或いは(レガシーシステムまた はネットワーク管理プロトコルを介してアクセスされるネットワーク機器へ CORBAゲートウェイを利用する場合には)外部アプリケーションでも構 わない、そして、 2.サービスマネジャーは、コンポーネントオブジェクトの分割を知る、即ち、 与えられたコンポーネントオブジェクトについて、それらはどのサービスマ ネジャーがそれに対する権限を持っているのかを知っているが、それらはオ ブジェクト記憶サービスに、与えられたオブジェクトが実際に存在するかど うかについての知識を委任する。 オブジェクト記憶サービスは、OIDを与えられると、コンポーネントオブ ジェクトの状態をロケートするか、若しくはOIDが有効なコンポーネント オブジェクトを表していないことを標示する、アプリケーションズ・プログ ラム・インターフェース(API)を提供する。 仮に実行中のサービスが創造中及び消去中のオブジェクトのコンセプトをサ ポートするなら、オブジェクト記憶サービスはこのライフサイクル管理を行 うAPIを提供する。 備考:「オブジェクト記憶サービス」という用語を使用しているが、実際のサービ スは、オブジェクトを持続して記憶する以外にも、例えば、アプリケーションを 完了させることなどを行ってもよい。要点は、少なくとも、ライフサイクルを管 理し、オブジェクトの存在についての照会に回答し、オブジェクトを持続的に記 憶することが望ましいということである。 以上の仮定により、以下の事柄、即ち、 − 非分散型オブジェクト記憶サービスを使用して分散されたサービスを構築 し、当該サービスがオブジェクト記憶サービスのスケーラビリティ限度まで伸縮 しORBに制限を受けなくなることができる、 − コンポーネントオブジェクトの内的状態がサービスマネジャーによってア クセスできるようにすることによって、それらが権限を持つサービスマネジャー とコンポーネントオブジェクトの間のフレンド関係が探究される、 − サービスマネジャーが別々にオブジェクトが存在するトラックを保持する 必要を回避し、それによりそれらが、それらとオブジェクト記憶サービスの間に あるこの情報を同期化させる必要性を排除する、そして、 − オブジェクトの状態とオブジェクトの存在についての知識の両方が、オブ ジェクト記憶サービスにより持続的に記憶されるので、サービスマネジャーが、 コンポーネントオブジェクトインプリメンテーションオブジェクトをメモリの内 外に意識的にスワップする、 ということが実現する。 上に説明した仮定では、SALをカプセル化するクラスとサービスインプリメ ンテーションをカプセル化するクラスの間での責任の非常に明確な分離が必要条 件となる。実際この分離は非常に複雑なため、ORBマスターアプローチは、本 質的にCORBAゲートウェイサーバ設計パターンのアプリケーションである。 このパターンは、普通は、レガシーシステムのカプセル化に適用されるが、しか しながら、システム開発ツールは、アプリケーションコードからORB依存コー ドを引き離す際にそれが提供する利益のために、それを全サーバに適用させる。 図17は、サーバアクセスレイヤー(SAL)のサーバC++オブジェクトとサー バアプリケーションコードの間の対話を示している。 SALは、アクセス及びサービスマネジャーインプリメンテーション101用 のメモリを管理し、ORBMaster_Server Cache102を有するサービスマネジャ ーアダプタ10を含んでいる。サーバキャッシュは、LRUのリストにあるコ ンポーネントオブジェクトアダプタ103のスワッピングを制御するが、このオ ブジェクトアダプタは、オブジェクト記憶サービス105の内外にスワップされ るそれぞれのコンポーネントオブジェクトインプリメンテーションのためのアク セスとメモリを制御する。オブジェクト記憶サービス105は、RDBMS、O ODBMS、若しくはレガシーアプリケーションであってもよく、そのサービス は 1.コンポーネントオブジェクトの創造と削除、 2.コンポーネントオブジェクトの存在に関する照会への回答、 3.コンポーネントオブジェクトの記憶、 である。 ・SAL/SACインターフェース IDLが定義されたインターフェース毎に対応するのは2つのクラス、即ち、 − システム開発ツールによりスタブ形式でのみ提供されるImplクラスであっ て、サーバアプリケーションコード内のこれらの存在は図3に示され、 − IDLが生成されるサーバスタブから引き出され、システム開発ツールに より実行されるAdaptorクラスであって、サーバアプリケーションコード内のこ れらの存在は図3に示される、 というクラスである。 エージェントクラスのように、Implクラスは、IDLインターフェース内の定 義された各オペレーション用の方法をサポートする。実際には、これらの方法の 名前及び署名は、対応するエージェントクラスのそれらに等しい。Implクラスの ための提案されるネーミング変換は、 <IDL module>_<IDL interface>Impl である。 開発者は、システム開発ツールにより生成されたインプリメンテーションをスタ ブ上に構築することにより、これらのクラスを実際に実行させる。開発者は、こ れらのクラスのインプリメンテーションをオブジェクト記憶サービスに対して状 態の無いゲートウェイとして選んでもよいし、また開発者はコンポーネントの状 態をそれらの中にキャッシュすることもできる。 インフラストラクチャクラスは、IDLコンパイラが生成されるサーバスタブ から引き出される。これらのクラスは、ORBと開発者が提供するインプリメン テーションとの間にアクセス経路を提供する。インフラストラクチャクラス用に 提案されるネーミング変換は、 <IDL module>_<IDL interface>Adaptor である。 サーバアプリケーションコードはImplクラス方式に直接アクセスすることは決し てない。Implオブジェクトへの全アクセスは、対応するアダプターオブジェクト 経由となる。これは、オブジェクトインプリメンテーションが(同じクラス内で あっても)別のオブジェクトへアクセスする必要が生じたとき、エージェントオ ブジェクトを使用するということを意味する。開発者が、彼らが与えるコードで エージェントクラスを使用することに失敗すると、スレッドの安全性及びメモリ アドレシングに関する問題を引き起こすことにもなりかねない。 ・ライフサイクル及びメモリ管理 各Implオブジェクトのメモリ管理は、インフラストラクチャにより操作される 。即ち、開発者は <IDL module>_<IDL interface>Impl を決して直接構築 したり破壊したりはせず、これは対応する <IDL module>_<IDLinterface>Ada ptorによりなされるということである。同様に、コンポーネントオブジェクトの 場合には、インフラストラクチャ(即ち、アダプタークラス)はコンポーネントオ ブジェクトの内外のスワッピングの初期化に責任を持つ。開発者には、あらゆる サービス特定スワップイン及びスワップアウトインプリメンテーションを提供す ることだけが求められる。 クライアントは、サービスマネジャー上のオペレーションを介してコンポーネ ントオブジェクトを創造或いは消去する。コンポーネントオブジェクトのライフ サイクル管理のための創造及び消去オペレーションは、システム開発ツールにと って特別なものではない。これらのオペレーションのインプリメンテーションは 、他の全てのオペレーション同様に、アダプターオブジェクトに対応するサービ スマネジャーImplオブジェクトまで呼び出しをするアダプターオブジェクト(こ の場合はサービスマネジャー用のアダプターオブジェクト)を含んでいる。サー ビ スマネジャーオブジェクトはそれらを例示するサーバプロセスが「インストール 」コマンド・ライン・オプション・セットで起動するとき、生成される。同様に 、それらは、それらを例示するサーバプロセスが「ディインストール」コマンド・ ライン・オプション・セットで起動するとき消去される。換言すると、インスタ レーション管理者は、サービスマネジャーオブジェクトのライフサイクルを明示 的に管理する。 ・分散問題 図17は、サーバのC++クラスの事例が単一のプロセス内でどのように相互 作用するかを示している。サービスマネジャー用のアダプタークラスは、分散コ ンセプトをカプセル化することに責任を持つ。これは、サービスマネジャー用の Implクラスは分散の問題には関わっておらず、それらは単一ホスト上でサービス を単に実行するだけであることを意味している。換言すると、Implクラス上の全 オペレーションは、ローカルオブジェクト記憶サービスに照会することのみによ り実行される。アダプターは、(適当とされる対等なサービスマネジャーへの同 報通信或いは指名委任を用いることにより)適当な対等のサービスマネジャーに 委任することによって分散的考察を提供する。 ・C++クラス 以下のクラスは、ORBマスターサーバのインプリメンテーションを手伝うサ ポートライブラリの部分として提供される。 コンポーネント実行のための抽象ベースクラス; サポートライブラリの部分であっても、開発者はこれらのオブジェクト に直接アクセスしない。 システム開発ツールはまた、それぞれのIDLインターフェースにつき(IDL から)アダプター及びImplクラスを生成する。コンポーネントオブジェクトの場 合には、ImplクラスはORBMaster_Componentから継承される。各サービスにつき 、システム開発ツールは又、main()機能を定義付けるファイルを生成する。この 機能は、当該サービスのためのサービスマネジャーを実行するアダプターオブジ ェクトを例示する。共通のIDL 以下のIDLは全サービスに使用される共通データタイプを定義する。 ファイル複製サービス ファイル複製サービスは、CORBAインスタレーション内でファイルの複製 をサポートする。実施例のファイル複製サービスは以下の項目により異なる。 − 特定のCORBA ORB − ODBCアクセスレイヤー − POSIX追従システムインターフェース この制限された依存性により、相互依存性という複雑さ無しに、ファイル複製サ ービスのトップに他のサービスを構築することができる。ファイル複製サービス は、標準IDLインターフェース複製マネジャー及び複製クライアントをサポー トするオブジェクトを使用して実行される。インスタレーション中の各ホストに つき、多くても1つの複製マネジャーオブジェクトが存在する。複製マネジャー のセットは、ピアグループに形成することができる。ピアグループ内で、全複製 マネジャーはオブジェクトリファランスを、ピアグループの他の全ての複製マネ ジャーに対して保持する。 各複製マネジャーの目的は、ファイルのセットのローカルコピーを、これらロ ーカルコピーの内容がピアグループを通して「ほぼ」同期的に作用するように保守 する。複製サービスのクライアントは、どのファイルが複製されるのかを限定す る。複製クライアントオブジェクトは、それらを複製マネジャーオブジェクトと 共に登録する。登録に際し、複製クライアントは、興味のあるファイルを特定す る。ファイルは、ファイルのローカルバージョンが異なるホスト上で異なる名前 を持てるようにしているファイル名ではなく識別子を用いて特定される。サービ スは、ファイルのグループを、仮にグループの何れかのファイルが変更されたな らそのグループは変更されたと見なされ、そのグループの全ファイルはグループ が変更されるときに複製されるというように、単一のエンティティとして取り扱 う。 ・仮定 ファイル複製サービスは、以下の制限事項(これらは、一般的に厳密な制限と いうよりもむしろ大きさの度合いを表している)を条件としてファイルの複製を サポートする。 − ピアグループ毎に10ホスト − ホスト毎に10ファイル − ファイル毎に500文字 − ファイル更新はほとんど起こらない(1日につき数回の変更のみ) − ピアグループの全ホスト上のクロックは約10秒以内までで同期的に作動 する。 − 1つのファイルへの変更は、分散されたオペレーションを使用してファイ ルの別のコピーへと伝播される。コピーは、従って、変化がそれらに伝播するま では、データ外にあり、変更は全ホストに伝播され、変化発生の1分以内に変更 を作り出したホストに到達できる。 − 仮にホストが変更のソースとの接続性を失っても、接続性を再度得ると5 分以内にホストはソースと整列する。 ・インターフェース定義モジュール 以下はインターフェース定義モジュールの例である。 ・ピアグループを定義する ピアグループの全複製マネジャーは、そのピアグループの他の全複製マネジャ ーの自身のローカル知識を保守する。それらは、CORBAオブジェクトリファ ランスを用いてこれを行う。複製マネジャーを初期化するサーバプロセスが、イ ンストールモードで起動するなら、それは持続的な複製マネジャーを創造し、そ のCORBAオブジェクトリファランスを、そのサーバが実行中のホストと同じ 名前で(よく知られたディレクトリの)ファイルに記憶する。ロードピアオペレー ションが発動されるとき、ピアグループの複製マネジャー用のCORBAオブジ ェクトリファランスの完全なセットが、よく知られたディレクトリにファイルと して記憶されているはずである。CORBAオブジェクトリファランスを含んで いるディレクトリの内容が、ピアグループのホスト毎に確実に同じになるように することは、管理タスクである。ロードピアオペレーションは、関連データベー スのピアのためのオブジェクトリファランスを記憶する。複製マネジャーが、イ ンストールモード以外のモードで起動するとき、そのデータベースを用いてピア を入手する。これは、複製マネジャーが起動する能力が、ローカルデータベース の有効性に唯一依存しているということを意味している。 ピアグループを初期化するための管理手順は次のようになる。 − ピアグループの複製マネジャーをサポートしている全サーバをインストー ルモードで起動する − それぞれは、それらのCORBAオブジェクトリファ ランスを、ローカルホスト名をファイル名として用いて、ファイルに書き込む。 − 各ホストが確実にCORBAオブジェクトリファランス・ファイルのセッ トを持つようにする(ここで、CORBAオブジェクトリファランスを含んでい るディレクトリがNFSを使用してマウントされるなら必要条件は無し)。 − ピアグループの各複製マネジャー上でロードピアオペレーションを発動す る。 ファイル複製サービスに依存するサービスは、ピアグループが初期化された後に 初めて起動することができる。 ・クライアント登録を管理する 複製マネジャーインターフェース上のレジスタークライアントオペレーション は、特定のクライアントオブジェクトがどのファイルグループに興味があるのか を限定する。アンレジスタークライアントは登録を行わない。ファイルグループ は(ファイル名ではなくて)ストリングスによって識別される。クライアント登録 は複製マネジャーにより持続される。クライアントは彼らが登録されるファイル グループに変更が生じた場合には通知されるが、しかしながら、ファイルグルー プ変更時にクライアントが複製マネジャーにより連絡不可能な場合には、その後 可能になっても、クライアントへの通知は試みられない。ダウンしている間に生 じた何らかの変更に確実に変更に気づくために、起動時にそのファイルの最新の コピーを入手することはクライアントの責任である。 ・ファイル変更のためのソースプッシュ・アルゴリズム ファイル複製サービスは、それが複製するファイルがファイルシステム経由で 直接変更できることを仮定している。各複製マネジャーは、クライアント登録を 有する対象であるファイルグループが変更されているかどうかを判断するため、 一定(設定可能)間隔でファイルシステムをポーリングする。一旦、複製マネジャ ーが、ファイルグループは変更されていると判断すると、それらに関してアップ ロードオペレーションを発動することにより、そのピア全部に対して変更された ファイルグループをプッシュする。それはまた、関心のある全クライアントに、 彼らに関して更新オペレーションを発動することにより通知する。アップロード オペレーションを発動するとき、それは、グループのファイルにつきファイルグ ループバージョン番号(アップロードオペレーションに対するバージョンパラメ ータ)として最新のファイル変更タイム(1970年1月1日00:00:00時 以来数秒内)を使用する。新しいバージョン番号がそれの全てのピアに対して確 実にプッシュされるようにすることは、変更(ソース)を検知した複製マネジャー の責任である。これは、(たとえ停止してその後再起動しても)成功するまで、そ れがアップロードオペレーションを繰り返し試みることを意味している。再試行 間隔は設定可能である。 アップロードオペレーションが発動されるとき、対象となる複製マネジャーは 入力ファイルグループがそのローカルコピーよりも新しいかどうかをチェックす る。それは、入力バージョンパラメータとそれの記憶値を比較することによりこ れを行う。これらにシステムクロック(設定可能)の最大エラーの範囲を超えて違 いがあるなら、最も間近の値がより大きなバージョン番号として採られる。そう でないなら、バージォン番号は無視され、入力ホスト名とローカルホスト名が比 較される。最も間近ものが、より大きいと判断するものとして採られる。ホスト 名に関してこの任意の配列を使用するということは、ほとんど同時に2つ以上の 異なる変更が生じた場合に、成功するのはたった1つであるということを意味す る。入力値がより間近なものなら、複製マネジャーはそのローカルコピーを更新 し、そのクライアントに通知し、そして入力バージョン番号をグループのための バージョン番号として記憶する。仮に入力値がより間近なものでなければ、複製 マネジャーは戻すだけである。 バージョン番号の他にも、複製マネジャーは、各ローカルファイルに付随して タイムスタンプを持続的に記憶する。それらは、ファイル変更時に検知できるよ うにするためこれを行う。起動時、それらは、終止中にファイルグループが変更 されているかどうかを、持続的に記憶されているタイムスタンプとファイルシス テムから得る値を比較することにより判断する。これらのタイムスタンプを持続 的に記憶することにより、「終止中のファイル変更」という事態を、上に述べたよ うに正常なファイルグループ変更として取り扱うことができる。 ・ピアグループ起動 複製マネジャーが創造されるとき、その記憶されたバージョン番号とファイル のタイムスタンプはゼロに設定される。クライアント登録が発生すると、複製マ ネジャーは、記憶されたタイムスタンプが実際の値より少ないことを検知するの で、ファイルのローカルコピーを全ピアに対してプッシュする。ピアグループを 起動させる最も効率的な方法は、各ファイルグループのピアグループ内でコピー をたった1つだけ持つということである。サービスファインダーサービス サービスファインダーサービスは、インターフェースのサービスロケーターと サービスマネージャーをサポートするオブジェクトを使って実行される。インス トレーション中の全ホストは多くて一つのサービスロケーターを有している。サ ービスロケーターはサービスマネージャーの格納位置を管理し、クライアントが 、サービスネームに基づいてサービスマネージャーを探し、サービスロケーター に接近して位置を見つけ出せるようにしている。サービスファインダーサービス は次の事項に依存している。 − 指定された特定のCORBA ORB、 − ODBCアクセスレイヤー、 − POSIX式システムインターフェース、 − CORBA通知サービス ・前提条件 次の条件を実施例に適用する。 − インストレーションは、約10のホストから構成されている。 − インストレーション内のホストは、インストレーションタイムで規定され ており、変更されない。 − サービスマネージャーは、インストレーションに流動的に加えられても、 除かれてもよい。 ・インターフェース定義 ・サービスロケーター 一つのピアーグループ内の全サービスロケーターが、そのピアーグループ内の 他の全てのサービスロケーターが有しているローカルな知識を保持する。本実施 例では、CORBAオブジェクトリファランスを用いてこれを行う。サービスロ ケーターを例示するサーバープロセスがインストールモードで開始されると、サ ーバープロセスは、持続性のあるサービスロケーターを作りだし、サーバーが実 行しているホストと同じネームを持った、ファイル(よく知られているディレク トリ内に)内にそのCORBAオブジェクトリファランスを記憶する。 ロードピアーオペレーションが呼び出されると、そのピアーグループ内のサー ビスロケーター用のCORBAオブジェクトリファランスの全セットが、よく知 られているディレクトリにファイルとして記憶されなければならない。CORB Aオブジェクトリファランスを含むディレクトリの内容がピアーグループ内の全 ホストに共通するものであることを確認するのは、管理的タスクである。ロード ピアーオペレーションは、そのピアーグループ内の全サービスロケーターを検索 するため、CORBAオブジェクトリファランスを含んでいるファイルを読む。 ロードピアーオペレーションは、ピアー用のオブジェクトリファランスを関連す るデータベースに記憶する。サービスロケーターがインストールモードとは別の モードで始動すると、データベースはピアーを獲得するために使われる。このこ とは、サービスロケーターが始動する能力は、単にローカルデータベースの可用 性によることを示している。ピアーグループを初期化するための一般的な管理手 続きは次のようなものである。 − ピアーグループ内のサービスロケーターをサポートしている全サーバーを インストールモードで始動させると、各々がファイル名としてローカルホスト名 を使っているファイルに、各々のCORBAオブジェクトリファランスを書き出 す。 − 各ホストはCORBAオブジェクトリファランスの全セット(CORBA オブジェクトリファランスを含んでいるディレクトリがNFSを用いて装備され るなら、ここでは必要ない)を有することを確認する。 − ピアーグループ内の各サービスロケーター上にロードピアーオペレーショ ンを呼び出す。 各サービスロケーターは、それぞれが登録しているサービスマネージャーの継 続リストを保持している。各サービスロケーターはODBCアクセスレイヤーを 使って、このリストを関連あるデータベースに記憶する。サービスロケーターは そのピアーサービスロケーターによって管理されている登録は記憶しない。クラ イアントは、何れかのサービスロケーターでゲットベストマネージャーを呼び出 すことによって、特定のサービス用のサービスマネージャーを要求する。クライ アントがサービスマネージャーを要求する環境は一般的に二通りある。 1.クライアントが、まずサービスマネージャーと交信しようとして、エージェ ントを拘束しているか、又は 2.クライアントが、サービスマネージャーと交信しようとして、システムの例 外を行っている。 本サービスは、求められたときは(すなわち通常は前記1のケース)大方のサ ービスマネージャーが入手可能であるという前提で設計されている。このことは クライアントがそうするという明確な要求がなければ、サービスがサービスマネ ージャーの可用性をチェックしないことを意味する。クライアントは単に、サー ビスマネージャーが利用できなくなっている(すなわち前記2のケース)と考え る理由があるとき、ただチェックを要求する。可用性について全サービスマネー ジャーが確認されるとすれば、サービスマネージャーを求める声に応じる際にキ ャッシュメモリーを使ってもほとんど問題はない。しかしながら、通常、可用性 の確認はなされないので、サービスロケーターが要求に応じるときにはキャッシ ュメモリーを使うと効果がある。従って、各サービスロケーターは、サービスマ ネージャーの位置を確認するための先の試みの結果から得られるタプル(サービ ス、ネーム、サービスマネージャー)を記憶するローカルなインメモリーキャッ シュを保持している。キャッシュに記憶されているタプルは、サービスのマネー ジャーを求める広範な要求に対する第一の応答に対応する。クライアントは、通 信が不履行になれば、testRequiredのパラメータを真にセットし、さもなければ 偽にセットする。従って、getBestManagerの要求の処理は、次に述べるように、 testRequiredパラメータの値にかかっている。 getBestManagerオペレーションが呼び出されると、返すべきサービスマネージ ャーを決めるために、次のような段階が用いられる。 − 特定のサービスに関してサービスロケーターに登録されているサービスマ ネージャーがあれば、それを返すか、又は − もし特定のサービスに関するキャッシュにエントリーがあれば、それを戻 すか、又は、 − getLocalManagerの要求を全ピアーサービスロケーターに同報通信する。T estRequiredパラメータは、遠隔同報通信がなされていれば、サービスマネージ ャーと接触する余分な時間はそれほど重要ではないので、これらのオペレーショ ンに対し真にセットされる。獲得された第一の応答はキャッシュ内に置かれ、ク ライアントに戻される。 getBestManagerオペレーションが呼び出されると、返すべきサービスマネージ ャーを決めるために、次のような段階が用いられる。 − 特定のサービスに関してサービスロケーターに登録されているサービスマ ネージャーがいれば、それと交信してみる(そのロケーション属性を得る)。 − 接触できれば、それを戻す、又は、 − 特定のサービスに関してキャッシュにエントリーがあれば交信してみる。 接触できればそれを戻すか、さもなければキャッシュエントリーを無効にすし、 そして、 − getLocalManagerリクエストを全ピアーサービスロケーターに同報通信す る。TestRequiredパラメータは、これらのオペレーヨンに対し真にセットする。 最初に得られた応答がキャッシュ内に置かれ、クライアントに返される。 ・サービスマネージャー ピアーグループを定義すると次のように考えられる。何れかのサービスロケー ターにおいてgetAllRegisterdManagerオペレーションを呼び出し、適当なサーバ ーネームを指定すれば、サービスマネージャーのピアーグループのメンバーを獲 得できる。このオペレーションはサービスマネージャーの位置を確認するために 同報通信を用いるので、コストの高いオペレーションになるかもしれない。一般 的には、グループ内の他のピアーを決める必要があるのは、ある特定のピアー グループそのもののメンバーである。従ってサービスロケーターは、コストの高 いgetAllRegisterdManagerオペレーションに替えて、自分たちのピアーグループ をサービスマネージャーに記憶させることができる。そのピアーグループにメン バーの出入りがあったときはいつでも通知を送ることにより、これを行う。 サービスマネージャーが自分たちのピアーグループメンバーシップリストを保 持したいと望めば、通知受取人として、通知制作者であるローカルサービスロケ ーターに登録しなければならない。図18に図式化してあるように、サービスロ ケーターは、何時メンバーがグループに出入りしたかの情報を、notifyAddManag er及びnotifyRemoveManagerオペレーションを使って配布する。配布の段階は次 の通りである。 1. ロケーションX110に対するサービスマネージャーは、ローカルサー ビスロケーター111にロケーションを登録する。 2. ローカルサービスロケーター111は、notifyAddManagerプロセスをそ のピアーサービスロケーター112、113、及び114の各々に呼び出す。 3. サービスロケーターは、サービスマネージャーのオブジェクトリファラ ンスを含んでいる通知を通知サービス115に送り、その通知はピアーサービス マネージャー116及び117で受信される。 そうすると、サービスマネージャーは、イニシャルコンテンツを得るためにgetA llRegisterdManagerを用い、それを保持するために通知を用いて、自分たちのピ アーのキャッシュを作り出すことができる。概要 上記説明により、本発明の開発ツールは大規模オブジェクト指向システムの開 発者に次の有用性を提供するということが理解頂けるであろう。 (a)開発チームメンバーに関するトレーニングコストが削減される。CORB Aの読み書きができる必要はなく、それ以上にCORBA専門家である必要はな い。 (b)本開発ツールは、特定の需要に適合するようにパック化された使用モデル を含んでいるので、設計時間が短縮される。 (c)コード発生器及びライブラリーは、信頼性が証明済みのモジュールを提供 するのでコーディング時間が短縮され、又、本ツールはクライアントとサーバー のアプリケーションコードに単純化されたインターフェースを提示する。更に、 (d)開発者が書き込むコードは少なく、複雑でなく、誤った使用をしないよう 指導してもらえるので、テスト時間が短縮される。 本発明のシステム開発方法とツールを使えば、開発者は、アプリケーションサ ービスを供給するために必要とされる分散型オブジェクト指向のインフラストラ クチャではなく、アプリケーションの機能性を提供することに焦点を絞ることが できるようになる。本発明のシステム開発方法とツールが、OMGのCORBA 以外の分散型オブジェクト指向システムアーキテクチュアに対して、実質的に同 様の有用性をもって適用できると理解することも重要である。本システム開発ツ ールは、性能と規模を拡張するために現在のコンピューターアプリケーションに 分散を加えたり、あるいは統一されたアクセス方法を提供するためにシステムを 見えないように統合するのに適している。特に本システム開発ツールは、分散型 遠隔通信又は金融サービス用の新しいシステムを開発するのに適している。 明細書全体を通しての目的は、本発明の好適実施例を説明することであり、本 発明を一つの特定の実施例、又は特別な特徴の集合に限定するわけではない。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),AU,CA,J P,US 【要約の続き】 の、各サーバープロセス用サーバーアクセスレイヤー (28)と、ユーザーがサーバーセマンティックスのイ ンプリメンテョンを統合するための規則を含む、各サー ビスを実行するためのサーバーアプリケーションコード のスタブ部(29)とを生成するために配置されてい る。基本分散型サービスのセットは、システム内でファ イルを複製するためのファイル複製サービス(30)及 びシステム内で利用可能なサービスの検索のためのサー ビスファインダーサービス(31)を含んでいてもよ い。

Claims (1)

  1. 【特許請求の範囲】 1.大規模分散型オブジェクト指向のコンピューターシステムを構築するための 開発ツールであって、前記システムは複数のクライアントと、複数のサーバー と、サービスに関するクライアントの要求をサーバーへ通信するための分散型 オブジェクトのインフラストラクチャとを含み、前記開発ツールは、 (a)(i)各オブジェクト固有のアイデンティフィケーションを容易にするオ ブジェクトアイデンティティパターンと、(ii)あるコモナリティを有する オブジェクトの論理的グルーピングを容易にする集合パターンと、(iii) オブジェクトのセットに目標を絞ったオペレーションを容易にするグループオ ペレーションパターンと、(iv)クライアントとは無関係に一つのオブジェ クトともう1つのオブジェクトとの連携を容易にするフレンドパターンと、( v)システムの性能を目的にオブジェクトの物理的グルーピングを容易にする パーティションパターンとを含む予め定められたオブジェクト設計パターンを 提供する一連のテンプレートと、 (b)クライアントプロセスによって要求されることになる所望のサーバープロ セスを定義するために、そして設計パターンの内の選択されたものを組み込む ためにユーザーによって作り出されるオブジェクト指向システムモデルから以 下の、(i)分散されたオブジェクトインフラストラクチャからクライアント アプリケーションコードを切り離すための、各クライアントプロセス用のクラ イアントアクセスレイヤーと、(ii)分散されたオブジェクトインフラスト ラクチャからサーバーアプリケーションコードを切り離すための、各サーバー プロセス用のサーバーアクセスレイヤーと、(iii)ユーザーがサーバーセ マンティックスのインプリメンテーションを統合するための規定を含む、各サ ービスを実行するためのサーバーアプリケーションコードのスタブ部とを生成 するために配置されているコード発生器と、 から成ることを特徴とする開発ツール。 2.前記システム内で利用可能なサービスの検索のためのサービスファインダー サービスを含む基本的分散型サービスのセットを更に含むことを特徴とする、 上記請求項1に記載の開発ツール。 3.前記一連のテンプレートが以下のオブジェクトデザインパターン、即ち(v i)改善されたサービスを提供するために協働する集合のセットであるフェデ レーションパターン、(vii)フェデレーション内のセットからの集合の最 適選定を容易にする統一されたサービスパターン、及び/又は(viii)特 別にアイデンティファイされたオブジェクト上での複数のオペレーションを容 易にする大容量オペレーションパターン、の中から一つ又はそれ以上を更に含 んでいてもよいことを特徴とする、上記請求項1又は2の何れかにに記載の開 発ツール。 4.オブジェクトアイデンティティがオブジェクトの属性であり、構造化名を使 って表されることを特徴とする、上記請求項1から3の何れかに記載の開発ツ ール。 5.前記オブジェクトアイデンティティの属性がオブジェクトの複製を考慮して いることを特徴とする、上記請求項4に記載の開発ツール。 6.集合にグルーピングされたオブジェクトがメンバーとして知られ、集合のメ ンバーの知識が明示的に又は暗示的にの何れかで保存されていることを特徴と する、上記請求項1から5の何れかに記載の開発ツール。 7.グループオペレーションが適用されるオブジェクトのセットがグループオペ レーションの範囲として知られており、その範囲が明示的に又は暗示的に定義 されてもよいことを特徴とする、上記請求項1から6の何れかに記載の開発ツ ール。 8.明示的に定義されるグループオペレーションがサービスから成るオブジェク トによりサポートされている基本的なオペレーションに基づいており、オブジ ェクト識別子のリストがグループオペレーションの範囲を定義することを特徴 とする、上記請求項7に記載の開発ツール。 9.暗示的に定義されるグループオペレーションが基本的なオペレーションに基 づくのではなく、クライアント指定のフィルター又は規則がグループオペレー ションの範囲を定めるためにオブジェクトに適用されることを特徴とする、上 記請求項7に記載の開発ツール。 10.二つのオブジェクトが分散型オブジェクトインフラストラクチャを通して クライアントと関連しては現れず、相互に関連して現れるのであれば、二つの オブジェクトはフレンドであることを特徴とする、上記請求項1から9の何れ かに記載の開発ツール。 11.パーティションがオブジェクトの物理的グルーピングであり、システム内 の各オブジェクトが一つのパーティションにだけ関係しており、そのパーティ ションはコンピューターのハードウェアの1つのセットに対応していることを 特徴とする、上記請求項1から10の何れかに記載の開発ツール。 12.フェデレーション内の集合が、より速く、より広く又はより信頼性のある サービスを提供するために、互いにオペレーションを委任できることを特徴と する、上記請求項3から11の何れかに記載の開発ツール。 13.統一されたサービスが、予め定められた集合のサブセットが統一たサービ スを要求するクライアントには見えないようになっている、統合された集合で あることを特徴とする、上記請求項3から12の何れかに記載の開発ツール。 14.前記クライアントアクセスレイヤーが、サービスを実行するオブジェクト にアクセスするためのエージェントクラスと、そのエージェントクラスにより 操作されるデータ構造を表すための別のクラスとを含むことを特徴とする、上 記請求項1から13の何れかに記載の開発ツール。 15.前記エージェントクラスが、分散型オブジェクトインフラストラクチャ用 のインターフェースコードを、クライアントアプリケーションコードから効果 的に分離し、そのインプリメンテーションに取り組むために、オブジェクトの アイデンティティと、インターフェイスと、方法とをカプセル化することを特 徴とする、上記請求項14に記載の開発ツール。 16.前記サーバーアクセスレイヤーが、何れかのパーティションに関してオブ ジェクトを管理するためのサービスマネージャーを含み、オブジェクトの創造 と削除を考慮することを特徴とする、上記請求項1から15の何れかに記載の 開発ツール。 17.前記サーバーアクセスレイヤーが、サービスを実行するオブジェクトへの アクセスを提供するためのアダプタークラスを含むことを特徴とする、上記請 求項16に記載の開発ツール。 18.前記基本的分散型サービスのセットが、システム内のファイルを複製する ためのファイル複製サービスを更に含むことを特徴とする、上記請求項2から 17の何れかに記載の開発ツール。 19.前記システムが、(a)分散型オブジェクトインフラストラクチャがオブ ジェクトリクエストブローカーから成る、(b)オブジェクト指向システムモ デルがCORBAコンセプトを用いてモデル化される、(c)サーバーインタ ーフェースがCORBAインターフェース設計言語(IDL)に従って生成さ れる、というようなCORBA標準を利用することを特徴とする、上記請求項 1から18の何れかに記載の開発ツール。 20.大規模分散型オブジェクト指向のコンピューターシステム開発のための方 法であって、前記システムは複数のクライアントと、複数のサーバーと、クラ イアントのサービスに関する要求をサーバーへ通信するための分散型オブジェ クトインフラストラクチャとを含み、前記開発方法は (a)(i)各オブジェクトの固有のアイデンティフィケーションを容易にする オブジェクトアイデンティティパターンと、(ii)あるコモナリティを有す るオブジェクトの論理的グルーピングを容易にする集合パターンと、(iii )オブジェクトのセットに目標を絞ったオペレーションを容易にするグループ オペレーションパターンと、(iv)クライアントとは無関係に一つのオブジ ェクトともう一つののオブジェクトとの連携を容易にするフレンドパターンと 、(v)性能目的にオブジェクトの物理的グルーピングを容易にするパーティ ションパターンとを含む、予め定められたオブジェクト設計パターンのための 一連のテンプレートから一つまたはそれ以上のテンプレートを選択する段階と 、 (b)クライアントプロセスによって要求されることになる所望のサーバープロ セスを定義するための、そしてそのモデルが選択されたオブジェクト設計パタ ーンを組み込むところの、オブジェクト指向システムモデルを作る段階と、 (c)前記オブジェクト指向システムモデルから、以下の(i)分散型オブジェ クトインフラストラクチャからクライアントアプリケーションコードを切り離 すための、各クライアントプロセス用のクライアントアクセスレイヤーと、( ii)分散型オブジェクトインフラストラクチャからサーバーアプリケーショ ンコードを切り離すための、各サーバープロセス用のサーバーアクセスレイヤ ーと、(iii)ユーザーがサーバーセマンティックスのインプリメンテーシ ョンを統合するための規定を含む、各サービスを実行するためのサーバーアプ リケーションコードのスタブ部のためのコードモジュールを生成する段階とか ら成ることを特徴とするシステム開発のための方法。 21.前記システム内で利用可能なサービスの検索のためのサービスファインダ ーサービスを含む基本的分散型サービスのセットを提供する段階を更に含むこ とを特徴とする、上記請求項20に記載のシステム開発のための方法。 22.前記段階(c)における選択に利用可能な前記一連のテンプレートが、更 に以下のオブジェクト設計パターン、即ち(vi)改善されたサービスを提供 するために協働する集合のセットであるフェデレーションパターン、(vii )フェデレーション内のセットからの集合の最適選定を容易にする統一された サービスパターン、及び/又は(viii)特別にアイデンティファイされた オブジェクト上での複数のオペレーションを容易にする大容量オペレーション パターンの内の一つ又はそれ以上を含んでいてもよいことを特徴とする、上記 請求項20又は21の何れかに記載のシステム開発のための方法。 23.オブジェクトのアイデンティティ属性を構造化名を使って表す段階を含む ことを特徴とする、上記請求項20から22の何れかに記載のシステム開発の ための方法。 24.前記オブジェクトのアイデンティティ属性が、オブジェクトの複製を考慮 していることを特徴とする、上記請求項23に記載のシステム開発のための方 法。 25.メンバーとして集合にグルーピングされたオブジェクトを参照し、集合の メンバーの知識を明示的に又は暗示的にの何れかで保持する段階を含むことを 特徴とする、上記請求項20から24の何れかに記載のシステム開発のための 方法。 26.グループオペレーションの範囲としてグループオペレーションが適用され るオブジェクトのセットを参照する段階であって、前記範囲が明示的に又は暗 示的に定義されていてもよい、そのような段階を含むことを特徴とする、上記 請求項20から25の何れかに記載のシステム開発のための方法。 27.フレンドオブジェクトが、分散型オブジェクトインフラストラクチャを通 してクライアントと関連しては現れないが、相互に関連して現れるようにフレ ンドオブジェクトを配置する段階を含むことを特徴とする、上記請求項20か ら26の何れかに記載のシステム開発のための方法。 28.オブジェクトの物理的グルーピングをパーティションに割り当てる段階で あって、システム内の各オブジェクトがそのようなパーティションの一つとだ け関係しており、前記パーティションがコンピューターのハードウェアの1つ のセットに対応している、そのような段階を含むことを特徴とする、上記請求 項20から27の何れかに記載のシステム開発のための方法。 29.フェデレーション内の集合が、より速く、より広く、又はより信頼性の高 いサービスを提供するために、別の集合にオペレーションを委任することを許 容する段階を含むことを特徴とする、上記請求項22から28の何れかに記載 のシステム開発のための方法。 30.統一されたサービスを要求するクライアントには見えなくなるように、統 合された集合内に予め定められた集合のサブセットを配置する段階を含むこと を特徴とする、上記請求項22から29の何れかに記載のシステム開発のため の方法。 31.前記クライアントアクセスレイヤーを生成する段階が、サービスを実行す るオブジェクトにアクセスするためのエージェントクラスと、前記エージェン トクラスによって操作されるデータ構造を表す別のクラスとを生成する段階を 含むことを特徴とする、上記請求項20から30の何れかに記載のシステム開 発のための方法。 32.前記エージェントクラスを生成する段階が、分散型オブジェクトインフラ ストラクチャ用のインターフェースコードをクライアントアプリケーションコ ードから分離し、オブジェクトのアイデンティティと、インターフェースと、 そのインプリメンテーションに取り組むための方法とをカプセル化する段階を 含むことを特徴とする、上記請求項31に記載のシステム開発のための方法。 33.前記サーバーアクセスレイヤーを生成する段階が、全てのパーティション に関してオブジェクトを管理するためのサービスマネージャーの規則を含み、 前記サービスマネージャーはオブジェクトの創造と削除を容易にすることを特 徴とする、上記請求項20から32の何れかに記載のシステム開発のための方 法。 34.前記サーバーアクセスレイヤーを生成する段階が、サービスを実行するオ ブジェクトへのアクセスを提供するために、アダプタークラスの規則を含むこ とを特徴とする、上記請求項33に記載のシステム開発のための方法。 35.前記基本的な分散型サービスのセットを提供する段階が、システム内のフ ァイルを複製するためのファイル複製サービスを提供することを更に含むこと を特徴とする、上記請求項21から34の何れかに記載のシステム開発のため の方法。 36.請求項1から19の何れかに記載の開発ツールを用いて、又は請求項20 から35の何れかに記載の方法に従って作られる大規模オブジェクト指向シス テムにおいて、前記オブジェクト指向システムが、共通の管理インターフェー スを含むことを特徴とする大規模オブジェクト指向システム。 37.前記共通の管理インターフェースが、テスト、使用可能、使用不可能、バ ックアップ及び再スタートの機能の規則を含む、システム内の統一された全サ ービスの遠隔管理を容易にすることを特徴をする、上記請求項36に記載の大 規模オブジェクト指向システム。 38.前記管理インターフェースは、統一された各サービスを照会できる、バー ジョン番号、著作権情報、ステータス、ホスト機器、プロセスアイデンティテ ィ、又は同等の属性の中の一つ又はそれ以上を含めた属性のセットをサポート することを特徴をする、上記請求項37に記載の大規模オブジェクト指向シス テム。
JP11503411A 1997-06-18 1998-06-17 分散型オブジェクト指向計算用システム開発ツール Pending JP2000517453A (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
AUPO7401A AUPO740197A0 (en) 1997-06-18 1997-06-18 Unified federated server
AU9988 1997-10-24
AUPO9988A AUPO998897A0 (en) 1997-10-24 1997-10-24 System development tool for distributed object oriented computing
AU7401 1997-10-24
PCT/AU1998/000464 WO1998058313A1 (en) 1997-06-18 1998-06-17 System development tool for distributed object oriented computing

Publications (1)

Publication Number Publication Date
JP2000517453A true JP2000517453A (ja) 2000-12-26

Family

ID=25645448

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11503411A Pending JP2000517453A (ja) 1997-06-18 1998-06-17 分散型オブジェクト指向計算用システム開発ツール

Country Status (4)

Country Link
EP (1) EP0923761A1 (ja)
JP (1) JP2000517453A (ja)
CA (1) CA2263571A1 (ja)
WO (1) WO1998058313A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8089896B2 (en) 2006-03-28 2012-01-03 Panasonic Electric Works Co., Ltd. Network system

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6412017B1 (en) 1996-07-01 2002-06-25 Microsoft Corporation Urgent replication facility
NO310750B1 (no) * 1999-07-29 2001-08-20 Ericsson Telefon Ab L M Håndtering av objekter i telekommunikasjonssystemer
US6834303B1 (en) * 2000-11-13 2004-12-21 Hewlett-Packard Development Company, L.P. Method and apparatus auto-discovering components of distributed services
GB2380004A (en) 2001-07-27 2003-03-26 Virtual Access Ireland Ltd A configuration and management development system for a netwok of devices
US8620777B2 (en) 2001-11-19 2013-12-31 Hewlett-Packard Development Company, L.P. Methods, software modules and software application for logging transaction-tax-related transactions

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5699310A (en) * 1990-06-29 1997-12-16 Dynasty Technologies, Inc. Method and apparatus for a fully inherited object-oriented computer system for generating source code from user-entered specifications
EP0727739B1 (en) * 1995-02-17 2002-11-06 International Business Machines Corporation Object-oriented programming interface for developing and running network management applications on a network communication infrastructure
IL124916A (en) * 1995-12-15 2002-02-10 Object Dynamics Corp Method and system for constructing software components
US5991535A (en) * 1996-07-03 1999-11-23 Sun Microsystems, Inc. Visual composition tool for constructing application programs using distributed objects on a distributed object network

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8089896B2 (en) 2006-03-28 2012-01-03 Panasonic Electric Works Co., Ltd. Network system

Also Published As

Publication number Publication date
EP0923761A1 (en) 1999-06-23
CA2263571A1 (en) 1998-12-23
WO1998058313A1 (en) 1998-12-23

Similar Documents

Publication Publication Date Title
US7428546B2 (en) Systems and methods for data modeling in an item-based storage platform
US7483915B2 (en) Systems and method for representing relationships between units of information manageable by a hardware/software interface system
US6205465B1 (en) Component extensible parallel execution of multiple threads assembled from program components specified with partial inter-component sequence information
US6438590B1 (en) Computer system with preferential naming service
US6769124B1 (en) Persistent storage of information objects
US7555497B2 (en) Systems and methods for separating units of information manageable by a hardware/software interface system from their physical organization
Hall et al. An architecture for post-development configuration management in a wide-area network
US7739316B2 (en) Systems and methods for the implementation of base schema for organizing units of information manageable by a hardware/software interface system
KR101117945B1 (ko) 분산형 컴퓨팅 시스템을 위한 아키텍쳐 및 분산형 애플리케이션의 자동화된 설계, 배치 및 관리
US6226788B1 (en) Extensible network management system
US6834284B2 (en) Process and system for providing name service scoping behavior in java object-oriented environment
US5687363A (en) Distributed database architecture and distributed database management system for open network evolution
US7349913B2 (en) Storage platform for organizing, searching, and sharing data
US7529811B2 (en) Systems and methods for the implementation of a core schema for providing a top-level structure for organizing units of information manageable by a hardware/software interface system
US8131739B2 (en) Systems and methods for interfacing application programs with an item-based storage platform
CA2533088C (en) Systems and methods for data modeling in an item-based storage platform
US20050055354A1 (en) Systems and methods for representing units of information manageable by a hardware/software interface system but independent of physical representation
CA2532909A1 (en) Systems and methods for interfacing application programs with an item-based storage platform
AU2002337927A1 (en) A generic connector between vitria and an EJB compliant API for an application
EP1440367A1 (en) A generic connector between vitria and an ejb compliant api for an application
JPH11224196A (ja) リモート・オブジェクト・アクセス
JPH11288395A (ja) オブジェクトの遠隔的ブラウズ方法及びシステム
JP2000517453A (ja) 分散型オブジェクト指向計算用システム開発ツール
Akkerman et al. Infrastructure for automatic dynamic deployment of J2EE applications in distributed environments
RU2371757C2 (ru) Системы и способы моделирования данных в основанной на предметах платформе хранения