JPH0922392A - オブジェクト間のコンスピラシのための方法および装置 - Google Patents

オブジェクト間のコンスピラシのための方法および装置

Info

Publication number
JPH0922392A
JPH0922392A JP8077329A JP7732996A JPH0922392A JP H0922392 A JPH0922392 A JP H0922392A JP 8077329 A JP8077329 A JP 8077329A JP 7732996 A JP7732996 A JP 7732996A JP H0922392 A JPH0922392 A JP H0922392A
Authority
JP
Japan
Prior art keywords
conspiracy
conspirator
servant
skeleton
computer
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
JP8077329A
Other languages
English (en)
Inventor
Yeturu Aahlad
アーラド エッツル
Jefferson A Dinkins
エー. ディンキンス ジェファーソン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH0922392A publication Critical patent/JPH0922392A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/465Distributed object oriented systems

Landscapes

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

Abstract

(57)【要約】 (修正有) 【課題】 オブジェクトオペレーティング環境における
オブジェクト間のコンスピラシを提供するための方法と
装置を提供する。 【解決手段】 オブジェクトの集合がコンスピラシを形
成できる機構において、オブジェクトは、オブジェクト
インターフェイスの背後で通信することもできるし、す
べての資源を共有することもできる。オブジェクトの集
合はクライアントにサービスを提供するために協力す
る。コンスピラシのメンバーであるオブジェクトは、個
別のプロセスに配置される分散オブジェクトであるかも
しれない。また、コンスピラシのメンバーであるオブジ
ェクトは、インターフェイスの背後で互いに対話を実行
できるし(すなわち、インターフェイスを介した通信を
必要としない)、不変状態を共有することもできる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、分散コンピューテ
ィングシステム、クライアンント- サーバーコンピュー
ティング(client-server computing) 、およびオブジェ
クト指向プログラミングの分野に係わり、特には、分散
オブジェクトオペレーティング環境内のオブジェクト間
のコンスピラシ(conspiracy)を提供するための方法と装
置に関するものである。
【0002】
【従来の技術および発明が解決しようとする課題】ここ
数年来、従来のプログラミング方法で開発されたソフト
ウェアの納期遅れと予算超過の傾向が強まるにつれて、
オブジェクト指向プログラミング方法論への関心が高ま
っている。このことは、手順モデルと「線形(linear)」
コードを強調する従来のプログラミング技法が、多くの
状況下で設計と維持が困難であることに起因している。
一般的に、従来の方法を用いて生成された大きなプログ
ラムは「脆い(brittle) 」、すなわち、わずかな変更で
もプログラミングコードの多くの要素が影響を受ける。
したがって、ユーザーの要望に応じたソフトウェアの小
規模な変更でも、全プログラムの大幅な再設計とリライ
トが必要になる場合がある。
【0003】オブジェクト指向プログラミング手法は、
これらの問題を回避する傾向がある。理由は、オブジェ
クト方法論は、手順よりもむしろデータの取扱に重点を
置き、したがって、プログラマーに現実世界の問題をモ
デル化するための、より直観的アプローチを提供するか
らである。更にオブジェクトは、オブジェクトのインタ
ーフェイスを介してのみ関連データおよび手順へのアク
セスを可能にすることによって、関連データと手順をカ
プセル化した状態で、プログラムの他の情報から隠して
おく。したがって、オブジェクトのデータおよびまたは
手順への変更は、プログラムの他の部分から比較的隔離
された状態にある。これによって、従来の方法を用いて
書かれたコードに比べて保守の容易なコードが提供さ
れ、特定のオブジェクトのコードへの変更が、他のオブ
ジェクトのコードに影響を与えることがない。更に、オ
ブジェクトは本来モジュール的な性質があるので、個々
のオブジェクトとインターフェイスを種々のプログラム
に再使用することができる。したがって、プログラマは
「試行正(tried and true)」のオブジェクトのライブラ
リを生成し、種々のアプリケーションに反復使用するこ
とができる。これによってソフトウェアの信頼性が高ま
る一方、信頼性のあるプログラミングコードが繰り返し
用いられるので、開発時間が短縮される。
【0004】オブジェクト指向方法論の分野における最
近の進歩は、コンピュータネットワークを介して相互接
続されたコンピュータに対する分散オブジェクトオペレ
ーティング環境の実装(implementation)であった。ここ
で使われる場合、用語の「分散オブジェクト」または
「オブジェクト」は、インターフェイスを介したオペレ
ーションによって操作できるコードとデータのカプセル
化されたパッケージのことである。したがって、分散オ
ブジェクトは、オブジェクト指向プログラミング(OO
P)の当業者には、従来のプログラミングオブジェクト
を定義する基本的特徴を含むもの、と理解されるだろ
う。しかし、分散オブジェクトは2つの重要な特徴を含
む点で、従来のプログラミングのオブジェクトとは異な
る。第1に、分散オブジェクトは多言語的である。すな
わち、分散オブジェクトのインターフェイスは、様々な
プログラミング言語にマップ化できるインターフェイス
定義言語を使って定義される。このようなインターフェ
イス定義言語のひとつに、オブジェクト管理グループの
IDLがある。第2に、分散オブジェクトは場所独立的
である、つまり、分散オブジェクトはネットワークのど
こにでも配置できる。これは、通常、単一アドレススペ
ースに存在する従来のプログラミングオブジェクトとは
明らかに異なる。
【0005】分散オブジェクトオペレーテイング環境に
ついて更に詳述すると、分散オブジェクトは、他のオブ
ジェクトにリクエストを送っているか、クライアントか
らのリクエストに応答しているかによって、クライアン
トオブジェクトにもサーバーオブジェクトにもなれる。
分散オブジェクト環境では、リクエストと応答は、オブ
ジェクトの位置とステータスをよく知っているオブジェ
クトリクエストブローカー(ORB)を介して行われ
る。そのようなORBの実行に適したひとつのアーキテ
クチャは、共通オブジェクトリクエストブローカーアー
キテクチャ(CORBA)仕様によって提供される。C
ORBA仕様は、オブジェクト管理グループ(OMG)
によって、分散クライアント- サーバー環境におけるオ
ブジェクトに関して分散コンピューティング環境世界を
定義するために開発されたが、その分散クライアント-
サーバー環境では、サーバーオブジェクトが、サービス
をリクエストするクライアントにサービスを提供するこ
とができる。
【0006】クライアントが目標オブジェクトをコール
するとき、リクエストされたサービスを目標オブジェク
トが確実に実行できるように、一定の手順を実行しなけ
ればならない。これらの手順は、目標オブジェクトを識
別して場所を特定すること、目標オブジェクトが存在す
るサーバープロセスを開始すること(必要な場合)、目
標オブジェクトを活性化(activating)すること(必要な
場合)、および最後に、その目標オブジェクトとの接続
を形成して、コールを転送(passing) することを含む。
ORBはオブジェクトアダプタ(OA)とともに、これ
らのサービスを実行するために、クライアントおよび目
標オブジェクトと共働しなくてはならない。
【0007】サービスを提供するための従来技術モデル
のひとつを、図1を参照して考察する。説明として、サ
ービス50は、クライアント52等のクライアントにサ
ービスを提供するコンピュータエンティティである。通
常、従来技術では、サービス50は単一のコンピュータ
プロセス(しばしば「サーバープロセス」または単に
「サーバー」と呼ばれる)内に存在している。サービス
50はオブジェクト1(54)、オブジェクト2(5
6)、およびオブジェクト3(56)等のオブジェクト
(標準オブジェクトまたは分散オブジェクト)を含む。
これらのオブジェクトがサービス50を提供するために
共働する。オブジェクト1(54)、オブジェクト2
(56)、およびオブジェクト3(58)の各々は、そ
れぞれ、インターフェイス1(60)、インターフェイ
ス2(62)、およびインターフェイス3(64)等の
インターフェイスを持つ。先に考察したように、データ
へのアクセスと、オブジェクトの手順は、オブジェクト
インターフェイスを介してのみ許されるので、それらは
インターフェイスの性質によって制限される。このこと
がオブジェクトのモジュール性を保証している。
【0008】図1の従来技術のモデルは、クライアント
52へサービスを提供する場合に多重オブジェクトどう
しの共働を可能にしているが、オブジェクトのモジュー
ル性と、インターフェイスによって与えられる制約のた
めに、このモデルに固有の限界がある。例えば、多くの
シナリオにおいて、オブジェクトインターフェイスは、
内部オブジェクトデータと、クライアント52からの手
順とを隠したり保護するために書かれるだろう。しか
し、サーバー50の作動が最善であるには(作動した場
合)、オブジェクトが互いに協同(conspire)することが
必要だろう。例えば、オブジェクトは、オブジェクトの
それぞれのインターフェイスの能力範囲外の相手との相
互通信を必要とするだろう。多分、オブジェクト1(5
4)は、オブジェクト3(58)に含まれる状態の値を
知る必要があるだろうが、この値はクライアント52か
ら保護および/または隠しておくことが望ましいだろ
う。したがって、インターフェイス3は、オブジェクト
1(54)のために備えをすることなくこの値にアクセ
スするだろうし、サービス50はその機能を果たし得な
いだろう。必要なのは、オブジェクト間のコンスピラシ
をもたらすための方法と装置である。コンスピラシによ
り、インターフェイスの「背後」で起こるオブジェクト
間の対話が可能になる。例えば、コンスピラシにより、
コンスピレータオブジェクトが不変状態を共有できるこ
とになるだろう。
【0009】
【課題を解決するための手段】上記およびその他の目的
を達成するために、また本発明の目的に従って、オブジ
ェクト間のコンスピラシを提供するための方法と装置を
説明する。本発明の一実施例によれば、コンピュータに
実装されるサービス(computer implemented service)は
コンスピラシサーバントと、多数のコンスピレータオブ
ジェクトを含む。コンピュータに実装されるサービス
は、分散オブジェクト環境の一部として編成されたコン
ピュータ上で実行するサーバープロセス内に存在するよ
うに意図されている。各コンスピレータオブジェクトは
関連オブジェクトレファレンスと関連スケルトンを持
つ。各スケルトンは、サーバープロセス外に存在するク
ライアントからリクエストを受けるとともに、受け取っ
たクライアントリクエストをコンスピラシサーバントに
直接転送するように編成されている。更に、コンスピラ
シサーバントは、各コンスピレータオブジェクトからリ
クエストされたリクエストサービス(requested servic
e)を提供するように編成される。
【0010】関連実施例では、コンピュータに実装され
るサービスは、更に、スケルトンにアクセス可能であっ
て、プロセス中に存在するように意図されたサーバント
ルックアップテーブルを含む。サーバントルックアップ
テーブルは、コンスピラシサーバントを含めて、プロセ
スで利用可能な全ての活動サーバントの場所を識別する
のに役立つ。いくつかの実施例において、各分散オブジ
ェクトはそれぞれ明確なインターフェイスを持つ。別の
関連実施例では、コンピュータに実装されるサービスの
コンスピラシサーバントは、結果をクライアントに直接
返すように編成されている。更に別の関連実施例では、
コンピュータに実装されるサービスのスケルトンは、遠
隔クライアントから受けたクライアントリクエストをア
ンマーシャルするように編成されている。したがって、
スケルトンは、分散オブジェクトコールを取り込んで、
その分散コールをコンスピラシサーバントに適したコー
ルに変換することができる。
【0011】本発明の別の実施例では、分散オブジェク
ト環境に基づくコンピューティングシステムの一部とし
て編成された、別のコンピュータに実装されるサービス
を含む。この実施例で、コンピュータに実装されるサー
ビスは、コンスピラシオブジェクトと複数の分散コンス
ピレータオブジェクトを含む。コンスピラシオブジェク
トは、コンスピラシスケルトンと、コンスピラシサーバ
ントと、外部クライアントには未知の、隠された関連コ
ンスピラシオブジェクトレファレンスを持つ。また、各
分散オブジェクトは、外部クライアントには既知かもし
れない関連コンスピレータオブジェクトレファレンス、
クライアントからのリクエストを受けるように編成され
た関連コンスピレータスケルトン、および関連コンスピ
レータサーバントを持つ。コンスピレータスケルトン
は、受け取ったクライアントリクエストを直接にコンス
ピラシサーバントに転送するように編成されているが、
このコンスピラシサーバントはコンスピラシオブジェク
トに関連するオブジェクトレファレンスを知っているの
で、コンスピレータサーバントはコンスピラシオブジェ
クトに対してリクエストを行なうことができる。
【0012】関連実施例において、コンピュータに実装
されるサービスは更に、スケルトンに利用可能であっ
て、コンスピラシサーバントを含む各種サーバントの場
所を識別する、サーバントルックアップテーブルを持
つ。別の関連実施例では、コンピュータに実装されるサ
ービスの各コンスピレータオブジェクトは明確なインタ
ーフェイスを持つ。更に別の実施例では、コンスピレー
タサーバントは、そのリクエストをコンスピラシオブジ
ェクトの方向に転送する前と後の両方で、クライアント
リクエストに応答してオペレーションを実行する。
【0013】本発明の更に別の実施例では、分散オブジ
ェクト環境に基づくコンピューティングシステムとして
編成された、コンピュータ上で実行されるサーバープロ
セス内に存在するように編成されたコンピュータに実装
されるサービスが説明されている。このコンピュータに
実装されるサービスは、コンスピラシオブジェクトと複
数の分散オブジェクトを含む。コンスピラシオブジェク
トは、コンスピラシスケルトン、コンスピラシサーバン
ト、およびコンスピラシエンジンを含む。また、コンス
ピラシオブジェクトは、更に、コンスピラシスケルトン
へのアクセスを許すとともに、外部クライアントには未
知の、関連コンスピラシオブジェクトレファレンスを持
つ。、分散した各コンスピラシオブジェクトは、クライ
アントからリクエストを受けるように編成された関連コ
ンスピレータスケルトン、コンスピラシスケルトンへの
アクセスを許すとともに外部クライアントには既知かも
しれない関連コンスピレータオブジェクトレファレンス
と、関連コンスピレータサーバントとを持つ。コンスピ
レータスケルトンは、受け取ったクライアントリクエス
トを直接、コンスピレータサーバントに転送することが
できる。また、コンスピレータサーバントはコンスピラ
シオブジェクトに関連するオブジェクトレファレンスを
知っているので、コンスピラシオブジェクトにリクエス
トを行なうことができる。更に、コンスピラシサーバン
トは、コンスピラシオブジェクトにリクエストが行なわ
れたとき、コンスピラシエンジンへのダイレクトポイン
タ(direct pointer)をコンスピレータサーバントに返す
ように編成されているので、コンスピレータサーバント
はコンスピラシエンジンと直接、通信することができ
る。
【0014】本発明のひとつの方法面では、下記のサー
ビスをクライアントに提供するためのコンピュータ実装
方法を提供する。すなわち、コンスピラシサーバント
と、それぞれコンスピレータスケルトンを持つ複数のコ
ンスピレータオブジェクトを含むサーバープロセス内で
実装されるサービスである。コンピュータ実装方法は、
以下のコンピュータ制御ステップを含む。すなわち、第
1コンスピレータスケルトンにおいて、第1コンスピレ
ータスケルトンに関連する第1コンスピレータオブジェ
クトのための第1発動リクエストを受けるステップ;第
1コンスピレータスケルトンに、コンスピラシサーバン
トを直接呼び出させるステップ;コンスピラシサーバン
トから、第1コンスピレータ発動リクエストを開始した
クライアントに、結果を直接返すステップ;第2コンス
ピレータスケルトンにおいて、第2コンスピレータスケ
ルトンに関連する第2コンスピレータオブジェクトのた
めの第2発動リクエストを受けるステップ(第1と第2
のコンスピレータスケルトンは互いに別個である);第
2コンスピレータスケルトンにコンスピラシサーバント
を直接に発動させるステップ;およびコンスピラシサー
バントから、第2コンスピレータ発動リクエストを開始
したクライアントに、結果を直接に返すステップであ
る。
【0015】本発明の関連方法面では、コンスピレータ
スケルトンのひとつがコンスピラシサーバントを発動毎
に、コンスピラシサーバントがルックアップテーブル中
で活動していると識別されるか否かを判定するために、
発動スケルトンは活動サーバントルックアップテーブル
をチェックする。更に、コンスピラシサーバントがルッ
クアップテーブル中で活動していると識別されない旨を
判定されたときは、発動スケルトンは、コンスピラシサ
ーバントを形成するとともに、ルックアップテーブル中
のコンスピラシサーバントは活動していると識別する。
いくつかの実施例で、コンスピラシ識別子(ID)は、
ルックアップテーブル中のキーとして使用され、コンス
ピラシサーバントへのポインタはそのキーに対応する値
として格納される。追加の実施例では、ルックアップテ
ーブル中で、コンスピラシサーバントが活動していると
識別されたときは、発動スケルトンはコンスピラシID
を使ってコンスピラシサーバントを識別するとともに、
コンスピラシIDに対応する格納値を利用して、コンス
ピラシサーバントの場所を特定する。別の実施例で、各
コンスピレータスケルトンは、スケルトンのサーバント
IDとして作動する単一のコンスピラシIDを共有す
る。
【0016】別の方法面では、クライアントにサービス
を提供するためのコンピュータ実装方法が提供される。
このサービスは、コンスピラシスケルトンとコンスピラ
シサーバントを有するコンスピラシオブジェクト;それ
ぞれコンスピレータスケルトンを有する複数のコンスピ
レータオブジェクト;およびコンスピレータサーバント
を持つ。その方法は、コンピュータ制御される;第1コ
ンスピレータスケルトンにおいて、第1コンスピレータ
スケルトンに関連する第1コンスピレータオブジェクト
のための第1発動リクエストを受けるステップ;第1コ
ンスピレータスケルトンに、第1コンスピレータサーバ
ントを発動させるステップ;第1コンスピレータサーバ
ントに、コンスピラシオブジェクトに関連するコンスピ
ラシオブジェクトレファレンスを発動させるステップ
(コンスピラシオブジェクトレファレンスは、サービス
の一部はでないクライアントには利用できない);コン
スピラシサーバントから、第1コンスピレータ発動リク
エストを開始した第1コンスピレータサーバントに、結
果を返すステップ;第2のコンスピレータスケルトンに
おいて、第2コンスピレータスケルトンに関連する第2
コンスピレータオブジェクトのための第2発動リクエス
トを受けるステップ;第2コンスピレータスケルトン
に、第2コンスピレータサーバントを発動させるステッ
プ;第2コンスピレータサーバントに、コンスピラシオ
ブジェクトに関連するコンスピラシオブジェクトレファ
レンスを発動させるステップ(コンスピラシオブジェク
トレファレンスは、サービスの一部ではないクライアン
トには利用できない);コンスピラシサーバントから、
第2コンスピレータ発動リクエストを開始した第2コン
スピレータサーバントに、返すステップ、および結果
を、コンスピレータサーバントからそれらのそれぞれの
クライアントに戻すステップ;を備える。
【0017】
【発明の実施の形態】本発明は、オブジェクト指向プロ
グラミング(OOP)に基づく分散オペレーティング環
境に関する。更に具体的には、本発明は、オブジェクト
間のコンスピラシを提供するための方法と装置を開示す
る。用語の定義に続いて、その方法と装置をより詳細に
検討するが、最初に、本発明に適したコンピュータシス
テムを考察し、次に本発明の装置とデータ構造のいくつ
かの実施例を詳細に記述した後、更に本発明の方法面の
詳細な説明を行なう。
【0018】I.用語の定義 ここで使用される場合、用語の「分散オブジェクト」ま
たは「オブジェクト」は、オブジェクトに関連して定義
されたインターフェイスを介したオペレーションによっ
て操作できるコードとデータのカプセル化されたパッケ
ージのことである。したがって、分散オブジェクトは、
当業者には従来のプログラミングオブジェクトを定義す
る基本的特徴を含むものと理解されるだろう。しかし、
分散オブジェクトは2つの重要な特徴を含む点で、従来
のプログラミングのオブジェクトとは異なる。まず第1
に、分散オブジェクトは多言語的である。分散オブジェ
クトのインターフェイスは、様々なプログラミング言語
にマップ化できるインターフェイス定義言語を使って定
義される。そのようなインターフェイス定義言語のひと
つにOMGのIDLがある。第2に、分散オブジェクト
は場所独立的である、つまり、分散オブジェクトはネッ
トワークのどこにでも配置できる。これは、通常、クラ
イアントと同じアドレススペースに存在する従来のプロ
グラミングオブジェクトとは明らかに異なる。分散オブ
ジェクトは、他のオブジェクトにリクエストを送ってい
るか、他のオブジェクトからのリクエストに答えている
かによって、クライアントオブジェクトにもサーバーオ
ブジェクトにもなれる。リクエストと応答は、オブジェ
クトの位置とステータスをよく知っているオブジェクト
リクエストブローカ(ORB)を介して行われる。
【0019】「分散オブジェクトシステム」または「分
散オブジェクトオペレーティング環境とは、OBRを介
して通信を行なう分散オブジェクトを備えるシステムの
ことである。
【0020】「オブジェクトレファレンス」または「ob
jref」とは、別のオブジェクトに対するディレクション
とインディレクションを含むオブジェクトのことであ
る。オブジェクトレファレンスの生成と定義は当業者に
はなじみである。
【0021】ここで定義する「クライアント」は、第2
オブジェクトにリクエストを送るエンティティのことで
あり、このモデルでは、第2オブジェクトは「サーバー
オブジェクト」または「目標オブジェクト」と呼ばれ
る。このようにして、クライアントはサーバーからオペ
レーションまたは実装を発動する。分散オブジェクト環
境内で当前記オブジェクトの要件は多言語的であるの
で、クライアントは実行プログラミング言語の知識を持
つ必要がなく、また実行はクライアントのプログラミン
グ言語の知識を持つ必要がない。分散オブジェクト環境
におけるクライアントとサーバーは、インターフェイス
定義言語のみを用いて通信すればよい。上述のように、
クライアントからサーバーへのリクエストと、クライア
ントへのサーバーの応答は、ORBによって処理され
る。重要なのは、クライアントとサーバーが、同じプロ
セス内、同じホストコンピュータ上、または2台の異な
るコンピュータ上に存在できることである。
【0022】「オブジェクトインターフェイス」とは、
或るオブジェクトが提供するオペレーション、属性、お
よび例外の仕様のことである。分散オブジェクトのオブ
ジェクトインターフェイスはIDLを用いて書くことが
望ましい。上述のように、オブジェクトはそれらのイン
ターフェイスを介してトランザクションを実行する。し
たがって、インターフェイスを使用することにより、ト
ランザクションにおける方法と、オブジェクトのデータ
との定義に使用されるプログラミング言語をオブジェク
トが認識する必要性がなくなる。
【0023】II.コンスピラシの提供 本発明に従って、オブジェクトオペレーティング環境に
おけるオブジェクト間のコンスピラシを提供するため
の、各種の方法と装置を開示する。特に、分散オブジェ
クトオペレーティング環境内のコンスピラシを意図して
いる。一般的に、本発明は、オブジェクトの集合がコン
スピラシを形成するために用いる機構を教示する。そこ
で、オブジェクトは、オブジェクトインターフェイスの
背後で通信することもできるし、すべての資源を共有す
ることもできる。いくつかの実施例で、オブジェクトの
集合はクライアントにサービスを提供するために共働す
る。一実施例によれば、コンスピラシのメンバであるオ
ブジェクトは、個別のプロセスに配置される分散オブジ
ェクトであるかもしれない。いくつかの実施例では、コ
ンスピラシのメンバであるオブジェクトは、インターフ
ェイスの背後で互いに対話を実行できるし(すなわち、
インターフェイスを介した通信を必要としない)、不変
状態を共有することもできる。本発明の3つの具体的な
実施例を記載するが、これらは、(1)共有サーバント
コンスピラシモデル(shared servant conspiracy mode
l) 、(2)共有オブジェクトコンスピラシモデル(shar
ed objectconspiracy model)、および(3)ハイブリッ
ドオブジェクトコンスピラシモデル(hybrid object con
spiracy model)である。これらの各実施例には本発明の
コンスピラシコンセプトが組み込まれているが、それで
も、それらは独自の利点を持ち、その利点は図面の詳細
説明から明らかであろう。
【0024】ここで、オブジェクトは、他のオブジェク
トにリクエストを送っているか、あるいはクライアント
からのリクエストに答えているかによって、クライアン
トオブジェクトにもサーバーオブジェクトにもなれる。
更に、オブジェクトの集合はクライアントに「サービ
ス」を提供するために共働するかもしれない。分散オブ
ジェクト環境では、リクエストと応答は、オブジェクト
の位置とステータスをよく知っているオブジェクトリク
エストブローカ(ORB)を介して行われる。そのよう
なORBの実装に適したひとつのアーキテクチャが、共
通オブジェクトリクエストブローカーアーキテクチャ
(CORBA)仕様によって提供される。CORBA仕
様は、オブジェクト管理グループ(OMG)によって、
分散クライアント- サーバー環境におけるオブジェクト
に関して分散コンピューティング環境世界を定義するた
めに開発されたが、その分散クライアント- サーバー環
境では、サーバーオブジェクトが、サービスをリクエス
トするクライアントにサービスを提供することができ
る。
【0025】以下の考察では、「オブジェクト」と「分
散オブジェクト」の用語は互換性をもって使用される。
それにもかかわらず、当業者は、文脈から、または明確
に特定する記述によって、異なる種類のオブジェクトと
用語オブジェクトの異なる用法の違いを区別できるだろ
う。一般的に、分散オブジェクトは、分散オブジェクト
オペレーティング環境の全体を通して、クライアントに
アクセス可能な(ORBを介して)特質を持つが、C++
または SmallTalk オブジェクト等の伝統的プログラミ
ングオブジェクトは、その伝統的プログラミングオブジ
ェクトと同じメモリスペースに存在するクライアントに
利用可能であるに過ぎない。
【0026】一般に、サーバントオブジェクトは、クラ
イアントがリクエストする実際のサービス(すなわちオ
ペレーション)を実行する。しかし、分散オブジェクト
オペレーティング環境では、分散オブジェクトは、分散
オブジェクトオペレーティング環境の全体を通して配置
されたクライアントのためのサービスを、そのオブジェ
クトが実行できるために必要なステップを実行する追加
のエンティティを持たなければならない。例えば、遠隔
コンピュータプロセスに配置されたクライアントは、そ
の遠隔コンピュータプロセス内に存在する代理オブジェ
クトをコールすることによって、その分散オブジェクト
のオペレーションを発動するだろう。代理オブジェクト
は、次に、そのコールを分散オブジェクトに転送するた
めに必要な機能を実行する。代理が実行する機能は、転
送準備のためにコールをマーシャルすること、およびそ
の後でコールを転送することを含む。次に、サーバント
オブジェクトが存在するサーバープロセスは、分散オブ
ジェクトのためのオペレーション発動を受けること、そ
の発動をアンマーシャルすること、およびサーバントオ
ブジェクトのオペレーションを発動すること、等の機能
を実行する対応スケルトンオブジェクトも含む。したが
って、活性化された分散オブジェクトは、サーバントオ
ブジェクト(オブジェクトオペレーションを実行す
る)、代理オブジェクト(コールをマーシャルして転送
する)、およびスケルトンオブジェクト(コールを受け
てアンマーシャルする)を含むことができる。
【0027】クライアントがオブジェクトをコールする
ときは、クライアントはそのオブジェクトに対応するア
ドレシング情報を持たなければならない。伝統的な(す
なわち非分散の)オブジェクト指向オペレーティング環
境で、クライアントは、同一アドレススペース、すなわ
ち同一プロセス内に存在するオブジェクトと対話できる
に過ぎない。したがって、アドレシング情報は通常、目
標オブジェクトが存在するアドレススペースへのルート
を指し示す単なるポインタである。分散オブジェクトオ
ペレーティング環境では、代理オブジェクトが、所望の
目標オブジェクトに関するオブジェクトレファレンスを
持たなければならない。このオブジェクトレファレンス
は本質的に、クライアントに目標オブジェクトへのルー
トを指し示すのに十分なアドレシング情報を含まなけれ
ばならない。オブジェクトレファレンスアドレシング情
報は、ダイレクトアドレシング情報でもよい。例えば、
ダイレクトアドレシング情報は、ホストコンピュータネ
ットワークアドレス、サーバープロセスネットワークポ
ート番号、および目標オブジェクト識別子を含むことが
できる。しかし、このアドレシング情報は、インディレ
クションであっても、ダイレクトアドレシング情報とイ
ンディレクションとの組み合わせであってもよい。ここ
で、「インディレクション(indirection) 」とは、情
報、ポインタ等の一組の情報であり、クライアントエン
ティティに資源(ロケータオブジェクト等)へのルート
を指し示し、資源は、クライアントエンティティにその
オブジェクトへのルートを示すことができる。説明のた
めに例えると、クライアントが地理的方向をリクエスト
した場合、インディレクションはクライアントに現在の
地図の場所を指示するか、あるいは多分、地理に詳しい
個人の電話番号をクライアントに提供するだろう。
【0028】アドレシング情報の更に詳しい説明と、異
なる種類のオブジェクトレファレンスの適切な実施例に
ついては、米国特許出願「弁理士書類番号:SUN1P
025/P721、発明の名称:Methods, Apparatus,
and Data Structures for Managing Objects、発明者:
Brownell 他」を参照されたい。更に、分散オブジェク
トオペレーティング環境におけるオブジェクト間の接続
の形成と終了に関する適切な一実施例は、米国特許出願
「弁理士書類番号:SUN1P018/P715、発明
の名称:Methods and Apparatus for Managing Connect
ions for Communication amang Objects in a Distribu
ted Object System、発明者:Brownell他」に開示され
ている。
【0029】分散オブジェクトオペレーティング環境に
おいて、目標オブジェクトをクライアントがコールする
ときは、リクエストされたサービスを目標オブジェクト
が確実に実行できるように、一定の手順を実行しなけれ
ばならない。これらの手順は、目標オブジェクトを識別
して場所を特定すること、目標オブジェクトが存在する
サーバープロセスを起動すること(必要な場合)、目標
オブジェクトを活性化すること(必要な場合)、目標オ
ブジェクトの不変状態をその実装と整合させること(必
要な場合)、および最後に、その目標オブジェクトとの
接続を形成してコールを転送することを含む。ORBは
オブジェクトアダプタ(OA)とともに、これらのサー
ビスを実行するために、クライアントおよび目標オブジ
ェクトと共働しなくてはならない。サーバープロセスの
起動、目標オブジェクトの活性化、目標オブジェクトを
ロケータサービスを用いて登録すること、およびサーバ
ープロセスの管理に関するその他のタスク、に関する適
切な実施例は、米国特許出願「弁理士書類番号:SUN
1P030/P747、発明の名称:Methods andAppar
atus for Managing Computer Processes、発明者:Meng
es 他」に開示されている。
【0030】オブジェクトは、本発明で意図したよう
に、コンピュータプロセスのもとで実行される(ORB
および/またはホストコンピュータによる)。コンピュ
ータプロセスは、異なる実行のスレッドをコンピュータ
システムが実行できるような、周知の共通のフレームワ
ークを提供する。例えていえば、コンピュータプロセス
は、コンピュータシステムの中で仕切られた領域と見做
すことができる。
【0031】実際に、コンピュータプロセスには、通
常、アドレススペース(すなわち、前記プロセスのみに
割り当てられたコンピュータメモリの部分)、一組のフ
ァイルディスクリプタ、プロセスの識別番号、およびひ
とつ以上の実行のスレッド(しばしばスレッドと呼ばれ
る)が含まれる。本発明が意図するようなマルチスレッ
ドシステムは、多重スレッドが単一プロセスの中で同時
処理されることを可能にしている。スレッド、マルチス
レッドのプロセス、および、同時性の原理の更に詳しい
説明については、「Concurrency Within DOE Object Im
plementations 」バージョン0.91、Dr. Robert Hag
mann 著:1993年5月27日 SunSoft発行、を参照
されたい。内容は、本明細書にそのまま引用して組み込
まれている。
【0032】図2は、本発明の一実施例によるマルチス
レッドプロセス100を示す。プロセス100は、コン
ピュータ30等のコンピュータ上に実装されるととも
に、スレッド102等の多重スレッド、不変および一時
的メモリを含む割り当てられたメモリ、ファイル識別子
106、およびオブジェクト108等の少なくともひと
つのオブジェクトを含む。オブジェクト108は状態1
10とコード112を含む。オブジェクト108は、通
常、状態110とコード112によって定義される。コ
ード112は本質的に、オブジェクトを実行させるオペ
レーティング命令である。したがって、状態110は、
実行可能なコードではない残部である。
【0033】本発明の特定の実施例では、コンピュータ
サービス、分散オブジェクト、コンピュータプロセス、
および分散オブジェクトのクライアントは、ネットワー
クによって相互に接続された1台以上のコンピュータ上
にある。このネットワークは任意の適当な形式を取るこ
とができる。例として、代表的なネットワーク編成10
を、図3に示す。このネットワーク編成10は、伝送線
14に結合された第1のコンピュータ12を含む。ネッ
トワーク10は、更に、データと命令をネットワーク化
されたコンピュータ間でやりとりできるように、他のコ
ンピュータ18、20および22に加えてサーバー、ル
ーター等16も含む。コンピュータネットワークの設
計、構成、および実装は当業者にはなじみである。
【0034】図3のコンピュータ12、18、20、お
よび/または22としての使用に適した代表的なコンピ
ュータ30の概略を図4に示す。コンピュータ30は、
中央処理装置CPU32を含み、これはランダムアクセ
スメモリ(RAM)34と双方向的に、またリードオン
リーメモリ(ROM)36と一方向的に結合されてい
る。普通、RAM34は、CPU32上で「スクラッチ
パッド」メモリとして用いられ、作動中のプロセスのた
めの、分散オブジェクトおよびそれらに関連するコード
と状態とともに、プログラミング命令とデータを含む。
ROM36は普通、その機能を実行するためにコンピュ
ータが用いる、基本的なオペレーション命令、データお
よびオブジェクトを含む。更に、ハードディスク、CD
−ROM、磁気‐光(フロプティカル)ドライブ、テー
プドライブ等のような大容量格納装置38を含む。大容
量格納装置38は一般的に、普通はCPUによって頻繁
には用いられない追加のプログラミング命令、データ、
およびオブジェクトを含むが、アドレススペースはCP
Uによる、例えばバーチャルメモリ等のためのアクセス
が可能である。上記の各コンピュータは、更にキーボー
ド、ポインター器具(例えばマウスまたはスタイラス)
および/またはネットワーク接続等の入力媒体を含む入
出力源40を含む。追加の大容量格納装置(図示せず)
をネットワーク接続を介してCPU(32)に接続する
ことができる。上記のハードウェア要素およびソフトウ
ェア要素、更にネットワーキング装置の設計と構造は標
準的なものであり、当業者にはなじみのものであること
が、当業者には理解されるであろう。
【0035】本発明の一実施例によるコンスピラシを提
供するための共有サーバントモデルについて、図5を参
照して説明する。共有サーバントコンスピラシモデルで
は、各コンスピレータオブジェクトは共通のサーバープ
ロセスに存在するとともに、同じく、そのサーバープロ
セスに存在するコンスピラシサーバントオブジェクトへ
のルートを示すポインタを持つ。クライアントが、オブ
ジェクトオペレーションを発動するためにコンスピレー
タオブジェクトのひとつをコールすると、ダイレクトポ
インタを持つコンスピレータスケルトンは、クライアン
トからの発動をコンスピラシサーバントオブジェクトに
直接、転送することができる。リクエストされたサービ
スは次に、コンスピラシサーバントオブジェクトによっ
て実行可能であるが、そのオブジェクトが今度は、任意
の結果をそのクライアントに直接、返すことができる
(実際には、ORBが結果の返しを管理しており、コン
スピラシサーバントはコールの出所を知らない)。注意
すべきことは、この状態で、コンスピレータオブジェク
トがポインタとして協力することである。したがって、
共有サーバントコンスピラシモデルでは、コンスピレー
タオブジェクトはすべて同一プロセスに存在しなければ
ならない。更に、ポインタを用いてコールを直接転送す
る結果、クライアントのアイデンティティ(コンスピレ
ータも同様)は、コンスピラシサーバントに対して失わ
れる。したがって、クライアントのアイデンティティ
が、リクエストされたサービスの実行のために必要であ
り、かつクライアントのアイデンティティがコールの中
に在るパラメータから判定できない状況では、共有サー
バントコンスピラシのパラダイムは役立たない。
【0036】図5に、サーバープロセス200が複数の
クライアントサービスを提供する、共有サーバントモデ
ルの1つのシナリオのサンプルを示す。サーバープロセ
ス200は、コンスピレータ1スケルトンオブジェクト
202と、コンスピレータ2スケルトンオブジェクト2
04のようなスケルトンを持つコンスピレータオブジェ
クトを含む。コンスピレータ1スケルトンオブジェクト
202と、コンスピレータ2スケルトンオブジェクト2
04は、それぞれサーバントオブジェクトに対してコン
スピラシサーバントオブジェクト208へのルートを示
すコンスピラシポインタ206を持つ。コンスピレータ
1スケルトンオブジェクト202、コンスピレータ2ス
ケルトンオブジェクト204、およびコンスピレータサ
ーバントオブジェクト208は、共有サーバントコンス
ピラシ209を構成する。オブジェクト指向プログラミ
ングの当業者にはよく理解されるであろうが、コンスピ
ラシポインタ206等のポインタはローカルサーバープ
ロセスメモリの中のアドレスを直接的に指す。いくつか
の実施例では、サーバープロセス220は活動サーバン
トルックアップテーブル210も含み、このテーブルに
ついては後で詳しく説明する。
【0037】また、図5に、サーバーホストコンピュー
タシステム220(この中にサーバープロセス200が
存在する)と、遠隔クライアントホストコンピュータシ
ステム240とを示す。サーバーホストコンピュータシ
ステム220は更に、ローカルクライアント224と、
代理コンスピレータ1オブジェクト226と、代理コン
スピレータ2オブジェクト228とを持つローカルクラ
イアントプロセス222を含む。次に、代理コンスピレ
ータ1オブジェクト226は、コンスピレータ1オブジ
ェクトレファレンス230を持ち、代理コンスピレータ
2オブジェクト228は、コンスピレータ2オブジェク
トレファレンス232を持つ。オブジェクト指向プログ
ラミングの当業者にはよく理解されるであろうが、代理
オブジェクトは、目標オブジェクトホストプロセスとは
別のプロセス内に在って、目標オブジェクトのローカル
代表として働く。
【0038】遠隔クライアントホストコンピュータシス
テム240は、遠隔クライアント244と、遠隔代理コ
ンスピレータ1オブジェクト246と、遠隔代理コンス
ピレータ2オブジェクト248を持つ遠隔クライアント
プロセス242とを含む。次に、遠隔代理コンスピレー
タオブジェクト246と遠隔代理コンスピレータ2オブ
ジェクト248は、それぞれ、コンスピレータオブジェ
クトレファレンスコンスピレータ1オブジェクトレファ
レンス230と、コンスピレータ2オブジェクトレファ
レンス232を持つ。
【0039】図6に、本発明の一面による、共有サーバ
ントコンスピラシ209を生成するためのひとつの方法
を示す。ステップ502で、方法500によりコンスピ
レータオブジェクトの生成が開始される。いくつかの実
施例では、全てのコンスピレータを、順次または同時
に、相互に結合した状態で生成することができる。他の
実施例では、個々のコンスピレータオブジェクトを、必
要に応じたベースといった基準に基づいて生成できるか
もしれない。いずれにしても、次のステップ504で
は、これがこのコンスピラシのために生成中の第1のコ
ンスピレータオブジェクトであるか否かが判定される。
そのコンスピレータオブジェクトが、生成中の最初のコ
ンスピレータオブジェクトである場合、次のステップ5
06で、サーバープロセス200内で唯一性をもってコ
ンスピラシ識別子が生成される。一旦、コンスピラシ識
別子が生成されると、その識別子はコンスピラシ209
のメンバであるすべてのコンスピレータオブジェクトの
ための共通の識別子として使用できる。共有オブジェク
トコンスピラシは、2つ以上のコンスピラシを含むかも
しれないひとつのサーバープロセス200として制約を
受けているので、異なるコンスピラシが区別できるよう
に、コンスピラシ識別子はサーバープロセス200に対
して唯一性を持たなければならない。ステップ506を
生成するコンスピラシ識別子に続いて、ステップ508
で、コンスピラシ識別子は、生成中のコンスピレータオ
ブジェクトに対応する不変メモリに格納される。例とし
て、CORBA仕様に従う分散オブジェクトオペレーテ
ィング環境は、各オブジェクトに関するレファレンスデ
ータ(ORBによって保守される、通常1Kバイトまで
の所定量のメモリ)を提供する。生成中のコンスピレー
タオブジェクトに対応するレファレンスデータに、コン
スピラシ識別子を格納させることは十分役立つことが分
かっている。
【0040】ステップ504のNOの分岐を辿り、コン
スピラシ209のメンバである他のコンスピレータオブ
ジェクトが生成されたと、判定されると、次のステップ
510では、先に生成されたコンスピレータオブジェク
トのレファレンスデータからコンスピラシ識別子が検索
される。コンスピラシ識別子が検索されると、制御はス
テップ508に進み、そこでコンスピラシ識別子が、目
下生成中のコンスピラシオブジェクトに格納される。
【0041】本発明の一面による、リクエストされたサ
ービスを共有サーバントコンスピラシ209が実行する
ためのひとつの方法600について、図7を参照して説
明する。方法600は、コンスピレータスケルトンオブ
ジェクトがオペレーションの発動を受けたとき、ステッ
プ602で開始される。例として、スケルトンは、遠隔
コンピュータシステム上に配置された代理オブジェクト
を介して、サービスを求めるクライアントリクエストを
受けるかもしれない。次のステップ604で、コンスピ
ラシ識別子が、ステップ602でコールを受けたコンス
ピラシオブジェクトに対応するレファレンスデータから
検索される。
【0042】コンスピラシ識別子が検索されると、その
コンスピラシ識別子をキーとして使用し、ステップ60
6で、コンスピラシサーバントが活動サーバントルック
アップテーブル210にあるか否か判定される。コンス
ピラシサーバントが既に、活動サーバントルックアップ
テーブル210に記載されているときは、そのコンスピ
レータオブジェクト、またはコンスピラシ209の別の
メンバは、既に、活性化のコールを受け、コンスピラシ
サーバントオブジェクト208を生成し、そのコンスピ
ラシを活動サーバントルックアップテーブル210に登
録している。しかし、コンスピラシサーバントが活動サ
ーバントルックアップテーブル210に記載されていな
いときは、これらのステップを実行しなければならな
い。したがって、ステップ608で、コンスピラシサー
バントオブジェクト208はサーバープロセス200内
に生成される。これは、一部にはコンスピラシオブジェ
クト用メモリが、サーバープロセス200内に割り当て
られていることを意味する。
【0043】コンスピラシサーバントオブジェクト20
8がステップ608で生成された後、コンスピラシサー
バントオブジェクト208が登録される。これは、テー
ブルキーとしてのコンスピラシ識別子と、エントリ値と
してのコンスピラシサーバントオブジェクトへのポイン
タ206とを有する、活動サーバントルックアップテー
ブル210中に、エントリを生成することを含む。一
旦、ステップ610が終了すると、リクエストされたサ
ービスを実行する機構を実行できる。したがって、ステ
ップ612で、スケルトンがコンスピラシサーバントオ
ブジェクト上にオペレーションを発動する。コンスピラ
シサーバントは、リクエストされたサービスを実行する
ことによって応答し、何らかの結果が存在する場合、ス
テップ614においてコンスピラシサーバントがその結
果をクライアントに返すだろう。注意すべきことは、通
常、コンスピラシサーバントはクライアントリクエスト
の出所を知らず、ORBがこれらの通信を管理している
ことである。コンスピラシ209のメンバであるすべて
のコンスピレータオブジェクトは、共通のコンスピラシ
識別子を持つので、任意のコンスピレータオブジェクト
に対するコールはコンスピラシサーバントオブジェクト
208に向けられるだろう。
【0044】次に、本発明の一実施例による、コンスピ
ラシを提供するための共有オブジェクトモデルについて
図8を参照して説明する。共有オブジェクトモデルで
は、各コンスピレータオブジェクトは、コンスピラシス
ケルトンへのルートを間接的に示す(インディレクトす
る、indirect)オブジェクトレファレンスを持つ。次
に、このコンスピラシスケルトンはコンスピラシサーバ
ントオブジェクトへのルートを示すポインタを持つ。し
たがって、クライアントが、オブジェクトオペレーショ
ンを発動するためにコンスピレータオブジェクトのひと
つをコールするとき、コンスピレータスケルトンはコン
スピレータサーバント上にオペレーションを発動するだ
ろう。続いて、コンスピラシオブジェクトへのオブジェ
クトレファレンスを持つコンスピレータサーバントが、
コンスピラシスケルトンのオペレーションを発動するだ
ろう。次に、コンスピラシスケルトンは、コンスピラシ
サーバント上にオペレーションを発動するだろう。その
後、コンスピラシサーバントオブジェクトは、リクエス
トされたサービスを実行し、必要な場合、リクエストさ
れたオペレーションの結果をすべて元に転送するだろ
う。注意すべきことは、各コンスピレータサーバント
は、コンスピラシサーバントへのオブジェクトレファレ
ンスを持つので、コンスピラシは分散コンスピラシであ
るかもしれない。すなわち、コンピュータサービスは、
異なるコンピュータプロセスと、異なるコンピュータシ
ステム上に配置された分散オブジェクトを備えるかもし
れない。
【0045】その中で、サーバープロセス300が複数
のクライアントにサービスを提供する、共有オブジェク
トコンスピラシのひとつの簡単なシナリオを、図8に示
す。サーバープロセス300は、コンスピレータ1スケ
ルトンオブジェクト302やコンスピレータ2スケルト
ンオブジェクト304等のスケルトンを持つとともにコ
ンスピレータ1サーバントオブジェクト303やコンス
ピレータ2サーバントオブジェクト305等のサーバン
トを持つ、コンスピレータオブジェクトを含む。コンス
ピレータスケルトンは、ルックアップテーブル314で
求めたポインタを利用することによって、それらの各サ
ーバントを見出だす。コンスピレータ1サーバントオブ
ジェクト303とコンスピレータ2サーバントオブジェ
クト305は、それぞれサーバントオブジェクトに、コ
ンスピラシスケルトン308へのルートを間接的に示す
(indirect)コンスピラシオブジェクトレファレンス30
6を持つ。次に、コンスピラシスケルトン308は、コ
ンスピラシスケルトン308に、コンスピラシサーバン
トオブジェクト312のルートを示すポインタ310を
持つ。コンスピレータ1サーバントオブジェクト30
3、コンスピレータ2サーバントオブジェクト305、
コンスピラシスケルトン308、およびコンスピラシサ
ーバントオブジェクト312は、共有オブジェクトコン
スピラシ309を構成する。
【0046】また、図8は、サーバーホストコンピュー
タシステム320(この中にサーバープロセス300が
存在する)と、遠隔クライアントホストコンピュータシ
ステム340とを示す。サーバーホストコンピュータシ
ステム320は、更に、ローカルクライアント324
と、代理コンスピレータ1オブジェクト326と、代理
コンスピレータ2オブジェクト328とを有するローカ
ルクライアントプロセス322を含む。次に代理コンス
ピレータ1オブジェクト326は、コンスピレータ1オ
ブジェクトレファレンス330を持ち、代理コンスピレ
ータ2オブジェクト328は、コンスピレータ2オブジ
ェクトレファレンス332を持つ。オブジェクト指向プ
ログラミングの当業者にはよく理解されるであろうが、
代理オブジェクトは、目標オブジェクトホストプロセス
とは別であるかもしれないプロセスに存在し、目標オブ
ジェクトのローカル代表として働く。
【0047】遠隔クライアントホストコンピュータシス
テム340は、遠隔クライアント344と、遠隔代理コ
ンスピレータ1オブジェクト346と、遠隔代理コンス
ピレータ2オブジェクト348とを有する遠隔クライア
ントプロセス342を含む。次に、遠隔代理コンスピレ
ータオブジェクト346と、遠隔代理コンスピレータ2
オブジェクト348は、それぞれ、コンスピレータオブ
ジェクトレファレンスコンスピレータ1オブジェクトレ
ファレンス330と、コンスピレータ2オブジェクトレ
ファレンス332を持つ。
【0048】本発明の一面による、共有オブジェクトコ
ンスピラシ309を生成するための方法550につい
て、図9を参照して説明する。生成方法550は、最初
のステップ522から開始される。いくつかの実施例で
は、すべてのコンスピレータが、順次または同時に、相
互に結合した状態で生成されるかもしれない。他の実施
例では、個々のコンスピレータオブジェクトが、必要に
応じたベースといった基準に基づいて生成されるかもし
れない。いずれにしても、次のステップ554で、これ
が、生成中の第1のコンスピレータオブジェクト(この
コンスピラシの)であるか否かが判定される。それが、
生成中の第1のコンスピレータオブジェクトである場
合、ステップ556において、コンスピラシオブジェク
トが生成される。一旦、コンスピラシオブジェクトが生
成されると、ステップ558で、コンスピラシオブジェ
クトレファレンス306が、生成中のコンスピレータオ
ブジェクトの不変データに格納される。例として、コン
スピレータオブジェクトのレファレンスデータに、コン
スピラシオブジェクトレファレンスを格納することは十
分役立つことがわかっている。ステップ554におい
て、他のコンスピレータオブジェクトが生成されてい
る、と判定されると、プロセス制御はステップ560に
進み、そこで、コンスピラシオブジェクトレファレンス
306が、先に生成されたコンスピレータオブジェクト
の不変データから検索される。次に、制御がステップ5
58に進み、そこでコンスピラシオブジェクトレファレ
ンス306が、目下生成中のコンスピレータオブジェク
トの不変データに格納される。一旦、コンスピレータオ
ブジェクトがコンスピラシオブジェクトレファレンス3
06を持つと、方法550は完了する。
【0049】本発明の一面による、共有オブジェクトコ
ンスピラシ309のメンバーであるコンスピレータオブ
ジェクトを活性化するための方法620について、図1
0を参照して説明する。最初のステップ622で、コン
スピレータオブジェクトのための活性化コールを受け
る。例として、活性化コールは、共有オブジェクトコン
スピラシが実行するサービスを求めるリクエストに応答
して、ORBによって生成されるかもしれない。コンス
ピレータオブジェクトが既に活動的な場合、方法620
は直ちに完了する。しかし、コンスピレータオブジェク
トが活性化していない場合、ステップ624において、
コンスピラシオブジェクトレファレンス306が、コン
スピレータオブジェクトの不変データから検索される。
次にステップ626で、コンスピレータサーバントオブ
ジェクトが生成される。一旦、コンスピレータサーバン
トオブジェクトが生成されると、ステップ628におい
て、コンスピラシオブジェクトレファレンス306がコ
ンスピレータサーバントオブジェクトに転送される。コ
ンスピレータサーバントオブジェクトは今や活性化して
おり、コールを受ける準備ができている。注意すべき
は、コンスピラシオブジェクトレファレンス306の検
索ステップと、コンスピレータサーバントオブジェクト
の生成ステップ(ステップ624と626)が行なわれ
る順序は重要ではなく、逆でもよいし、同時に実行され
てもよい、ということである。
【0050】本発明の一面による、共有オブジェクトコ
ンスピラシ309等の共有オブジェクトコンスピラシの
サービスを発動するための方法700について、図11
を参照して説明する。方法700は、クライアントが、
共有オブジェクトコンスピラシ309のメンバであるコ
ンスピレータオブジェクトのオペレーションを発動する
ときに、ステップ702で開始される。次に、ステップ
704で、コンスピレータスケルトンは、サービスを求
めるクライアントのリクエストを受ける。コンスピレー
タスケルトンは、ステップ706において、コンスピレ
ータサーバントオブジェクト302へのポインタを、活
動サーバントルックアップテーブル314から検索する
とともに、コンスピレータサーバントオブジェクト30
2のオペレーションを発動することによって、応答す
る。いくつかの実施例では、活動サーバントルックアッ
プテーブル314がサーバープロセス300に存在する
が、これはオプションである。次に、ステップ708
で、コンスピレータサーバントオブジェクト302が、
コンスピラシオブジェクトレファレンス306を使っ
て、コンスピラシスケルトン308のオペレーションを
発動する。注意すべきことは、共有オブジェクトコンス
ピラシのパラダイムでは、各コンスピレータオブジェク
トサーバントが、コンスピラシスケルトン308に対す
るオブジェクトレファレンスを持つので、共有オブジェ
クトコンスピラシ309は、個別のプロセスと個別のホ
ストコンピュータシステムにコンスピレータオブジェク
トを配置した分散コンスピラシかもしれないことであ
る。コンスピレータオブジェクト308が発動を受けた
後、コンスピレータスケルトンは、ステップ710にお
いて、コンスピラシサーバントオブジェクト312への
ポインタ310を活動サーバントルックアップテーブル
314から検索する。次に、ステップ712で、コンス
ピレータスケルトンは、コンスピラシサーバントオブジ
ェクト312上にオペレーションを発動する。この時点
で、コンスピラシサーバントオブジェクト312は、ク
ライアントがリクエストするサービスを実行する。
【0051】ステップ702で、最初にリクエストされ
たクライアントサービスが、コンスピラシサーバントオ
ブジェクト312によって実行されると、返すべき結果
が無い場合、方法700は完了する。しかし、返すべき
結果がある場合、方法700はステップ714に継続
し、その時点で、コンスピラシサーバントオブジェクト
312は、その結果をコンスピレータサーバントオブジ
ェクトへ直接、転送する。続いてステップ716で、コ
ンスピレータサーバントオブジェクトがその結果をクラ
イアントに返す。
【0052】次に、本発明の一実施例による、ハイブリ
ッドコンスピラシを提供するための方法について、図1
2を参照して説明する。ハイブリッドコンスピラシモデ
ルは、各コンスピレータサーバントが、コンスピラシス
ケルトンへのルートを間接的に示すオブジェクトレファ
レンスを持つという点で、共有オブジェクトコンスピラ
シモデルの場合と同様に開始される。次に、コンスピラ
シスケルトンはコンスピラシサーバントオブジェクトへ
のルートを示すポインタを持つ。しかし、ハイブリッド
コンスピラシモデルのいくつかの実施例において、コン
スピラシサーバントは、更に、コンスピラシエンジンへ
のポインタを持つ。コンスピラシがコンスピラシサーバ
ントとコンスピラシエンジンの両方を含む実施例では、
コンスピレータオブジェクトが活性化すると、活性化さ
れたコンスピレータは、コンスピラシオブジェクトレフ
ァレンス上にコンスピラシエンジンへのポインタを求め
るリクエストを発動する。これに答えて、コンスピラシ
サーバントはコンスピラシエンジンへのポインタを、コ
ンスピレータサーバントに返す。次にクライアントリク
エストを受けると、コンスピレータサーバントは、その
サービスリクエストをコンスピラシエンジンに直接、転
送するかもしれない。ハイブリッドコンスピラシモデル
は分散コンスピラシを排除するが、ポインタを使って直
接伝えられるコールは、一般に、オブジェクトレファレ
ンスを使って間接的に伝えられるコールよりも一般的に
は速いので、通常は、より効果的である。
【0053】図12に、サーバープロセス400が複数
のクライアントにサービスを提供する、ハイブリッドコ
ンスピラシのひとつのシナリオのサンプルを示す。サー
バープロセス400は、コンスピレータ1スケルトンオ
ブジェクト402やコンスピレータ2スケルトンオブジ
ェクト404等のスケルトンを持つとともに、コンスピ
レータ1サーバントオブジェクト403やコンスピレー
タ2サーバントオブジェクト405等のサーバントを持
つ、コンスピレータオブジェクトを含む。コンスピレー
タ1サーバントオブジェクト403とコンスピレータ2
サーバントオブジェクト405は、それぞれ、サーバン
トオブジェクトにコンスピラシスケルトン408へのル
ートを間接的に示す(indirect)コンスピラシオブジェク
トレファレンス406を持つ(生成に続いて)。次に、
コンスピラシスケルトン408は、コンスピラシスケル
トン408に、コンスピラシサーバントオブジェクト4
12へのルートを示すポインタ410を持つ。更に、コ
ンスピラシサーバント412は、コンスピラシエンジン
413へのポインタ415を持つ。2つのコンスピラシ
コンポーネントつまり、コンスピラシサーバント412
とコンスピラシエンジン413により、有利なオペレー
ションの分布が得られる。通常、コンスピラシサーバン
ト412は、「戻りコンスピラシエンジンポインタ」オ
ペレーション等のひとつのオペレーションを持つに過ぎ
ないだろう。また、コンスピラシエンジン415は、コ
ンスピラシエンジンに適切であるとともに、コンスピラ
シのサービスを実行するために必要な他のすべてのオペ
レーションを含むだろう。コンスピレータサーバントは
活性化されると、「戻りコンスピラシエンジンポイン
タ」オペレーションを発動するだろう。発動の結果、コ
ンスピレータサーバントは、コンスピラシエンジン41
3へのポインタ415を受けるだろう。コンスピレータ
1サーバントオブジェクト402、コンスピレータ2サ
ーバントオブジェクト404、コンスピラシスケルトン
408、ポインタ410、コンスピラシエンジン41
3、ポインタ415、コンスピラシサーバントオブジェ
クト412、および任意の適切なスケルトンまたは代理
が、ハイブリッドコンスピラシ409を構成する。いく
つかの実施例で、サーバープロセス400は、更に、先
に記載した活動サーバントルックアップテーブル414
を含む。
【0054】また、図12に、サーバーホストコンピュ
ータシステム420(この中にサーバープロセス400
が存在する)と、遠隔クライアントホストコンピュータ
440とを示す。サーバーホストコンピュータシステム
420は、更に、ローカルクライアント424と、代理
コンスピレータ1オブジェクト426と、代理コンスピ
レータ2オブジェクト428とを持つローカルクライア
ントプロセス422を含む。次に代理コンスピレータ1
オブジェクト426は、コンスピレータ1オブジェクト
レファレンス430を持ち、代理コンスピレータ2オブ
ジェクト428は、コンスピレータ2オブジェクトレフ
ァレンス432を持つ。オブジェクト指向プログラミン
グの当業者にはよく理解されるであろうが、代理オブジ
ェクトは、目標オブジェクトホストプロセスとは別のプ
ロセスに存在し、目標オブジェクトのローカル代表とし
て働く。
【0055】遠隔クライアントホストコンピュータシス
テム440は、遠隔クライアント444と、遠隔代理コ
ンスピレータ1オブジェクト446と、遠隔代理コンス
ピレータ2オブジェクト448とを持つ遠隔クライアン
トプロセス442を含む。次に、遠隔代理コンスピレー
タオブジェクト446と、遠隔代理コンスピレータ2オ
ブジェクト448は、それぞれコンスピレータオブジェ
クトレファレンスコンスピレータ1オブジェクトレファ
レンス430と、コンスピレータ2オブジェクトレファ
レンス432を持つ。
【0056】ハイブリッドコンスピラシのための適切な
生成方法は、図9を参照した上記の方法550である。
この理由は、ハイブリッドコンスピラシ409は、コン
スピラシオブジェクトレファレンス406を使って開始
されるからである。ハイブリッドコンスピラシ409と
共有オブジェクトコンスピラシ309は、先ず、それぞ
れの活性化方法からして互いに相違がある。
【0057】本発明の一実施例による、ハイブリッドコ
ンスピラシ409を活性化するための方法650につい
て、図13を参照して説明する。最初のステップ652
で、ひとつのコンスピレータオブジェクトのための活性
化コールを受ける。例として、活性化コールは、共有オ
ブジェクトコンスピラシが実行するサービスを求めるリ
クエストに応答して、ORBによって生成されるかもし
れない。コンスピレータオブジェクトが既に活動してい
る場合、活性化方法650は直ちに完了する。しかし、
コンスピレータオブジェクトが活動していない場合、ス
テップ654において、コンスピラシオブジェクトレフ
ァレンス406がコンスピレータオブジェクトの不変デ
ータから検索される。次にステップ656で、コンスピ
レータサーバントオブジェクト402が生成される。そ
して、ステップ656で、コンスピラシスケルトン40
8が、コンスピラシエンジン413へのポインタ415
を獲得するために、コンスピラシオブジェクトレファレ
ンス406を使って発動される。一旦、コンスピレータ
サーバントオブジェクトが生成されて、ポインタ415
が検索されると、ステップ660において、ポインタ4
15が、コンスピレータサーバントオブジェクトに格納
される。コンスピレータサーバントオブジェクトは、今
度は活性化し、コールを受ける準備ができる。
【0058】本発明の一面による、ハイブリッドコンス
ピラシ409等のハイブリッドコンスピラシのサービス
を発動する方法730について、図14を参照して説明
する。方法730は、クライアントが共有オブジェクト
コンスピラシ409のメンバであるコンスピレータオブ
ジェクトのオペレーションを発動するときに、ステップ
732で開始される。次にステップ734で、コンスピ
レータスケルトンは、サービスを求めるクライアントの
リクエストを受ける。コンスピレータスケルトンは、ス
テップ736で、コンスピレータサーバントオブジェク
トへのポインタを活動サーバントルックアップテーブル
414から検索するとともにコンスピレータサーバント
オブジェクトのオペレーションを発動することによっ
て、応答する。いくつかの実施例において、活動サーバ
ントルックアップテーブル414がサーバープロセス4
00に存在するが、これはオプションである。次に、ス
テップ738で、コンスピレータサーバントオブジェク
トが、活性化中にそれが受け取ったポインタ415を直
接、使用して、コンスピラシエンジン413のオペレー
ションを発動する。注意すべきは、ハイブリッドコンス
ピラシのパラダイムでは、コンスピレータサーバントオ
ブジェクトはコンスピラシエンジン413へのポインタ
を利用しており、このモデルは分散できないということ
である。発動を受けた後、コンスピラシエンジン413
は、クライアントによってリクエストされたサービスを
実行する。
【0059】ステップ732で最初にリクエストされた
クライアントサービスが、コンスピラシエンジン415
によって実行されると、返されるべき結果が存在しない
場合、方法730は完了する。しかし、戻すべき結果が
存在する場合、方法730はステップ740において継
続し、その時点でコンスピラシエンジン414がその結
果をコンスピレータサーバントオブジェクトに直接、転
送する。続いてステップ742で、コンスピレータサー
バントオブジェクトが、その結果をクライアントに返
す。
【0060】本発明のいくつかの実施例についてのみ説
明したが、本発明はその精神と範囲から逸脱することな
く、他の多くの具体的な形態で実施できるものと解釈す
べきである。例えば、図5、8、12を参照して記載し
たコンスピラシのサンプルは単なる代表例であって、限
定的なものと見做してはならない。例えば、サーバープ
ロセスによって表されるサービスは多数のオブジェクト
を含むかもしれない。コンスピラシのすべての特性を記
述するには少なくとも2つのコンスピレータオブジェク
トが必要なので、例として2つのオブジェクトが選択さ
れている。別の例として、サーバープロセスは、コンス
ピラシに関係しない他のオブジェクト、他のコンスピラ
シ、および他のコンピュータエンティティを含むかもし
れない。更に、サーバーホストコンピュータとホストコ
ンピュータシステムは、他のコンピュータプロセスを含
むかもしれない。要するに、当然、理解されるように、
本発明を実装できるような、コンピュータ環境が取り得
る多数の構成が存在する。
【0061】オブジェクト指向プログラミングの当業者
にはよく理解されるであろうが、多くの、代理、スケル
トン、サーバントオブジェクト、およびサーバープロセ
ス等のコンピュータエンティティを区別するのに用いた
境界は、多少恣意的なもので、コンスピラシのパラダイ
ムの説明を助けるような形で設けたものである。しか
し、コンピュータシステム上に実装されるときは、これ
らの境界は、オブジェクト指向プログラミングの分野に
十分精通しない人にとって、図面が意味するほど必ずし
も明瞭ではない。
【0062】更に、図13のハイブリッドコンスピラシ
モデルに関する記載の実施例はコンスピラシサーバント
412とコンスピラシエンジン413とがひとつのサー
バント/エンジンになるように変えることができるだろ
う。その場合、コンスピラシサーバント/エンジンへの
ルートを間接的に示す(indirect)単一ポインタをコンス
ピレータサーバントに転送できるだろうし、コンスピラ
シサーバント/エンジンは、「戻りコンスピラシエンジ
ンポインタ」オペレーションを含むすべての適切なオペ
レーションを実行するだろう。
【0063】したがって、本明細書に記載の例は説明の
ためであって、制限するためではなく、本発明はここに
示された詳細事項に限られない。
【図面の簡単な説明】
【図1】従来技術のクライアント対サービスの対話の説
明図であり、サービスはインターフェイスを介してのみ
アクセス可能な3つのオブジェクトを含む。
【図2】本発明の一実施例によるコンピュータプロセス
の説明図で、このコンピュータプロセスは、多数の実行
のスレッド、分散オブジェクト、ファイル識別子、およ
びメモリを有する。
【図3】様々なコンピュータが接続されたコンピュータ
ネットワークの構成図である。
【図4】図3の1台のコンピュータの構成図である。
【図5】本発明の一実施例による共有サーバントコンス
ピラシモデルの説明図である。
【図6】図5の共有サーバントコンスピラシモデルのコ
ンスピレータを形成するための方法を示すフローチャー
トである。
【図7】図5の共有サーバントコンスピラシモデルのコ
ンスピレータを発動して活性化するための方法を示すフ
ローチャートである。
【図8】本発明の別の実施例による、共有オブジェクト
コンスピラシモデルの説明図である。
【図9】コンスピレータを生成するための方法を示すフ
ローチャートである。
【図10】図9の共有オブジェクトコンスピラシモデル
のコンスピレータを活性化するための方法を示すフロー
チャートである。
【図11】クライアントにサービスを提供するための、
図8の共有オブジェクトコンスピラシモデルのサーバー
プロセスのための方法を示すフローチャートである。
【図12】本発明の更に別の実施例による、ハイブリッ
ドオブジェクトコンスピラシモデルの説明図である。
【図13】図12のハイブリッドコンスピラシモデルの
コンスピレータを活性化するための方法を示すフローチ
ャートである。
【図14】本発明の一面による、クライアントにサービ
スを提供するための、図12のハイブリッドコンスピラ
シモデルのサーバープロセスのための方法を示すフロー
チャートである。
【符号の説明】
12,16,18,20,22…コンピュータ、14…
ネットワーク接続、30…コンピュータ、32…中央処
理装置(CPU)、34…RAM、36…ROM、38
…大容量記憶装置、40…入出力源、100…コンピュ
ータプロセス、102…スレッド、104…メモリ、1
06…ファイル、108…オブジェクト、110…状
態、112…コード、200,300,400…サーバ
プロセス、202,302,402…コンスピレータス
ケルトン1、204,304,404…コンスピレータ
スケルトン2、208,312,412…コンスピラシ
サーバント、210,314,411…ルックアップテ
ーブル、220,320,420…サーバーホストコン
ピュータシステム、222,322,422…クライア
ントプロセス、224,324,424…クライアン
ト、226,326,426…サロゲートコンスピレー
タ1、228,328,428…サロゲートコンスピレ
ータ2、240,340,440…クライアントホスト
コンピュータシステム、242,342,442…クラ
イアントプロセス、244,344,444…クライア
ント、246,346,446…サロゲートコンスピレ
ータ1、248,348,448…サロゲートコンスピ
レータ2、303,403…コンスピレータサーバント
1、305,405…コンスピレータサーバント2、3
08,408…コンスピラシスケルトン、413…コン
スピラシエンジン。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジェファーソン エー. ディンキンス アメリカ合衆国, カリフォルニア州 94087, サニーヴェール, セイヘン ウェイ 1355エヌ.

Claims (21)

    【特許請求の範囲】
  1. 【請求項1】 分散オブジェクト環境に基づくコンピュ
    ーティングシステムの一部として編成されたコンピュー
    タ上で実行されるサーバープロセス内に存在するように
    編成されたコンピュータに実装されるサービスであっ
    て、 コンスピラシサーバントと、 夫々が、関連オブジェクトレファレンスと、前記サーバ
    ープロセスの外に存在するクライアントからのリクエス
    トを受け、受け取ったクライアントリクエストを、直接
    に前記コンスピラシサーバントに転送する関連スケルト
    ンを有する複数のコンスピレータオブジェクトとを備
    え、前記コンスピラシサーバントは、前記コンスピレー
    タオブジェクトの各々にリクエストされたリクエスト済
    サービスを提供する、コンピュータに実装されるサービ
    ス。
  2. 【請求項2】 前記スケルトンにアクセス可能であり、
    前記プロセスに存在するように意図され、前記コンスピ
    ラシサーバントを含めて、前記プロセスにおいて使用可
    能なすべてのサーバントの場所を特定するサーバントル
    ックアップテーブルを更に備える、請求項1に記載のコ
    ンピュータに実装されるサービス。
  3. 【請求項3】 それぞれの前記分散オブジェクトは、明
    確なインターフェイスを有する、請求項1に記載のコン
    ピュータに実装されるサービス。
  4. 【請求項4】 前記コンスピラシサーバントは、結果を
    直接に前記クライアントへ返す、請求項1に記載のコン
    ピュータに実装されるサービス。
  5. 【請求項5】 前記スケルトンは、遠隔クライアントか
    ら受けたクライアントリクエストをアンマーシャルす
    る、請求項1に記載のコンピュータに実装されるサービ
    ス。
  6. 【請求項6】 分散オブジェクト環境に基づくコンピュ
    ーティングシステムの一部として編成されたコンピュー
    タに実装されるサービスであって、 コンスピラシスケルトンとコンスピラシサーバントとを
    含み、更に、外部クライアントには未知である関連コン
    スピラシオブジェクトレファレンスを有するコンスピラ
    シオブジェクトと、 夫々が、外部クライアントには既知かもしれない、関連
    コンスピレータオブジェクトレファレンスと、クライア
    ントからのリクエストを受け、受け取ったクライアント
    リクエストを直接に前記コンスピレータサーバントに転
    送する関連コンスピレータスケルトンと、前記コンスピ
    ラシオブジェクトに関連する前記オブジェクトレファレ
    ンスを知っており、前記コンスピラシスケルトンがリク
    エスト可能な関連コンスピレータサーバントとを有す
    る、複数の分散コンスピレータオブジェクトとを備える
    コンピュータに実装されるサービス。
  7. 【請求項7】 更に、スケルトンに利用可能であるとと
    もに、前記コンスピラシサーバントを含め、各種サーバ
    ントの場所を特定するサーバントルックアップテーブル
    を更に備える、請求項6に記載のコンピュータに実装さ
    れるサービス。
  8. 【請求項8】 夫々の前記コンスピレータオブジェクト
    は、明確なインターフェイスを有する、請求項6に記載
    のコンピュータに実装されるサービス。
  9. 【請求項9】 前記コンスピラシサーバントは、結果を
    前記コンスピレータサーバントに返すとともに、前記コ
    ンスピレータサーバントが、結果を前記クライアントに
    返す、請求項6に記載のコンピュータに実装されるサー
    ビス。
  10. 【請求項10】 前記コンスピレータサーバントは、前
    記クライアントリクエストを部分的に処理する、請求項
    9に記載のコンピュータに実装されるサービス。
  11. 【請求項11】 分散オブジェクト環境に基づくコンピ
    ューティングシステムの一部として編成されたコンピュ
    ータ上で実行されるサーバープロセス内に存在するよう
    に編成されたコンピュータに実装されるサービスであっ
    て、 コンスピラシスケルトンと、コンスピラシサーバント
    と、コンスピラシエンジンとを含み、更に、前記コンス
    ピラシスケルトンへのアクセスを許すとともに、外部ク
    ライアントには未知である、関連コンスピラシオブジェ
    クトレファレンスを有するコンスピラシオブジェクト
    と、 夫々が、クライアントからのリクエストを受け取り、受
    け取ったクライアントリクエストを直接に前記コンスピ
    レータサーバントに転送する関連コンスピレータスケル
    トンと、前記コンスピラシスケルトンへのアクセスを許
    すとともに、外部クライアントには既知かもしれない関
    連コンスピレータオブジェクトレファレンスと、前記コ
    ンスピラシオブジェクトに関連する前記オブジェクトレ
    ファレンスを知っているので、前記コンスピラシオブジ
    ェクトにリクエスト可能な関連コンスピレータサーバン
    トとを有する、複数の分散コンスピレータオブジェクト
    とを備え、前記コンスピラシサーバントは、前記コンス
    ピレータサーバントが前記コンスピラシエンジンと直接
    に通信できるように、前記コンスピラシオブジェクトに
    リクエストが行なわれるとき、前記コンスピラシエンジ
    ンへのダイレクトポインタを前記コンスピレータサーバ
    ントに返す、コンピュータに実装されるサービス。
  12. 【請求項12】 前記スケルトンに利用可能であるとと
    もに、前記コンスピラシサーバントを含め、各種サーバ
    ントの場所を特定するサーバントルックアップテーブル
    を更に備える、請求項11に記載のコンピュータに実装
    されるサービス。
  13. 【請求項13】 夫々の前記コンスピレータオブジェク
    トは、明確なインターフェイスを有する、請求項11に
    記載のコンピュータに実装されるサービス。
  14. 【請求項14】 前記コンスピラシエンジンは、結果を
    前記コンスピレータサーバントに返すとともに、前記コ
    ンスピレータサーバントは、結果を前記クライアントに
    返す、請求項11に記載のコンピュータに実装されるサ
    ービス。
  15. 【請求項15】 前記コンスピレータサーバントは、前
    記クライアントリクエストを部分的に処理する、請求項
    14に記載のコンピュータに実装されるサービス。
  16. 【請求項16】 コンスピラシサーバントと、夫々がコ
    ンスピレータスケルトンを含む、複数のコンスピレータ
    オブジェクトとを有するサーバープロセス内に実装され
    たサービスをクライアントに提供する、コンピュータに
    実装される方法であって、 第1のコンスピレータスケルトンにおいて、前記第1の
    コンスピレータスケルトンに関連する第1のコンスピレ
    ータオブジェクトのための第1の発動リクエストを受け
    る、コンピュータ制御のステップと、 前記第1のコンスピレータスケルトンに、前記コンスピ
    ラシサーバントを直接に発動させる、コンピュータ制御
    のステップと、 結果を、前記コンスピラシサーバントから、前記第1コ
    ンスピレータ発動リクエストを開始したクライアントに
    直接に返す、コンピュータ制御のステップと、 前記第1のコンスピレータスケルトンとは異なる第2コ
    ンスピレータスケルトンにおいて、前記第2コンスピレ
    ータスケルトンに関連する第2コンスピレータオブジェ
    クトのための第2発動リクエストを受ける、コンピュー
    タ制御のステップと、 前記第2コンスピレータスケルトンに、前記コンスピラ
    シサーバントを直接に発動させる、コンピュータ制御の
    ステップと、 結果を、前記コンスピラシサーバントから、前記第2コ
    ンスピレータ発動リクエストを開始したクライアントに
    直接に返す、コンピュータ制御のステップとを備えるコ
    ンピュータ実装方法。
  17. 【請求項17】 前記コンスピレータスケルトンの1つ
    が、前記コンスピラシサーバントを発動する毎に、発動
    する前記スケルトンは、前記コンスピラシサーバントが
    前記ルックアップテーブル中で活動していると識別され
    るか否かを判定するために、活動サーバントルックアッ
    プテーブルをチェックし、前記コンスピラシサーバント
    が前記ルックアップテーブル中で活動していると識別さ
    れない旨を判定されたときは、発動する前記スケルトン
    は、コンスピラシサーバントを生成するとともに、前記
    コンスピラシサーバントが前記ルックアップテーブル中
    で活動していると識別する、請求項16に記載の方法。
  18. 【請求項18】 前記コンスピラシサーバントが生成さ
    れるとき、コンスピラシ識別子が前記ルックアップテー
    ブル中でキーとして用いられるとともに、前記コンスピ
    ラシサーバントへのポインタが、前記キーに対応する値
    として格納される、請求項17に記載の方法。
  19. 【請求項19】 前記コンスピラシサーバントが、前記
    ルックアップテーブル中で活動していると識別されたと
    き、発動する前記スケルトンが、前記コンスピラシ識別
    子を使って、前記コンスピラシサーバントを識別すると
    ともに、前記コンスピラシ識別子に対応する格納値を利
    用して、前記コンスピラシサーバントの場所を特定す
    る、請求項18に記載の方法。
  20. 【請求項20】 前記の各コンスピレータスケルトン
    は、前記スケルトンのサーバント識別子として作動する
    単一のコンスピラシ識別子を共有する、請求項16に記
    載の方法。
  21. 【請求項21】 コンスピラシスケルトンとコンスピラ
    シサーバントとを有するコンスピラシオブジェクトと、
    夫々がコンスピレータスケルトンを有する複数のコンス
    ピレータオブジェクトと、コンスピレータサーバントと
    を含むサービスを、クライアントに提供するコンピュー
    タに実装される方法であって、 第1コンスピレータスケルトンにおいて、前記第1コン
    スピレータスケルトンに関連する第1コンスピレータオ
    ブジェクトのための第1発動リクエストを受ける、コン
    ピュータ制御のステップと、 前記第1コンスピレータスケルトンに、前記第1コンス
    ピレータサーバントを発動させる、コンピュータ制御の
    ステップと、 前記第1コンスピレータサーバントに、前記コンスピラ
    シオブジェクトと関連し、前記サービスの一部でないク
    ライアントには利用できないコンスピラシオブジェクト
    レファレンスを発動させる、コンピュータ制御のステッ
    プと、 結果を、前記コンスピラシサーバントから、前記第1コ
    ンスピレータ発動リクエストを開始した前記第1コンス
    ピレータサーバントに返す、コンピュータ制御のステッ
    プと、 第2コンスピレータスケルトンにおいて、前記第2コン
    スピレータスケルトンに関連する第2コンスピレータオ
    ブジェクトのための第2発動リクエストを受ける、コン
    ピュータ制御のステップと、 前記第2コンスピレータスケルトンに、前記第2コンス
    ピレータサーバントを発動させる、コンピュータ制御の
    ステップと、 前記第2コンスピレータサーバントに、前記コンスピラ
    シオブジェクトに関連し、前記サービスの一部でないク
    ライアントには利用できないコンスピラシオブジェクト
    レファレンスを発動させる、コンピュータ制御のステッ
    プと、 結果を、前記コンスピラシサーバントから、前記第2コ
    ンスピレータ発動リクエストを開始した第2コンスピレ
    ータサーバントに返す、コンピュータ制御のステップ
    と、 結果を、前記コンスピレータサーバントから、それぞれ
    のクライアントに返す、コンピュータ制御のステップと
    を備えるコンピュータに実装される方法。
JP8077329A 1995-03-31 1996-03-29 オブジェクト間のコンスピラシのための方法および装置 Pending JPH0922392A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US41477895A 1995-03-31 1995-03-31
US08/414778 1995-03-31

Publications (1)

Publication Number Publication Date
JPH0922392A true JPH0922392A (ja) 1997-01-21

Family

ID=23642922

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8077329A Pending JPH0922392A (ja) 1995-03-31 1996-03-29 オブジェクト間のコンスピラシのための方法および装置

Country Status (4)

Country Link
US (1) US5969967A (ja)
EP (1) EP0735472A3 (ja)
JP (1) JPH0922392A (ja)
CA (1) CA2171817A1 (ja)

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6487607B1 (en) 1998-02-26 2002-11-26 Sun Microsystems, Inc. Methods and apparatus for remote method invocation
US6185611B1 (en) 1998-03-20 2001-02-06 Sun Microsystem, Inc. Dynamic lookup service in a distributed system
US6421704B1 (en) 1998-03-20 2002-07-16 Sun Microsystems, Inc. Method, apparatus, and product for leasing of group membership in a distributed system
US6463446B1 (en) 1998-02-26 2002-10-08 Sun Microsystems, Inc. Method and apparatus for transporting behavior in an event-based distributed system
US6598094B1 (en) 1998-03-20 2003-07-22 Sun Microsystems, Inc. Method and apparatus for determining status of remote objects in a distributed system
US6446070B1 (en) 1998-02-26 2002-09-03 Sun Microsystems, Inc. Method and apparatus for dynamic distributed computing over a network
US6182083B1 (en) 1997-11-17 2001-01-30 Sun Microsystems, Inc. Method and system for multi-entry and multi-template matching in a database
US6832223B1 (en) 1996-04-23 2004-12-14 Sun Microsystems, Inc. Method and system for facilitating access to a lookup service
US6938263B2 (en) 1996-04-23 2005-08-30 Sun Microsystems, Inc. System and method for facilitating dynamic loading of “stub” information to enable a program operating in one address space to invoke processing of a remote method or procedure in another address space
US6708171B1 (en) 1996-04-23 2004-03-16 Sun Microsystems, Inc. Network proxy
US6560656B1 (en) 1998-02-26 2003-05-06 Sun Microsystems, Inc. Apparatus and method for providing downloadable code for use in communicating with a device in a distributed system
US6393497B1 (en) 1998-03-20 2002-05-21 Sun Microsystems, Inc. Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system
US6438614B2 (en) 1998-02-26 2002-08-20 Sun Microsystems, Inc. Polymorphic token based control
US6578044B1 (en) 1997-11-17 2003-06-10 Sun Microsystems, Inc. Method and system for typesafe attribute matching
US6138238A (en) 1997-12-11 2000-10-24 Sun Microsystems, Inc. Stack-based access control using code and executor identifiers
US6466947B2 (en) 1998-03-20 2002-10-15 Sun Microsystems, Inc. Apparatus and method for dynamically verifying information in a distributed system
EP0825506B1 (en) 1996-08-20 2013-03-06 Invensys Systems, Inc. Methods and apparatus for remote process control
US5832529A (en) 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
US6728737B2 (en) 1996-10-11 2004-04-27 Sun Microsystems, Inc. Method and system for leasing storage
US6256774B1 (en) * 1996-12-06 2001-07-03 Sun Microsystems, Inc. Methods, systems, and computer program products for storing, loading, analyzing, and sharing references to recently used objects
GB2321540A (en) * 1997-01-25 1998-07-29 Ibm Automatic transactional locking using object request broker
US6687761B1 (en) * 1997-02-20 2004-02-03 Invensys Systems, Inc. Process control methods and apparatus with distributed object management
US6205491B1 (en) * 1997-12-18 2001-03-20 Sun Microsystems, Inc. Method and apparatus for deferred throwing of exceptions in C++
US6397252B1 (en) * 1997-12-19 2002-05-28 Electronic Data Systems Corporation Method and system for load balancing in a distributed object system
US6604127B2 (en) 1998-03-20 2003-08-05 Brian T. Murphy Dynamic lookup service in distributed system
EP1058883A2 (en) 1998-02-26 2000-12-13 Sun Microsystems, Inc. Method and system for deterministic hashes to identify remote methods
US7039673B1 (en) * 1998-12-24 2006-05-02 Computer Associates Think, Inc. Method and apparatus for dynamic command extensibility in an intelligent agent
US6920475B1 (en) * 1999-04-23 2005-07-19 Oracle International Corporation Communication architecture for distributed computing environment
AU5273100A (en) 1999-05-17 2000-12-05 Foxboro Company, The Methods and apparatus for control configuration with versioning, security, composite blocks, edit selection, object swapping, formulaic values and other aspects
US7089530B1 (en) 1999-05-17 2006-08-08 Invensys Systems, Inc. Process control configuration system with connection validation and configuration
US6788980B1 (en) 1999-06-11 2004-09-07 Invensys Systems, Inc. Methods and apparatus for control using control devices that provide a virtual machine environment and that communicate via an IP network
US6581094B1 (en) * 1999-11-02 2003-06-17 Sun Microsystems, Inc. Apparatus and method for identifying a digital device based on the device's uniform device descriptor file that specifies the attributes of the device in a XML document in a networked environment
US6792466B1 (en) 2000-05-09 2004-09-14 Sun Microsystems, Inc. Trusted construction of message endpoints in a distributed computing environment
US7577834B1 (en) 2000-05-09 2009-08-18 Sun Microsystems, Inc. Message authentication using message gates in a distributed computing environment
US8135796B1 (en) 2000-05-09 2012-03-13 Oracle America, Inc. Mechanism and apparatus for accessing and addressing services in a distributed computing environment
US6862594B1 (en) 2000-05-09 2005-03-01 Sun Microsystems, Inc. Method and apparatus to discover services using flexible search criteria
US8001232B1 (en) 2000-05-09 2011-08-16 Oracle America, Inc. Event message endpoints in a distributed computing environment
US8082491B1 (en) 2000-05-09 2011-12-20 Oracle America, Inc. Dynamic displays in a distributed computing environment
US7716492B1 (en) 2000-05-09 2010-05-11 Oracle America, Inc. Method and apparatus to obtain service capability credentials
US6789077B1 (en) 2000-05-09 2004-09-07 Sun Microsystems, Inc. Mechanism and apparatus for web-based searching of URI-addressable repositories in a distributed computing environment
US6643650B1 (en) 2000-05-09 2003-11-04 Sun Microsystems, Inc. Mechanism and apparatus for using messages to look up documents stored in spaces in a distributed computing environment
US6789126B1 (en) 2000-05-09 2004-09-07 Sun Microsystems, Inc. Addressing message gates in a distributed computing environment
US6941410B1 (en) 2000-06-02 2005-09-06 Sun Microsystems, Inc. Virtual heap for a virtual machine
US6763440B1 (en) 2000-06-02 2004-07-13 Sun Microsystems, Inc. Garbage collection using nursery regions for new objects in a virtual heap
US6760815B1 (en) 2000-06-02 2004-07-06 Sun Microsystems, Inc. Caching mechanism for a virtual heap
US7756969B1 (en) 2001-09-07 2010-07-13 Oracle America, Inc. Dynamic provisioning of identification services in a distributed system
US7660887B2 (en) 2001-09-07 2010-02-09 Sun Microsystems, Inc. Systems and methods for providing dynamic quality of service for a distributed system
US20030133554A1 (en) * 2002-01-11 2003-07-17 Nokia Corporation System and method for facilitating access to network based services
WO2005008544A1 (en) * 2003-07-11 2005-01-27 Computer Associates Think, Inc. System and method for multiple model object sharing
US7792874B1 (en) 2004-01-30 2010-09-07 Oracle America, Inc. Dynamic provisioning for filtering and consolidating events
US7761923B2 (en) 2004-03-01 2010-07-20 Invensys Systems, Inc. Process control methods and apparatus for intrusion detection, protection and network hardening
US7860857B2 (en) 2006-03-30 2010-12-28 Invensys Systems, Inc. Digital data processing apparatus and methods for improving plant performance
CN102124432B (zh) 2008-06-20 2014-11-26 因文西斯系统公司 对用于过程控制的实际和仿真设施进行交互的系统和方法
US8793339B2 (en) * 2008-08-29 2014-07-29 Red Hat, Inc. Facilitating client server interaction
US8793398B2 (en) * 2008-08-29 2014-07-29 Red Hat, Inc. Facilitating client server interaction
US8463964B2 (en) 2009-05-29 2013-06-11 Invensys Systems, Inc. Methods and apparatus for control configuration with enhanced change-tracking
US8127060B2 (en) 2009-05-29 2012-02-28 Invensys Systems, Inc Methods and apparatus for control configuration with control objects that are fieldbus protocol-aware

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1468642A (en) * 1975-01-07 1977-03-30 Burroughs Corp Data processing systems
DE2933893C2 (de) * 1979-08-22 1983-03-17 Walter 8000 München Hamann Transportsicherung
US4977595A (en) * 1989-04-03 1990-12-11 Nippon Telegraph And Telephone Corporation Method and apparatus for implementing electronic cash
US5095480A (en) * 1989-06-16 1992-03-10 Fenner Peter R Message routing system for shared communication media networks
US5551035A (en) * 1989-06-30 1996-08-27 Lucent Technologies Inc. Method and apparatus for inter-object communication in an object-oriented program controlled system
EP0405829B1 (en) * 1989-06-30 1998-04-15 AT&T Corp. Object oriented software system architecture
US5251205A (en) * 1990-09-04 1993-10-05 Digital Equipment Corporation Multiple protocol routing
US5309516A (en) * 1990-12-07 1994-05-03 Hitachi, Ltd. Group cipher communication method and group cipher communication system
JP2725478B2 (ja) * 1991-03-05 1998-03-11 日本電気株式会社 暗号鍵配送方式
US5224162A (en) * 1991-06-14 1993-06-29 Nippon Telegraph And Telephone Corporation Electronic cash system
FR2679350B1 (fr) * 1991-07-16 1995-06-23 Cit Alcatel Structure de logiciel pour systeme de traitement de donnees, notamment pour systeme de telecommunications.
US5481721A (en) * 1991-07-17 1996-01-02 Next Computer, Inc. Method for providing automatic and dynamic translation of object oriented programming language-based message passing into operation system message passing using proxy objects
US5224098A (en) * 1991-07-17 1993-06-29 International Business Machines Corporation Compensation for mismatched transport protocols in a data communications network
US5355492A (en) * 1991-11-05 1994-10-11 Thinking Machines Corporation System for compiling parallel communications instructions including their embedded data transfer information
JP3489123B2 (ja) * 1992-04-15 2004-01-19 株式会社日立製作所 アプリケーション結合方法
US5278901A (en) * 1992-04-30 1994-01-11 International Business Machines Corporation Pattern-oriented intrusion-detection system and method
US5339430A (en) * 1992-07-01 1994-08-16 Telefonaktiebolaget L M Ericsson System for dynamic run-time binding of software modules in a computer system
AU686105B2 (en) * 1992-07-01 1998-02-05 Telefonaktiebolaget Lm Ericsson (Publ) System for implementation-independent interface specification
JP2753179B2 (ja) * 1992-07-08 1998-05-18 ユニバーサル販売株式会社 メダル遊技機
US5307490A (en) * 1992-08-28 1994-04-26 Tandem Computers, Inc. Method and system for implementing remote procedure calls in a distributed computer system
US5396630A (en) * 1992-10-06 1995-03-07 International Business Machines Corporation Method and system for object management across process boundries in a data processing system
JP3746510B2 (ja) * 1993-03-31 2006-02-15 オブジェクト テクノロジー ライセンシング コーポレイション コンピュータシステムの使用方法
US5544318A (en) * 1993-04-16 1996-08-06 Accom, Inc., Asynchronous media server request processing system for servicing reprioritizing request from a client determines whether or not to delay executing said reprioritizing request
US5377350A (en) * 1993-04-30 1994-12-27 International Business Machines Corporation System for cooperative communication between local object managers to provide verification for the performance of remote calls by object messages
US5519618A (en) * 1993-08-02 1996-05-21 Massachusetts Institute Of Technology Airport surface safety logic
US5374932A (en) * 1993-08-02 1994-12-20 Massachusetts Institute Of Technology Airport surface surveillance system
US5388264A (en) * 1993-09-13 1995-02-07 Taligent, Inc. Object oriented framework system for routing, editing, and synchronizing MIDI multimedia information using graphically represented connection object
US5511002A (en) * 1993-09-13 1996-04-23 Taligent, Inc. Multimedia player component object system
CA2153964A1 (en) * 1993-09-13 1995-03-23 Steven H. Milne Object-oriented audio record/playback system
US5390138A (en) * 1993-09-13 1995-02-14 Taligent, Inc. Object-oriented audio system
US5485369A (en) * 1993-09-28 1996-01-16 Tandata Corporation Logistics system for automating tansportation of goods
US5481715A (en) * 1993-12-15 1996-01-02 Sun Microsystems, Inc. Method and apparatus for delegated communications in a computer system using trusted deputies
US5515508A (en) * 1993-12-17 1996-05-07 Taligent, Inc. Client server system and method of operation including a dynamically configurable protocol stack
US5509123A (en) * 1994-03-22 1996-04-16 Cabletron Systems, Inc. Distributed autonomous object architectures for network layer routing

Also Published As

Publication number Publication date
EP0735472A3 (en) 2000-01-19
EP0735472A2 (en) 1996-10-02
CA2171817A1 (en) 1996-10-01
US5969967A (en) 1999-10-19

Similar Documents

Publication Publication Date Title
JPH0922392A (ja) オブジェクト間のコンスピラシのための方法および装置
US6349342B1 (en) Methods and apparatus for managing computer processes
US6353860B1 (en) Methods and apparatus for managing collections of objects
US5793965A (en) Method and apparatus for determining the type of an object in a distributed object system
EP0660234B1 (en) Method and system for executing code remotely
US6009266A (en) Methods, apparatus and data structures for managing objects
US6938085B1 (en) Mechanism for enabling session information to be shared across multiple processes
US5692183A (en) Methods and apparatus for providing transparent persistence in a distributed object operating environment
US8103779B2 (en) Mechanism for enabling session information to be shared across multiple processes
EP0501610B1 (en) Object oriented distributed computing system
US6629153B1 (en) Method and apparatus for providing peer ownership of shared objects
US6260078B1 (en) Using a distributed object system to find and download java-based applications
US20020178298A1 (en) Method and apparatus for fast, local CORBA object references
EP0911732A2 (en) A method, apparatus and program product for interfacing a multi-threaded- to a single-treaded application programmer interface
JPH10133876A (ja) 低オーバヘッドオブジェクトアダプタ
US6996826B2 (en) Method and system for accessing objects of different thread types
GB2308468A (en) Data processing systems and methods providing interoperability between data processing resources
JPH07121373A (ja) データ処理システム及びその動作方法
US7607142B2 (en) Cancellation mechanism for cooperative systems
US20020059358A1 (en) Method and system for accessing objects of different thread types
US6205491B1 (en) Method and apparatus for deferred throwing of exceptions in C++
US6920636B1 (en) Queued component interface passing for results outflow from queued method invocations
EP0910017A2 (en) Remote object activation in a distributed system
CA2213213A1 (en) Method and apparatus for performing efficient corba transactions
US20190278639A1 (en) Service for enabling legacy mainframe applications to invoke java classes in a service address space