JPH0926890A - オブジェクトを管理するための方法、装置、および、データ構造 - Google Patents

オブジェクトを管理するための方法、装置、および、データ構造

Info

Publication number
JPH0926890A
JPH0926890A JP8092013A JP9201396A JPH0926890A JP H0926890 A JPH0926890 A JP H0926890A JP 8092013 A JP8092013 A JP 8092013A JP 9201396 A JP9201396 A JP 9201396A JP H0926890 A JPH0926890 A JP H0926890A
Authority
JP
Japan
Prior art keywords
server
distributed
client
computer system
temporary
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
JP8092013A
Other languages
English (en)
Inventor
David M Brownell
エム. ブロウネル デイビッド
Pavani Diwanji
ディワンジ パヴァーニ
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 JPH0926890A publication Critical patent/JPH0926890A/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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/4493Object persistence

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】 【課題】 一時的分散オブジェクトおよび不変分散オブ
ジェクトを管理するための様々な方法、装置、およびデ
ータ構造を提供する。 【解決手段】 一時的オブジェクトに関するオブジェク
トレファレンスとして用いることを意図したデータ構造
を、エンドポイントアドレスのセット、具体化番号、お
よびオブジェクトキーを持つ。これらの要素は、一時的
オブジェクトを一義的に識別し場所を見いだす役割を果
たす。また、不変オブジェクトに関するオブジェクトレ
ファレンスとして用いることを意図したオブジェクト
を、ホストコンピュータ名、ロケーター同定事項、オブ
ジェクトキー、およびサブオブジェクト識別子を持つ。
最初の三つの要素は不変オブジェクトへのインディレク
ションの役割を果たし、第3の要素は不変オブジェクト
用である。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、分散コンピューテ
ィングシステム、クライアント-サーバーコンピューテ
ィング(cliant-server computing)、およびオブジェ
クト指向プログラミングの分野に係わり、特に、一時的
および不変オブジェクトを管理するための方法、装置お
よびデータ構造に関するものである。
【0002】
【従来の技術および発明が解決しようとする課題】ここ
数年来、従来のプログラミング方法で開発されたソフト
ウェアの納期遅れと予算超過の傾向が強まるにつれて、
オブジェクト指向プログラミング方法論への関心が高ま
っている。このことは、手順モデルと「線形」コードを
強調する従来のプログラミング技法が多くの状況下にお
いて設計と保守が困難であることに起因している。一般
的に、従来の方法を用いて作成された大きなプログラム
は「脆い(brittle)」、すなわち、わずかな変更でさ
えもプログラミングコードの多くの要素が影響を受け
る。従って、ユーザーの要望に応じたソフトウェアの小
規模な変更でも、全プログラムの大幅な再設計と書き換
えが必要になることがある。
【0003】オブジェクト指向プログラミング戦略は、
これらの問題を回避する傾向がある。その理由は、オブ
ジェクト方法論は、手順よりもむしろデータの取扱いに
重点を置き、従って、プログラマーに現実世界の問題を
モデル化するためのより直感的アプローチを提供するか
らである。更に、オブジェクトは、オブジェクトのイン
ターフェースを介してのみデータおよび手順へのアクセ
スを可能にすることによって、関連データと手順をカプ
セルに入れた状態にしてプログラムの他の部分からその
情報を隠しておく。したがって、オブジェクトのデータ
およびまたは手順への変更はプログラムの他の部分から
比較的隔離された状態にある。これにより、従来の方法
を用いて書かれたコードに比べて保守の容易なコードが
提供され、特定のオブジェクトのコードへの変更が他の
オブジェクトのコードに影響を及ぼすことがない。更
に、オブジェクトが本来モジュール的な性質であるの
で、個々のオブジェクトを種々のプログラムに再使用す
ることができる。したがって、プログラマーは、種々の
用途に反復使用することができる。「試行正」オブジェ
クトのライブラリーとインターフェイスとを作成するこ
とができる。これによりソフトウェアの信頼性が高まる
一方、信頼性のあるプログラミングコードが繰り返し用
いられるので、開発時間が短縮される。
【0004】オブジェクト指向技法の分野におけるごく
最近の進展は、コンピュータネットワークを介して相互
接続されたコンピュータへの分散オブジェクトオペレー
ティング環境の実装である。ここで用いる場合、「分散
オブジェクト」または「オブジェクト」は、インターフ
ェイスを介したオペレーティングによって操作され得る
コードとデータのカプセル化されたパッケージをいう。
したがって、オブジェクト指向プログラミング(OO
P)に係わる当業者には、分散オブジェクトは、従来の
プログラミングオブジェクトを定義する基本的特性を含
むものと思われるであろう。しかし、分散オブジェクト
は、ふたつの重要な特徴を含むことによって、従来のプ
ログラミングオブジェクトとは異なる。第1の特徴は、
分散オブジェクトは多言語的である。すなわち、分散オ
ブジェクトのインターフェイスは、様々な異なる言語へ
マップすることのできるインターフェイス定義言語(I
DL)を用いて定義される。そうしたインターフェイス
定義言語のひとつがオブジェクト管理グループ(Object
Management Group's;OMG)のIDLである。第2
の特徴は、分散オブジェクトは場所独立性である、すな
わち、分散オブジェクトはネットワーク内のどこででも
在り場所を見いだすことができる。このことは、複数の
クライアントによって共有される単一のアドレススペー
ス内に存在するのが普通である従来のプログラミングオ
ブジェクトとは著しい対照をなす。
【0005】分散オブジェクトは、他のオブジェクトへ
リクエストを送っているか、あるいはクライアントから
のリクエストに回答しているかによって、オブジェクト
クライアントあるいはオブジェクトサーバーとなり得
る。分散オブジェクト環境においては、リクエストと回
答は、オブジェクトの場所と状態を認識しているオブジ
ェクトリクエストブローカ(Object Request Broker)
を介して行われる。そうしたORBに適したひとつのア
ーキテクチャが、共通オブジェクトリクエストブローカ
アーキテクチャ(CORBA)仕様によって提供され
る。CORBA仕様は、サービスをリクエストするオブ
ジェクトへサーバーオブジェクトがサービスを提供する
ことのできる分散クライアントサーバー環境におけるオ
ブジェクトに関して分散コンピューティング環境を定義
するため、OMG(Object Management Group)によっ
て開発された。以下の考察においては、「オブジェク
ト」と「分散オブジェクト」とは互換性をもって用いら
れる。
【0006】分散オブジェクト環境においては、一時的
(transient)オブジェクトと不変(persistent)オブ
ジェクトの、ふたつの優勢なオブジェクトがある。一時
的オブジェクトは普通、寿命が短く、単一のホストプロ
セスに限られる。すなわち、あるホストプロセスが終了
すると、そのプロセスのもとで実行されていた全ての一
時的オブジェクトも終了する。したがって、一時的オブ
ジェクトの同一性は、あるプロセスから他のプロセスへ
連続して行かない。一時的オブジェクトは単一のホスト
プロセスに限られるので、一時的オブジェクトは本質的
にその場所を変えることができない。また、一時的オブ
ジェクトのアドレスは変らないので、「インモービル
(immobile)」オブジェクトと呼び替えることができ
る。
【0007】これとは対照的に、不変オブジェクトは単
一のプロセスに限られず、その場所は時間とともに変化
し得る。従って、不変オブジェクトはそのアドレスが変
化し得るので「モービル(mobile)」オブジェクトと呼
ばれる。不変オブジェクトにおける同一性は、あるプロ
セスから他のプロセスへ連続して行く。しかし不変オブ
ジェクトは、一時にひとつのプロセス内にしか存在でき
ない。
【0008】あるオブジェクトの一時性または不変性を
論じる際に、通常、想定されることは、そのオブジェク
トの状態の一時性または不変性である。当業者には周知
のように、プロセスあるいはオブジェクト等のコンピュ
ータエンティティは、実行可能コードと状態(executab
le code and state)という、ふたつの要素(component
s)を持っている。実行可能コードは、本質的には、そ
れによってエンティティが作用する(operates)命令
(instructions)である。したがって、コードでないデ
ータ等、残りの部分が状態である。異なる種類の状態、
すなわち一時的と不変、の背景にある動機は、かなり単
純明解である。不変状態は、不変性維持のため大容量記
憶装置および対応する管理資源のような追加のシステム
資源を必要とするが、追加のシステム資源は必要かも知
れないし、必要でないかも知れない。例えば、データベ
ースに格納された情報は、長期にわたる格納を目的とす
るのが普通であり、したがって不変性が要求される。こ
のような状況においては、このデータを維持するため、
追加のシステム資源は設けるに値する。
【0009】しかし、不変性が必要でなく、したがって
不変性のために必要な追加のシステム資源が無駄になる
ような状況も数多くある。状態が短期間のみ必要である
か、および/または、もし必要ならば後で容易に再構成
可能な何れの状況も一時的状態になりそうである。この
周知の例としては、多くのウィンドウ系のワードプロセ
ッシングプログラムのフォーマット用ボタンや編集用ボ
タンのようなアイコンがある。このようなボタンを実装
する際には、(大ざっぱに言って)それを作用させるコ
ードと、それに外観を与える状態とがある。この状態に
はアイコンのビットマップが含まれる。ワードプロセッ
シングウィンドウを閉じるとアイコンは消え、その他の
アイコンのビットマップを保持しておく必要はない。一
時的状態を用いれば、システムはこれらのビットマップ
の保持のことは、再度必要になるまで忘れてよく、必要
になった時点で再形成すればよい。
【0010】一時的状態および/または不変状態を処理
するための従来の解決法は、分散オブジェクトオペレー
ティング環境の範囲内において一時的オブジェクトおよ
び不変オブジェクトの統合を効果的に可能ならしめるフ
レームワークを提供することができなかった。例えば、
オブジェクト指向技法を含むデータベース技術は、総じ
て不変状態の維持のみを取り扱ってきた。更にひとつの
例として、パーソナルコンピューティングシステムは、
不変状態を用いて、すべての資源とサービスが同時スタ
ートするように設計されている。周知の分散コンピュー
ティング環境(Distributed Computing Environment =
DCE)は、各個別のオブジェクトを管理するのに128
ビット識別子を用いて不変分散オブジェクトのみを実装
する。一般に、従来技術はほとんど不変オブジェクトの
みを取扱い、一時的オブジェクトを取り扱う場合には一
時的オブジェクトのみに焦点を絞る傾向がある。分散オ
ブジェクトオペレーティング環境のもとで一時的オブジ
ェクトおよび不変オブジェクトを効果的に統合するため
のフレームワークこそが求められている。そのために
は、両者間の差を許容し、なおかつ統合されたフレーム
ワークを提供するデータ構造が必要である。更に、これ
ら不変オブジェクトと一時的オブジェクトを管理するた
めの効果的方法も必要である。
【0011】
【課題を解決するための手段】上記およびその他の目的
を達成するため、また、本発明の目的に従って、一時的
オブジェクトおよび不変オブジェクトを管理するための
方法、装置、およびデータ構造を説明する。本発明は、
一時的オブジェクト用のオブジェクトレファレンスとし
ての使用が意図されているデータ構造は、1セットのエ
ンドポイントアドレスと、具体化番号(incarnation nu
mber)、およびオブジェクトキーを含む。エンドポイン
トアドレスのセットは、一時的オブジェクトが存在する
サーバーホストコンピュータに対応するように編成され
ている。具体化番号は、ホストコンピュータ上で実行さ
れているサーバーホストプロセスに対応するように編成
されている。一時的サーバーオブジェクトは、このサー
バーホストプロセス内においてのみ走ることができる。
オブジェクトキーは、一時的サーバーオブジェクトに対
応する識別子である。これら三つの要素、エンドポイン
トアドレスのセット、具体化番号、およびオブジェクト
キーは、一時的サーバーオブジェクトを一義的に(uniq
uely)同定(識別)し、その場所を見いだす。更に、サ
ービスをリクエストするクライアントと一時的サーバー
オブジェクトとの間の効果的な対話を可能にするため、
これら要素のひとつ以上を用いるための様々な実施例と
様々な方法も説明する。
【0012】これらデータ要素の長さは、いくつかの用
途においては可変長であり、また他の用途においては固
定長である。固定長の場合、1ないし128バイトの範
囲の長さが好ましい。ひとつの特定の実施例において
は、エンドポイントアドレスのセットからのひとつのア
ドレスは4バイト長のサーバーホストネットワークアド
レスと2バイト長のサーバープロセスネットワークポー
ト番号とを含む。更にひとつの特定の実施例において
は、具体化番号は本質的には日付スタンプである。すな
わち、サーバープロセスの形成時刻を示す、単調に増加
する番号である。その他の実施例においては、具体化番
号は、サーバープロセスに対して予め定義された意味を
有する、予め定義された番号である。
【0013】ひとつの特定の実施例において、オブジェ
クトキーは、一時的サーバーオブジェクトのホストとな
るサーバープロセス内において一義的である識別番号で
ある。更にひとつの実施例において、オブジェクトキー
は、別の分散オブジェクトオペレーティング環境のプロ
トコルに従ってフォーマットされたオブジェクトレファ
レンスの転送に用いられる。
【0014】本発明では、オブジェクトレファレンスの
データ構造は、オブジェクトの種類が一時的であること
を示す内部名(internal name)を含む。
【0015】本発明では、上記のオブジェクトレファレ
ンスに対応する一時的オブジェクトが考慮される。この
一時的オブジェクトは状態を持っているが、この状態は
厳密には一時的状態である。その他の実施例において
は、一時的オブジェクトはサーバープロセスに限定さ
れ、したがって、サーバープロセス内においてのみ同一
性が連続している。
【0016】本発明では、分散オブジェクトオペレーテ
ィング環境は、複数のコンピュータシステム、コンピュ
ータシステムどうしを接続するコンピュータネットワー
ク、および一時的サーバーオブジェクトのためのオブジ
ェクトレファレンスとして用いられる少なくともひとつ
のオブジェクトとを含む。装置の別の実施例において、
分散オブジェクトオペレーティング環境は、また、不変
サーバーオブジェクトのためのオブジェクトレファレン
スとして用いられる第2のオブジェクトも含む。第2の
オブジェクトは、ホストコンピュータ名、ロケーターア
イデンティフィケーション(locator identificatio
n)、オブジェクトキー、およびサブオブジェクト識別
子を含むデータ構造を持つ。第2のオブジェクトのデー
タ構造はオプションとして、場所ヒント(location hin
t)と、オブジェクトの種類が不変であることを示す種
類フィールド(kind field)とを含むことができる。
【0017】第2のオブジェクトのデータ構造におい
て、ホストコンピュータ名は、ホストコンピュータ上で
実行されるサーバーオブジェクトロケーターサービスを
有するホストコンピュータに対応する。ロケーターアイ
デンティフィケーションは、サーバーオブジェクトロケ
ーターオブジェクトが内在するプロセスに対応する。ロ
ケーターオブジェクトは、ロケーターサービスの1コン
ポーネントであり、第2のオブジェクトに関する場所情
報を確定するための問い合わせを受ける。場所情報は、
エンドポイントアドレスのセットおよび具体化番号のよ
うな、第1のオブジェクトデータ構造に類似したデータ
を含む。
【0018】本発明は、サーバーホストコンピュータ上
に存在するサーバープロセス上で走る分散サーバーオブ
ジェクトをコールする際、一時的オブジェクトと不変オ
ブジェクトを管理するための様々な方法を提供する。ひ
とつの方法面において、クライアントはサーバーオブジ
ェクトへのオブジェクトレファレンスを持ち、クライア
ントのコールは、分散サーバーオブジェクトに関するア
ドレシング情報を獲得するステップ、分散サーバーオブ
ジェクトに関するひとつのアドレスを選択するステッ
プ、および分散サーバーオブジェクトへリクエストを送
るステップを含む。更に追加の実施例において、この方
法は、分散サーバーオブジェクトから応答を受けるステ
ップを含む。
【0019】更に、ひとつの方法面において、アドレス
情報獲得ステップは、一時的、不変、ナル、および無効
の各種類を含む、分散サーバーオブジェクトの種類を判
定するサブステップを含む。次に、分散サーバーオブジ
ェクトの種類次第で、様々な方法が実行できる。種類が
ナルまたは無効の場合、エラーメッセージが返される。
種類が一時的である場合、アドレシング情報がオブジェ
クトレファレンスから直接返される。種類が不変である
場合、アドレシング情報獲得ステップは更に、アドレシ
ング情報がクライアントホストコンピュータ上のキャッ
シュメモリに格納されているか否かを判定するサブステ
ップおよびアドレシング情報を直接キャッシュメモリか
ら返すサブステップを更に含む。アドレシング情報がキ
ャッシュメモリに格納されていない場合、アドレシング
情報は、分散オブジェクトオペレーティング環境内から
獲得され、キャッシュメモリに格納され、次に直接キャ
ッシュメモリから返される。
【0020】方法の更にひとつの面において、アドレス
選択ステップは、前記クライアントと前記サーバーが同
じプロセスに含まれているか否かを判定するステップを
含み、含まれている場合、ローカルアドレスとローカル
トランスポートモードが選択される。方法の更にひとつ
の面において、クライアントとサーバーが異なるプロセ
スに含まれている場合、サーバーホストコンピュータが
クライアントホストコンピュータと同一であれば、共有
メモリーアドレシングと共有メモリートランスポートが
選択される。しかし、共有メモリーアドレシングを利用
できないか、あるいは、サーバーホストコンピュータが
クライアントホストコンピュータと同一でない場合、リ
モートアドレシングとリモートトランスポートが選択さ
れる。
【0021】方法の別の面においては、分散オブジェク
トオペレーティング環境におけるホストコンピュータ上
のキャッシュメモリ内の分散オブジェクトアドレシング
情報を保守するための方法を提供する。この方法は、分
散オブジェクトに対応するオブジェクトレファレンスが
受信されると開始される。次に、このオブジェクトレフ
ァレンスが分散オブジェクトに関するアドレシング情報
を含んでいれば、このアドレシング情報はキャッシュメ
モリへ書き込まれる。いくつかの実施例においては、オ
ブジェクトレファレンスは目標オブジェクトコールの一
部として受信され、また、他の実施例においては、目標
オブジェクトコールに応答して受信される。いずれにし
ても、受信ステップは、アドレシング情報が利用可能で
あるかどうか判定する前に、オブジェクトレファレンス
のマーシャリングを含むことができる。
【0022】関連した方法面において、分散オブジェク
トオペレーティング環境の一部である複数のホストコン
ピュータの各々は、それ自体のキャッシュメモリを持っ
ている。これら各コンピュータの各々が、自らのキャッ
シュメモリ内で利用可能なアドレシング情報を増やすた
め、前のパラグラフの方法を実行する。更に、ホストコ
ンピュータのいずれかひとつが新しいアドレシング情報
の場所を見いだした場合、そのコンピュータは、その情
報をオブジェクトレファレンスへとマーシャルし、分散
オブジェクトオペレーティング環境の一部である他のホ
ストコンピュータへ分配することによって、本発明の利
点を永続させる。
【0023】
【発明の実施の形態】本発明は、オブジェクト指向プロ
グラミング(OOP)に基づく分散オペレーティング環
境に関し、更に特定すれば、オブジェクトを管理するた
めの方法、装置およびデータ構造を提供する。考察の対
象となるオブジェクトの種類は、一時的オブジェクトお
よび不変オブジェクトを含む。一時的オブジェクトは不
変状態を維持せず、オブジェクトを走らせるプロセスの
寿命に直接結びついている。いわば、不変状態とは、あ
るプロセスから別のプロセスへと持続(つまり橋渡し)
する状態である。他方、不変オブジェクトは不変状態と
一時的状態の両方を持つことができ、ある時間持続する
のが普通である。以下の考察においては、様々な種類の
オブジェクトを更に詳細に説明するが、まず本発明に適
したコンピュータシステムの例を考察し、次に、本発明
の装置およびデータ構造の実施例のいくつかを詳細に説
明し、次に本発明の方法面を詳細に説明する。
【0024】I.用語の定義 ここで用いる場合、「分散オブジェクト」または「オブ
ジェクト」という用語は、ひとつのオブジェクトに関連
付けられている定義されたインターフェイスを介したオ
ペレーションによって操作することのできるコードとデ
ータのカプセル化されたパッケージをいう。したがって
当業者は、分散したオブジェクトを、従来のプログラミ
ングオブジェクトを定義する基本的特性を含むものと見
なすであろう。しかし、分散したオブジェクトは、ふた
つの重要な特徴を含むことによって従来のプログラミン
グオブジェクトとは異なる。第1に、分散したオブジェ
クトは多言語的である。分散オブジェクトのインターフ
ェイスは様々なプログラミング言語にマップされ得るイ
ンターフェイス定義言語を用いて定義される。そのよう
なインターフェイス定義言語のひとつがOMG IDL
である。第2に、分散オブジェクトは場所独立性であ
る、すなわち、分散オブジェクトはネットワーク内のど
こでもその場所を見いだすことができる。このことは、
単一のアドレススペースすなわち「クライアント」のア
ドレススペース内に存在する従来のプログラミングオブ
ジェクトに対して著しく対照的である。分散オブジェク
トは、リクエストを他のオブジェクトへ送っているか、
他のオブジェクトからのリクエストに答えているかによ
って、オブジェクトクライアントかオブジェクトサーバ
ーかのいずれかとなる。リクエストおよび回答は、オブ
ジェクトの場所と状態を認識しているオブジェクトリク
エストブローカ(ORB)を介して行われる。
【0025】「分散オブジェクトシステム」または「分
散オブジェクトオペレーティング環境」とは、ORBを
介して通信を行う分散オブジェクトから成るシステムを
いう。
【0026】「オブジェクトレファレンス」または「オ
ブジェレフ(objref)」とは、他のオブジェクトへのポイ
ンタを含むデータ構造(従来のプログラミング言語オブ
ジェクトであってもよい)をいう。オブジェクトレファ
レンスの形成と定義は当業者にとっては周知であろう。
【0027】ここで定義する「クライアント」はいずれ
かのオブジェクトへリクエストを送るエンティティのこ
とである。このモデルにおいては、このオブジェクトは
サービスを提供し、「サーバーオブジェクト」または
「目標オブジェクト」と呼ばれる。クライアントは、サ
ーバーからオペレーションまたは実行(implementation
s)を発動させる。クライアント自体がオブジェクトで
ある場合もある。分散オブジェクト環境においては、当
該オブジェクトの要件が多言語性であるので、クライア
ントは、実装プログラミング言語の知識を持つ必要がな
く、実装もクライアントのプログラミング言語の知識を
持つ必要がない。分散オブジェクトオペレーティング環
境におけるクライアントとサーバーは、インターフェイ
ス定義言語のみを用いて通信すればよい。上に述べたよ
うに、クライアントによるサーバーへのリクエストとク
ライアントへのサーバーの回答はORBによって処理さ
れる。クライアントとサーバーは、同じプロセス内、同
じホストコンピュータ上、または2台の異なるコンピュ
ータ上に存在できることを指摘しておく。
【0028】「オブジェクトインターフェイス」とは、
あるオブジェクトが提供するオペレーション、属性、お
よび例外の仕様のことである。分散オブジェクトのオブ
ジェクトインターフェイスはIDLを用いて書くことが
望ましい。上に述べたように、オブジェクトはそれらの
インターフェイスを介して処理を行う。従って、インタ
ーフェイスを使用することにより、処理の際の方法とオ
ブジェクトのデータを定義するプログラミング言語をク
ライアントが認識する必要性がなくなる。
【0029】情報のパケットを「マーシャル(整頓)す
る」とは、この情報を共有メモリ通信チャネルまたはネ
ットワーク通信ラインを介して転送するように準備する
ことである。これはしばしば、使用するネットワーク通
信プロトコルに従ってデータを系統化することを意味す
る。
【0030】情報のパケットを「アンマーシャル(整頓
解除)する」とは、本質的にマーシャリング手順を逆に
することであって、適当な環境において意味をもつフォ
ーマットにおいてデータを作成することである。
【0031】II.オブジェクトの管理 本発明は、分散コンピューティングシステム、クライア
ントサーバーコンピューティング、およびオブジェクト
指向プログラミングに関する。更に特定すれば、本発明
は、一時的オブジェクトおよび不変分散オブジェクトを
管理するための方法、装置、およびデータ構造を提供す
る。
【0032】ここで用いる場合、「分散オブジェクト」
または「オブジェクト」とは、インターフェイスを介し
たオペレーションによって操作され得るコードとデータ
のカプセル化されたパッケージをいう。また、本発明の
分散オブジェクトは、背景で記載したような特徴を含む
ことができる。例えば、分散オブジェクトは、他のオブ
ジェクトへリクエストを送っているか、あるいはクライ
アントからのリクエストに回答しているかによって、オ
ブジェクトクライアントあるいはオブジェクトサーバー
となり得る。
【0033】分散オブジェクト環境においては、リクエ
ストと回答は、オブジェクトの場所と状態を認識してい
るオブジェクトリクエストブローカ(ORB)を介して
行われる。そのようなORBの実装に適した1つのアー
キテクチャが、共通オブジェクトリクエストブローカア
ーキテクチャ(CORBA)仕様によって提供される。
CORBA仕様は、サービスをリクエストするクライア
ントへサーバーオブジェクトがサービスを提供すること
ができる、分散クライアント-サーバー環境におけるオ
ブジェクトに関して分散コンピューティング環境世界を
定義するため、オブジェクト管理グループ(OMG)に
よって開発された。以下の考察において、「オブジェク
ト」および「分散オブジェクト」は、以下の発明が両者
に向けられているので互換性をもって用いられる。
【0034】本発明の好ましい実施例において、分散オ
ブジェクトはネットワークによって相互接続された1台
以上のコンピュータ上にある。このネットワークは任意
の適当な形式を取ることができる。例を用いて、代表的
なネットワーク編成10を図1に示す。このネットワー
ク編成10は、伝送線14に結合された第1のコンピュ
ータ12を含む。このネットワーク10は、更に、デー
タや命令をネットワーク化されたコンピュータ間でやり
とりできるように、他のコンピュータ18、20および
22に加えてサーバー、ルーター等16も含む。コンピ
ュータネットワークの設計、構成、および実装は当業者
にはなじみである。
【0035】図1のコンピュータ12、18、20、お
よび/または22としての使用に適した代表的なコンピ
ュータ30の概略を図2に示す。コンピュータ30は、
中央処理装置(CPU)32を含み、これはランダムア
クセスメモリ(RAM)34と双方向的に、またリード
オンリーメモリ(ROM)36と一方向的に結合されて
いる。通常、RAM34は「スクラッチパッド」メモリ
として用いられ、現在CPU32上で作動中のプロセス
のための、分散オブジェクトおよびそれらに関連するコ
ードと状態を含むプログラミング命令とデータを含む。
一時的状態はRAM34のような一時的メモリにしばし
ば格納されることに注意されたい。ROM36は、通
常、コンピュータがその機能を実行するためにコンピュ
ータが用いる基本的なオペレーティング命令、データお
よびオブジェクトを含む。更に、ハードディスク、CD
ROM、磁気光(フロプティカル)ドライブ、テープ
ドライブ等の大容量記憶装置38がCPU32へ双方向
的に接続されている。大容量記憶装置38は、通常はC
PUによって頻繁に用いられない追加のプログラミング
命令、データ、およびオブジェクトを含むが、アドレス
スペースはCPUによる、例えばバーチャルメモリ等の
ためのアクセスが可能である。不変状態は、しばしば記
憶装置38等の不変メモリに格納されることに注目され
たい。上記の各コンピュータは、オプションとしてキー
ボード、ポインタ器具(例えばマウスまたはスタイラ
ス)および/またはネットワーク接続のような入力媒体
を含む入出力媒体40を含む。追加の大容量記憶装置
(図示せず)をネットワーク接続を介してCPU32に
接続することもできる。上記のハードウェア要素および
ソフトウェア要素、更にネットワーキング装置の設計と
構造は標準的なものであり、当業者にはなじみのもので
あることが、当業者には理解されるであろう。
【0036】クライアントおよびサーバーについての考
察に戻ると、分散オブジェクト環境を支えるもののひと
つは、ここでサービスをリクエストするエンティティと
して定義されるクライアントと、普通はサービスを提供
するオブジェクトであるサーバーとの間の対話である。
例えば、クライアントとサーバーが、同じプロセス内、
同じホストコンピュータ上の別々のプロセス内、および
別々のホストコンピュータ上で走る別々のプロセス上に
あるという、様々なシナリオがある。このクライアント
-オブジェクト対話は、クライアント-サーバーモデルに
関して考察することができる。例えば、クライアント
は、遠隔のコンピュータ18上で走る別のプロセス内の
サーバーオブジェクトからサービスをリクエストするコ
ンピュータ12のようなネットワークコンピュータ上で
実行されるプロセス中にあってもよい。
【0037】同じく当業者が理解するであろうように、
上記のエンティティ(これはクライアントであることが
できる)は、ホストコンピュータ上で実行されるプロセ
ス(以下それぞれクライアントプロセスおよびクライア
ントホストという)およびオブジェクト(以下クライア
ントオブジェクトという)を、これらに限定せずに、含
む。したがって、クライアントは、エンティティのタイ
プに係わらず、サービスをリクエストするエンティティ
である。明瞭にするために、サービスを提供するオブジ
ェクトを以下、目標オブジェクトまたはサーバーオブジ
ェクトと互換可能に用いる。したがって、以下の説明に
おいてクライアントが目標オブジェクトを発動する場
合、クライアントはクライアントプロセスまたはクライ
アントオブジェクトなど、任意のエンティティであり得
る。
【0038】クライアント-サーバー対話の用語を更に
説明すると、クライアントは、目標オブジェクトによっ
て実行される「方法」を「発動する(invoke)」ために
目標オブジェクトを「コール」する。「コール」と「発
動」とは意味が多少異なるが、ここではふたつの語は互
換性をもって用いられ、両語の意味はここでの考察の文
脈から理解される。当業者にはよく知られているよう
に、方法はオブジェクト内に含まれている手順であっ
て、このオブジェクトが当該オブジェクトのサービスを
リクエストする目的のために他のエンティティ(例えば
クライアント)に利用可能とされている。従って、クラ
イアントのためにサービスを行うオブジェクトはサーバ
ーであり、ここからクライアント-サーバー(client-se
rver)なる用語が生まれる。方法をコールする際、クラ
イアントは、また、リクエストされた方法を目標オブジ
ェクトが実行するのに必要な、パラメーターとも呼ばれ
るアーギュメントを転送してもよい。先の用語「方法」
は、オブジェクト指向プログラミングの技術の用語であ
って、特許出願の作成で伝統的に用いられる用語の「方
法」とは異なることに注目されたい。以下の考察におい
て、用語「方法」がどちらの意味において用いられてい
るか(文脈上または本出願人の示唆により)明らかにさ
れている。
【0039】次に、図3ないし図5を参照し、分散オブ
ジェクト環境をまさしく表すクライアント-サーバーモ
デルの2,3の可能例を列挙し考察する。常にそうであ
るが、クライアント-サーバーモデルはクライアントエ
ンティティと、サーバーエンティティである目標オブジ
ェクトとを有する。下記のクライアント-サーバーモデ
ルのためのそのような編成のひとつは、図1に示したネ
ットワーク14を介して相互接続された図2のコンピュ
ータ30のようなコンピュータを含む。
【0040】まず、図3を参照すると、分散オブジェク
トオペレーティング環境301内の別々のホストコンピ
ュータ上にクライアント302と目標オブジェクト30
4が存在する「ホストからホストへ」と呼ばれるクライ
アント-サーバーモデル300が示されている。クライ
アント302はクライアントホストコンピュータ308
上で走っているクライアントプロセス306内に存在す
る。クライアント302は、オブジェクトレファレンス
314を保持する(すなわちオブジェクトレファレンス
314への第1のインディレクション312を有する)
第1の代理オブジェクト310を用いる。一方、オブジ
ェクトレファレンス314は目標オブジェクト304へ
第2のインディレクション316を与える。ここで用い
る場合、あるオブジェクトへのインディレクションと
は、多分オブジェクトとの直接対話によらないかも知れ
ないが、オブジェクトの場所を見いだすのに十分なだけ
の情報である。図3の場合、第1のインディレクション
312は、通常、オブジェクトレファレンスへの単なる
直接ポインタであるが、第2のインディレクション31
6はしばしば更に複雑である。インディレクション31
6のようなインディレクションについては、後に図7
(a)および図7(b)を参照して更に詳細に説明す
る。また、クライアントプロセス306内には、同じく
オブジェクトレファレンス314を保持することがある
第2の代理オブジェクト311のような、他の代理オブ
ジェクトがクライアントプロセス306内に存在するこ
とがある。いくつかの場合、代理オブジェクト310お
よび311は、従来のプログラミング言語オブジェクト
であり得る。しかし、いくつかの分散オブジェクトオペ
レーティング環境は代理オブジェクトを含んではいない
ことがある。このような場合、クライアント302は代
理オブジェクトを伴わないオブジェクトレファレンス3
14を使うことになろう。
【0041】クライアント302と同様に、図3の目標
オブジェクト304は、サーバーホスト320上で実行
されているサーバープロセス318内に存在することが
できる。他のエンティティは、サーバーホスト308と
クライアントホスト320のいずれにも存在することが
できる。これらは、クライアントプロセス、サーバープ
ロセス、および/または追加のプロセスのもとで走る追
加のプロセスおよび/またはオブジェクトを、これらに
限定せずに含む。2つの適当なプロセスは、クライアン
トホスト308上で実行される daemon 1 プロセス31
7と、サーバーホスト320上で実行される daemon 2
プロセス321である。普通、デーモンプロセスはバッ
クグラウンドで実行され、当業者には周知である。
【0042】図3に示すように、ホストからホストへの
場合、クライアント302は、そのコールをいくつかの
「層」、すなわち、目標オブジェクトに対してリクエス
トされるサービスに直接関係のない複雑なものを通って
目標オブジェクト304へ転送しなければならない。ホ
ストからホストへの例においては、クライアント302
と目標オブジェクト304との間にネットワーク接続を
形成しなければならない。クライアントホスト308と
サーバーホスト320、およびクライアントプロセス3
06とサーバープロセス318等のように、層は異なる
ので、クライアント-サーバーネットワーク接続を直接
形成することはできない。むしろ、クライアントプロセ
ス306はコールを解釈し、それを代理オブジェクト3
10に転送する。代理オブジェクト310は、ORBを
用いてまずサーバーホスト320を見いだし、次に、サ
ーバープロセス318と目標オブジェクト314を識別
する。更に、このデータがネットワークを介して転送さ
れる際、このデータはマーシャル(すなわち、ネットワ
ークを介した転送の準備として、ネットワーク通信プロ
トコルに従ってフォーマット)され、送られ、受信さ
れ、最後にアンマーシャルされねばならない。したがっ
て、ホストからホストへ、はクライアント-サーバー対
話の複雑なケースである。したがって、追加の層とその
結果としてのステップが、ホストからホストへのクライ
アント-サーバー対話を、システム資源活用の面におい
て、しばしば最も高価になる可能性のある対話にしてい
る。
【0043】図4は、クライアント302と目標オブジ
ェクト304が同じホストコンピュータ、クライアント
/サーバーホスト322を共有している「プロセスから
プロセスへの」クライアント-サーバーモデルを示す。
しかし、クライアント302と目標オブジェクト304
は、別々のプロセス内に存在する。図3と同様に、クラ
イアント302は、クライアント/サーバーホスト32
2上で走っているクライアントプロセス306内に存在
する。クライアント302は、オブジェクトレファレン
ス314を保持する(すなわちオブジェクトレファレン
ス314への第1のインディレクション312を有す
る)第1の代理オブジェクト310を用いる。一方、オ
ブジェクトレファレンス314は目標オブジェクト30
4へ第2のインディレクション316を与える。目標オ
ブジェクト304は、クライアント/サーバーホスト3
22上で走っているサーバープロセス318内に存在す
る。「ホストからホストへ」の場合と同様に、プロセス
および/またはオブジェクト等の追加のエンティティが
クライアント/サーバーホスト322上に存在すること
ができる。例えば、同じくオブジェクトレファレンス3
14を保持するかもしれない第2の代理オブジェクト3
11のような、クライアントプロセス306内に存在す
る他の代理オブジェクトが存在してもよい。しかし、い
くつかの分散オブジェクトオペレーティング環境は、代
理オブジェクトを含まない。そのような場合、クライア
ント302は代理オブジェクトを伴わないオブジェクト
レファレンス314を用いる。いずれにしても、プロセ
スからプロセスへの対話は、ホストからホストへの対話
よりもはるかによい。これは、ネットワーク通信ステッ
プが不要であることが一因である。
【0044】図5は、クライアント302と目標オブジ
ェクト304が共に同じプロセス、クライアント/サー
バープロセス324内に存在するクライアントサーバー
モデルを示す。ここでも、クライアント302は、オブ
ジェクトレファレンス314を保持する(すなわちオブ
ジェクトレファレンス314への第1のインディレクシ
ョン312を有する)第1の代理オブジェクト310を
用いる。一方、オブジェクトレファレンス314は目標
オブジェクト304へ第2のインディレクション316
を与える。この場合、第2のインディレクション316
は、共有メモリへのポインタでありさえすればよい。こ
の状況は、多分前記三つのケースのうちで最良のもので
あろう。ネットワーク通信が不要であり、また、両オブ
ジェクトがひとつのプロセスのもとにあるので、両者は
クライアント/サーバープロセス324に割り当てられ
たメモリ内に共存する。図5の状況においては、オブジ
ェクト等、他のエンティティは、クライアント/サーバ
ープロセス324内に存在することができる。例えば、
クライアントプロセス306内には、第2の代理オブジ
ェクト311のような他の代理オブジェクトが存在して
もよく、この第2の代理オブジェクト311は、同じく
オブジェクトレファレンス314を保持する。しかし、
いくつかの分散オブジェクトオペレーティング環境は、
代理オブジェクトを含まない。そのような場合、クライ
アント302は代理オブジェクトを伴わないオブジェク
トレファレンス314を用いる。
【0045】上記図面に示さなかった他の2つの代表的
なクライアント-サーバーシナリオについて、以下に簡
単に説明する。第1のシナリオは、クライアントがオブ
ジェクトである実施例に係わる。当業者には理解できる
ように、クライアントがオブジェクトであってもサービ
スをリクエストする他のエンティティであっても、発生
する問題は非常に似ている(しばしば同一である)。他
のシナリオは、クライアントオブジェクトと目標オブジ
ェクトが自己同一オブジェクトであるシナリオでる。こ
れは、オブジェクトがそれ自身に対して再帰コールを行
う場合に起こり得る。再帰コールは異常と思われるかも
知れないが、このクライアント-サーバー対話はかなり
ありふれたもので、強力な手段であり、クライアントオ
ブジェクトと目標オブジェクトがユニークであるが同じ
プロセス内に存在する場合と類似の(あるいは多分同一
の)方法で、処理することができる。
【0046】図6(a)は、不変オブジェクト401が
三つの異なる状態にわたる経緯を示す。最初の移行40
0によって、不変オブジェクト401は前の状態から状
態1になる。オブジェクト401の状態1は、一時的状
態402と不変状態404の両方を含む。移行406に
よって、不変オブジェクト401は状態1から状態2に
なる。状態1と同様に、オブジェクト401の状態2
も、一時的状態408と不変状態410の両方を含む。
最後に、移行412によって、不変オブジェクト401
は状態2から状態3になる。ここでも、オブジェクト4
01の状態3は、一時的状態414と不変状態416の
両方を含む。不変オブジェクト401に関して、移行4
00、406、および412は、オブジェクトが存在し
ている状態でのプロセス終了を含めて、オブジェクト4
01の状態を変える任意のオペレーションであればよ
い。不変オブジェクトは各段階において不変状態を含ん
でいるので、それはプロセスどうしを橋渡しするととも
に、長期間にわたって自己を維持する能力を持つ。
【0047】これと対照的に、図6(b)は一時的オブ
ジェクト417の三つの異なる状態にわたる経過を示
す。最初の移行418によって、一時的オブジェクト4
17は、前の状態から状態Aになる。一時的オブジェク
ト417の状態Aは、一時的状態420を含むが、何ら
の不変状態も含まない。移行422によって、一時的オ
ブジェクト417は、状態Aから状態Bになる。状態A
と同様に、一時的オブジェクト417の状態Bは、一時
的状態424を含み、何らの不変状態も含まない。最後
に、移行426によって、一時的オブジェクト417は
状態Bから状態Cになる。ここでも、一時的オブジェク
ト417の状態Cは、一時的状態428を含み、何らの
不変状態も含まない。一時的オブジェクト417に関し
て、移行418、422、および426は、一時的オブ
ジェクト417が存在しているプロセスの終了を含むオ
ペレーションを除き、一時的オブジェクト417の状態
を変化させる任意のオペレーションであればよい。一時
的オブジェクト417は不変メモリを含まないので、プ
ロセスどうしを橋渡しすることはできない。したがっ
て、一時的オブジェクトは、唯一のプロセス内に存在
し、プロセスが終了するときに消滅する。また、プロセ
スの場所とアドレスは変更できないので、一時的オブジ
ェクトの場所とアドレスも変更できないことに注目され
たい。
【0048】クライアント-サーバーモデルと、一時的
オブジェクトと不変オブジェクトへの関連性の上記考察
から、クライアント-サーバー対話を効率的にかつ融通
性をもって処理するためのフレームワークが好ましいこ
とが明らかである。装置とデータ構造を提供するひとつ
のフレームワークをここで説明する。
【0049】前記クライアント-サーバー対話を容易に
するため、分散オブジェクトオペレーティングステム
(CORBAによって定義される分散アーキテクチャを
含む)は、通常「オブジェクトレファレンス」と称する
オブジェクトを組み込んでいる。オブジェクトレファレ
ンスは、オペレーションの一般的パラメータを提供する
ほか、個々のオペレーションリクエストの目標オブジェ
クトの場所を見いだし識別する役割を果たす。様々な種
類のオブジェクトの処理は異なるので、同じフレームワ
ークのもとで、一時的オブジェクトと不変オブジェクト
を組み込んだ従来の技術には何の示唆もない。しかし、
本発明は、一時的オブジェクトと不変オブジェクトを統
合する分散オブジェクトオペレーティング環境内で用い
るためのフレームワークを含んでいる。一時的オブジェ
クトレファレンスと不変オブジェクトレファレンスを組
み込んだ実施例を後で更に詳細に説明する。
【0050】オブジェクトレファレンスは、クライアン
トをその対応する目標オブジェクトへ指向させるので、
「オブジェクトレファレンス」という用語を修飾するの
に用いられる際、「一時的な」と「不変の」という形容
詞に対する別の有意義な見方がある。不変オブジェクト
レファレンスは、同一性が連続している分散オブジェク
トへのインディレクションである(分散オブジェクトの
場所を見いだし識別する)。したがって、不変オブジェ
クトレファレンスのインディレクションは、それが常に
有効(不変オブジェクトの同一性が破壊されない限り)
であるので、不変インディレクションである。これとは
対照的に、一時的オブジェクトレファレンスは、同一性
が連続していない分散オブジェクトへのディレクション
である。したがって、一時的オブジェクトレファレンス
のディレクションは、一時的ディレクションである。
【0051】一時的オブジェクトレファレンスと不変オ
ブジェクトレファレンスの他に、更に二種類のオブジェ
クトレファレンスを挙げなければならない。ひとつは
「ナル(ゼロ)」オブジェクトレファレンスであり、も
うひとつは「無効」オブジェクトレファレンスである。
一時的オブジェクトレファレンスと不変オブジェクトレ
ファレンスと同様に、ナルオブジェクトレファレンスと
無効オブジェクトレファレンスとはナルオブジェクトと
無効オブジェクトとに対応する。ナルオブジェクトは、
インターフェイスを持たないか、あるいは、クライアン
トにサービスを提供しないオブジェクトであるかもしれ
ない。好ましい実施例においては、ナルオブジェクトレ
ファレンスはサポートされるので、」コード化できる。
無効オブジェクトは普通、非存在オブジェクトまたは不
適当に形成されたオブジェクトであり、通常はサポート
されない。したがって、無効オブジェクトは普通はコー
ド化しなくてもよい。
【0052】図7(a)は、本発明の一実施例による一
時的オブジェクトレファレンス500に関するデータ構
造の説明図である。オブジェクトレファレンス500
は、種類フィールド501、1セットのエンドポイント
アドレス502、具体化番号504、およびオブジェク
トキー506を含む。好ましい実施例においては、種類
フィールド501は、それに向かってオブジェクトレフ
ァレンス500がインディレクトするオブジェクトの種
類を表すデータ要素である。他の実施例において、種類
フィールド501は、オブジェクトレファレンス500
に含まれず、オブジェクトの種類は、オブジェクトレフ
ァレンス500のデータ構造の顕著な特徴(distinguis
hing features)によって判定される。すなわち、オブ
ジェクトレファレンスがインディレクトする対象である
オブジェクトの種類は、オブジェクトレファレンスのデ
ータ構造によって一義的に判定される。
【0053】図7(a)の考察を続けると、エンドポイ
ントアドレスのセット502は、クライアントがサーバ
ーホストと、目標オブジェクトが内在するかもしれない
サーバープロセスの場所を見いだすために必要なアドレ
シング情報を含む。この情報は、サーバーホストネット
ワークアドレス、サーバープロセスネットワークポート
番号、および/または目標オブジェクトのメモリ場所等
の要素を含むことができる。更に、エンドポイントアド
レスのセットは、それぞれ有効な複数のアドレスを含む
ことができる。エンドポイントアドレスのセットは、可
変長または固定長のデータ要素を含むことができる。固
定長データ要素の適切な長さの範囲は約1ないし128
バイトであるが、好ましい長さの範囲は約24ないし9
6バイト、更に好ましい長さは約64バイトである。例
えば、ネットワークプロトコルが、周知の通信制御プロ
トコル/インターネットプロトコル(TCP/IP)で
あれば、アドレシング情報502のセット内のひとつの
アドレスは6バイトのデータ要素を含むことができ、そ
のうち最初の4バイトはネットワーク順のTCP/IP
サーバーホストネットワークアドレスで、あとの2バイ
トは同じくネットワーク順のTCP/IPサーバープロ
セスネットワークポート番号である。
【0054】図7(a)のオブジェクトレファレンス5
00のもうひとつの要素である具体化番号504は、ア
ドレスを再使用する際、ORBリクエストを間違った宛
先へ誤発送しないための識別子である。言い換えれば、
たとえサーバーホストアドレスとサーバープロセス同定
事項(identification)を正確に指示するアドレシング
情報のセットを用いても、サーバープロセスが依然とし
て一義的に識別されない可能性がある。以下で考察する
ように、本発明の具体化番号はORBの誤発送の可能性
を克服する。
【0055】誤発送が一見あり得ないように思われて
も、一時的オブジェクトとそれらのホストサーバープロ
セスがどのように管理されるかを注意深く考慮しなけれ
ばならない。一時的オブジェクトはプロセスからプロセ
スへは存在せず、それらのサーバープロセスが終了する
とき終了する。しかし当業者が理解するように、作動中
のコンピュータはコンピュータプロセスを常に作成しま
た削除しており、その各プロセスは特定のネットワーク
アドレスを持っている。したがって、ひとつのプロセス
が終了することによって、そのプロセス内に存在するす
べてのユニークな一時的オブジェクトを終了させるとと
もにネットワークアドレスを解放する可能性が、確実に
ある。利用可能なネットワークアドレスの量は有限であ
るので(普通は 32,768 すなわち 32k)、このネットワ
ークアドレスは再使用される可能性がある。したがっ
て、終了したばかりの一時的オブジェクトへのリクエス
トは、他の何らかの顕著な同定事項(distinguishing i
dentification)を付与してやらなければ、ORBによ
って誤った宛先へ向けられる可能性がある。
【0056】ORBが具体化番号504を解釈する役割
を果たすので、ORB、より具体的にはオブジェクトア
ダプタ(OA)が普通は具体化番号504を割り当てる
役割を果たす。この番号は、ORBによって識別可能で
ありさえすれば、任意である。具体化番号504の様々
な実施例が考慮されている。例えば、具体化番号504
に、タイムスタンプのような何らかの単調増加値を割り
当てれば、同時には存在しないが、偶然に同じアドレス
を受信する別々のプロセスどうしをORBが区別するこ
とができる。その他の場合、区別不可能な(indistingu
ishable)ふたつ以上のプロセスを持つことが望まし
い。この場合、同一の具体化番号を意図的に割り当てる
ことが可能である。具体化番号504にゼロ等の予め定
められた番号を割り当てることが望ましい場合、更に追
加の状況が発生するかも知れない。いずれにしても、具
体化番号504は、所定のプロトコル次第で可変長か固
定長のデータ要素を含むことができる。固定長データ要
素の適切な長さは約1ないし16バイトであるが、好ま
しい長さは約2ないし6バイト、更に好ましい長さは約
4バイトである。
【0057】当業者には理解できるように、上記または
他の実施例において説明した具体化番号は、分散オブジ
ェクトオペレーティング環境が一時的オブジェクトを間
違いなく区別することを可能にする。具体化番号は、本
発明には新規であり、分散オブジェクト環境の範囲内に
おける不変オブジェクトと一時的オブジェクトの使用を
可能にする。
【0058】図7(a)の一時的オブジェクトレファレ
ンス500の最後に示した要素はオブジェクトキー50
6である。一実施例においてオブジェクトキー506
は、サーバープロセス内のオブジェクトどうし間で区別
する役割を果たす。所定のプロトコル次第で、オブジェ
クトキー506は、固定長または可変長のデータ要素を
含むことができる。固定長データ要素の適切な長さは約
1ないし16バイトであるが、好ましい長さは約4ない
し8バイト、更に好ましい長さは約6バイトである。
【0059】図7(b)は、本発明の一実施例による不
変オブジェクトレファレンス510の説明図である。不
変オブジェクトレファレンス510は、不変サーバーオ
ブジェクトへ指向するオブジェクトであって、種類フィ
ールド511、ホスト名512、ロケータ識別番号(ロ
ケータ id)514、オブジェクトキー516、および
サブオブジェクト識別子518を含む。図示のように、
不変オブジェクトレファレンスはオプションの場所ヒン
ト520を含むことができる。図7(a)に関して上に
説明したように、種類フィールド511は、オブジェク
トレファレンス510がインディレクトする対象である
オブジェクトの種類を表すデータ要素である。ホスト名
512は、目標オブジェクトの場所を維持する役割を果
たすロケータサービス(これはロケータプロセスまたは
ロケータオブジェクト等のエンティティである)を有す
るホストコンピュータを表す。例えば、ホスト名512
はネットワークアドレスを含むことができる。好ましい
実施例において、ホスト名512によって表されるホス
トコンピュータは、内在する目標オブジェクトを有す
る。
【0060】次に、図7(b)の不変オブジェクトレフ
ァレンス510の三番目に示した要素を参照すると、ロ
ケータ id 514は、ホスト名によって定義されるホス
ト上のロケータサービスを一義的に識別する。一実施例
においては、ロケータ id は固定長データ要素を含む。
例えば、ロケータ id 514の適切な一実施例は、当該
ロケータに関するリモート手順コール(RPC)プログ
ラム番号である。RPCプロトコルと、RPCプログラ
ム番号の形成とは、当業者にはなじみである。一般的
に、RPCサービスは、一定のRPCプログラム番号と
所望のサーバープロセスアドレシング情報との間の対応
(correspondence)を維持する。すなわち、RPCサー
ビスは、サーバープロセスアドレシング情報が変更され
ると、常に更新される。したがって、分散オブジェクト
システムは、不変オブジェクトレファレンスを更新する
必要がない。この場合、ロケータ id 514は4バイト
の固定長データ要素とすることができる。次に図7
(b)の四番目の要素に目を向けると、一実施例のオブ
ジェクトキー516は、ロケータに関する目標オブジェ
クトを一義的に定義する。したがって、ロケータは、オ
ブジェクトキー516を用いて、どの所望の目標オブジ
ェクトがリクエストされてるかを判定する。
【0061】組合わせされたデータ要素512ないし5
16は、この技術分野で「インディレクション」として
当業者は周知な一例を構成する。「インディレクショ
ン」とは、クライアントエンティティを(ロケーターオ
ブジェクト等の)ソースへ差し向ける情報、ポインタ等
のセットであって、このソースがクライアントエンティ
ティをオブジェクトへ指向させることができる。たとえ
話をすると、あるクライアントが地理的方向をリクエス
トしたとすると、インディレクションは、クライアント
を現在の地図の場所を向かせるか、あるいは多分、地理
に詳しい個人の電話番号を教えるであろう。(直接のア
ドレシングよりもむしろ)インディレクションを用いる
というアイデアは、不変オブジェクトがプロセス同士
間、ホストコンピュータ同士間を移動するので、不変オ
ブジェクトには有利である。
【0062】引き続き図7(b)を参照すると、サブオ
ブジェクト識別子518は、普通は、より細かいオブジ
ェクトを管理するため、普通は目標オブジェクトによっ
てのみ用いられるデータ要素である。たとえ話をする
と、スプレッドシートがひとつのオブジェクトであると
すると、スプレッドシートのセルがサブオブジェクトで
ある。オブジェクトの細かさ(granularity)、サブオ
ブジェクト、およびサブオブジェクトを管理する方法と
装置については、本出願人の別出願である「弁理士書類
番号:P/717/SUN1P023、発明の名称:オブジェクトの集
合を管理するための方法および装置、発明者:Vanderbi
lt 他」に詳細に記載されている。不変オブジェクト5
10にオプションとして含まれるもうひとつの要素は場
所(ロケーション)ヒント520である。場所ヒント5
20は、目標オブジェクトの最後に知られた場所に関す
る詳細を与える、オプションとしてのデータ要素であ
る。場所ヒント520は、期限切れタイムスタンプも含
むことができる。説明のため、ターオブジェクトが前も
ってコールされると、目標オブジェクトのためのアドレ
シング情報は早めに検索される。この場所ヒント520
を用いて、分散オペレーティングシステムは、ロケータ
へのコールを回避することができる。もちろん、場所ヒ
ント520が期限切れであるか、あるいは存在しない場
合、いずれにしてもロケータに対して問い合わせをしな
ければならない。
【0063】図7(a)と図7(b)とに関して、以上
説明した本発明の実施例は、様々な種類のオブジェクト
レファレンスをひとつの分散オペレーティング環境フレ
ームワークへと全体的に統合する役割を果たす。上記の
ように、分散オブジェクト環境は、ふたつの基本的種類
のオブジェクトレファレンスを区別することができ、な
おかつ、それぞれの種類に与えられた利点を保持するこ
とができる。
【0064】本発明が提供するデータ要素を用いれば、
更なる統合ができる。例えば、一時的オブジェクトレフ
ァレンスおよび不変オブジェクトレファレンスにおける
オブジェクトキーを用いて、第1の分散システムの第1
のプロトコルに従ってフォーマットされたオブジェクト
レファレンスを第2のプロトコルを用いて第2の分散シ
ステムへ転送することができる。このことは、第2のオ
ブジェクトレファレンスを第2のプロトコルに従ってフ
ォーマットし、これを第1のオブジェクトレファレンス
の可変長オブジェクトキーに格納することによって行う
ことができる。オブジェクトレファレンスを受信した時
点で、第2の分散システムは、オブジェクトキーをスト
リップアウト(strip out)し、第2の分散システム用
に適したフォーマットの目標オブジェクト用のオブジェ
クトレファレンスを発生させる。このようにして、一時
的オブジェクトレファレンスおよび不変オブジェクトレ
ファレンスはともに、同一の機構であるオブジェクトキ
ーによって、複数のプロトコルにわたって転送可能であ
る。
【0065】本発明が提供する全体的に統合されたフレ
ームワークの更なる証拠は、不変オブジェクトレファレ
ンスデータ構造の場所のヒントを考慮して見いだすこと
ができる。明らかなように、場所ヒントの適切な実施例
は、アドレシング情報のセット、具体化番号、および期
日(expiration date)を含む。場所ヒントが利用可能
で、最新で、かつ有効である場合、不変オブジェクトレ
ファレンスは、その不変オブジェクトへ、一時的オブジ
ェクトレファレンスがその一時的オブジェクトへ指向す
るのと全く同じ機構によって、インディレクトする。こ
の組合わせは、二種類のオブジェクトレファレンスの統
合にとって有効であるのみならず、不変目標オブジェク
トのコールのための(システム資源活用に関して)新規
かつコスト効果のある方法(この方法は、ロケーターの
使用を介してでなく直接不変分散オブジェクトをコール
することである)のためのフレームワークを設定する。
【0066】ここに開示した一時的および不変オブジェ
クトレファレンスの実施例は、本発明のデータ構造面を
実装するための、いくつかの好ましいフレームワークを
提供するが、その他にも多くの適切な実施例がある。例
えば、いくつかの実施例においては、不変オブジェクト
がその場所を移動すると、分散オペレーティングシステ
ムは個々のオブジェクトレファレンスをすべて更新する
ことができる。したがって、不変および一時的オブジェ
クトレファレンスはともに、図7(b)の不変オブジェ
クトレファレンス510の実施例で説明したインディレ
クションではなく、直接的アドレシング情報を持つこと
ができる。更に例を挙げると、いくつかの実施例は、イ
ンディレクションのみに基づいて、直接的アドレシング
を完全に削除することができる。この場合、一時的オブ
ジェクトレファレンスは、不変オブジェクトレファレン
ス510に類似の形で現れるかも知れない。更に別の実
施例は、特別のネットワーク通信プロトコルによって要
求される特徴を、それらの特定のフレームワークのもと
におけるオペレーションを可能にするため、組み込むで
あろう。
【0067】上記の考察から明らかなように、一時的お
よび不変オブジェクトと、一時的および不変オブジェク
トレファレンスとを含む、オブジェクトの上記構造を用
いる分散オペレーティングシステムは、従来技術を超え
る多くの利点を有する。これら利点は、本発明の方法面
を利用するクライアント-サーバー対話に関する以下の
考察の中で更に明らかになる。
【0068】次に、図8を参照して、本発明の一実施例
によるクライアント-サーバー対話の実装方法600を
説明する。クライアント-サーバー対話は、ステップ6
02において、クライアントがサーバーオブジェクト
(目標オブジェクトとも呼ばれる)を発動すると開始す
る。クライアントは、クライアントプロセスまたはクラ
イアントオブジェクト等、適切なエンティティであれば
よい。次のステップ604において、クライアントはサ
ーバーオブジェクトに関するアドレシング情報を獲得す
る。例えば、獲得されたアドレシング情報は、一時的お
よび不変オブジェクトレファレンスに関する上記の考察
で述べたようなデータを含むことができる。このアドレ
シング情報は複数のアドレスを含むことができ、その中
からひとつの特定のアドレスを選択できると理解すべき
である。アドレス選択のひとつの基準は、クライアント
とサーバーとの間で最も速い転送モードを可能にすると
いうことである。アドレス選択のための一般に用いられ
るもうひとつの基準は、セキュリティである。また、こ
のアドレシング情報の獲得には、情報が様々なソースに
存在するという事実のため、様々なステップが含まれ
る。
【0069】ステップ604において一旦アドレシング
情報が獲得されると、クライアントはステップ606に
おいて、アドレシング情報を評価して特定のアドレスを
選択する。ステップ606において、クライアントは、
クライアントとサーバーとの間の転送速度、ロードシェ
アリング(load sharing)、セキュリティ、および/ま
たはアドレシング情報の完全性への懸念等の目的を含む
様々な理論的根拠に基づいてひとつのアドレスを選択で
きる。ステップ606のサブステップの一実施例の詳細
を、図10を参照して以下に詳細に説明する。
【0070】引き続き、図8の方法600において、ク
ライアントは、ステップ606で選択されたアドレスへ
リクエストをステップ608で送る。このアドレスがリ
モート(遠隔)アドレスである場合、ステップ608
は、選択されたアドレスを、方法およびアーギュメント
とともに、マーシャルし、遠隔目標オブジェクトとのネ
ットワーク接続を形成し、目標オブジェクトへリモート
コールを行うという、各ステップを含むことができる。
ここで用いる場合、データを「マーシャルする」とは、
ネットワーク転送の準備として、所定のネットワーク通
信プロトコルに従ってデータをフォーマットすることで
ある。ステップ610において、クライアントが応答を
期待するか否か判定し、期待する場合、プロセス制御は
ステップ612へ進み、そこでクライアントは目標オブ
ジェクトから応答を受信する。ステップ608と同様
に、目標オブジェクトが遠隔である場合、クライアント
は目標オブジェクトからの応答を「アンマーシャル」す
ることができる。すなわち、データは所定のネットワー
ク通信プロトコルからクライアントにとって意味のある
フォーマットへ翻訳される。応答を受信した後、あるい
は応答が期待できない場合、制御はステップ614へ進
み、そこで図8のクライアント-サーバー対話は完了す
る。
【0071】次に、図9を参照して、本発明のひとつの
方法面によるステップ604を更に詳細に説明する。当
業者には理解できるように、図9の方法は一般的に、図
7(a)および図7(b)のオブジェクトレファレンス
またはそれに類似のオブジェクトレファレンスを用いる
分散オブジェクトシステム用である。しかし、明らかに
なるであろうように、本発明の範囲は、オブジェクトレ
ファレンスの追加の実施例により適した、ステップ60
4の他の実施例を含む。
【0072】図9のフローチャートは、ステップ702
において、制御が図8のステップ604へ送られたとき
に開始する。図9の最初の実質的ステップ、すなわちス
テップ704は、オブジェクトの種類が一時的か否かを
判定する。図7(a)と図7(b)に関して先に考察し
たように、オブジェクトの種類判定は、内部名の調査な
ど、様々な方法によって行うことができる。オブジェク
トの種類が一時的である場合、制御はステップ706へ
分岐し、そこでアドレシング情報は直接、オブジェクト
レファレンスから返される。このことは、図7(a)に
よる一時的オブジェクトレファレンスが、インディレク
ションと異なり、直接的アドレシング情報をもっている
ゆえ可能である。ステップ706において一旦アドレシ
ング情報が返されると、制御はステップ708へ進み、
そこでアドレシング情報獲得ステップ604は完了す
る。
【0073】ステップ704の他の分岐を下へたどり、
オブジェクトの種類が一時的でない場合、制御はステッ
プ710へ進み、そこでオブジェクトの種類が不変であ
るか否か判定される。オブジェクトの種類が不変でない
場合(オブジェクトはナルまたは無効である)、制御は
ステップ712へ進み、そこでエラーメッセージが形成
され、ステップ604は完了する。明らかなように、オ
ブジェクトが一時的でも不変でもない場合(それはナル
または無効の何れかであるので)、リクエストを目標オ
ブジェクトへ送ることは適切でなく、したがって、エラ
ーメッセージが適切である。
【0074】他方、ステップ710においてオブジェク
トの種類が不変であると判定された場合、次にステップ
714において、目標オブジェクトアドレシング情報が
内在するか否かを見るため、メモリーキャッシュ−1が
チェックされる。内在する場合、制御はステップ720
へ進み、そこでアドレシング情報はキャッシュ−1から
直接返され、次にステップ708へ進み、そこで(アド
レシング情報を獲得した)ステップ604は完了する。
キャッシュメモリは、図2で説明したローカルRAM3
8のような任意の適切なメモリでよい。アドレシング情
報をメモリーキャッシュ−1に格納して検索することに
より、この情報への直接かつ迅速なアクセスが可能にな
る。
【0075】アドレシング情報がキャッシュ−1内に存
在しない場合、制御はステップ716へ進み、そこでク
ライアントはアドレシング情報を獲得する。普通、アド
レシング情報は、図7aと5(b)を参照して先に説明
したように、ロケーターサービスを用いるインディレク
ションによってステップ716において獲得される。図
11を参照して、ステップ716の一実施例を更に詳細
に以下説明する。ステップ716においてアドレシング
情報が獲得された後、その情報はステップ718におい
てキャッシュ−1に格納され、このことによって、この
方法の効率が永続する。更に、キャッシュ−1において
利用可能なアドレシング情報を増やすための、もうひと
つの機構を、図13を参照して以下に説明する。次に、
ステップ720において、アドレシング情報がキャッシ
ュ−1から返されて、制御はステップ708へ進み、そ
こでアドレシング情報獲得ステップ604が完了する。
【0076】次に、図10を参照して、図8のアドレス
選択ステップ606の一実施例を更に詳細に説明する。
この実施例は主として、クライアントとサーバーとの間
で最も速い転送モードを与えるアドレシング情報を選択
する役割を果たす。ここで説明する三つの異なる転送モ
ードは、(転送速度が下がる順に)ローカル、共有メモ
リ、およびリモート転送である。ローカル転送は、同じ
プロセス内で発生し、同じアドレススペース内でデータ
をコピーすることによって実行される。共有メモリ転送
(同一ホストとも呼ばれる)は、ホストオペレーティン
グシステムプロセス内通信手順(host operating syste
m inter-process communication procedures)を用いて
実行される。リモート転送は、ネットワーキング施設を
用いて実行される。これらの各々は、オペレーティング
システムやネットワーク通信プロトコル等の要因によっ
て異なる。ローカル、共有メモリ、およびリモート転送
の設計と実装は、当業者にはなじみである。
【0077】図10のフローチャートは、ステップ80
2において制御が図8のステップ606へ進んだとき始
まる。次にステップ804において、目標オブジェクト
がクライアントプロセス内で走っているか否かを判定す
る。走っている場合、ステップ806において、クライ
アントとサーバーを接続するため、ローカルアドレスと
ローカル転送が選択される。他方、目標オブジェクトが
クライアントプロセス内で走っていない場合、ステップ
810において、サーバーオブジェクトが同じホスト上
でクライアントとして走っているか否か、また、共有メ
モリーアドレシング情報が利用可能か否かを判定する。
そうであれば、ステップ812において、クライアント
とサーバーを接続するため、共有メモリーアドレシング
と共有メモリ転送が選択される。そうでない場合、目標
オブジェクトがクライアントプロセスにもクライアント
ホストにも存在しなければ、ステップ814は、クライ
アントとサーバーを接続するため、リモートアドレスと
リモート転送を選択する。いずれにしても、アドレシン
グが選択された後、制御はステップ808へ進み、そこ
で図8のステップ606が完了する。
【0078】次に、図11を参照して、図9のステップ
716の一実施例を更に詳細に説明する。図11の方法
は、ステップ902においてアドレシング獲得ステップ
716が制御を受けるとき始まる。次にステップ904
において、ORBデーモンプロセスに関する一時的オブ
ジェクトレファレンスがロケータ id とホスト名を用い
て得られる。一実施例において、ORBデーモンプロセ
スは、分散オブジェクト環境の各コンピュータシステム
上に存在する。特にステップ904で見られるORBデ
ーモンは、サーバーホストコンピュータ上の背景を走る
プロセスであり、そのもとでロケーターオブジェクトが
活動している(active)。デーモンプロセスは当業者に
は周知である。次にステップ906において、クライア
ントはルックアップ手法を発動するためにロケーターオ
ブジェクトをコールし、目標オブジェクト用のオブジェ
クトキーを含むアーギュメントを転送する。ORBデー
モンは、応答として目標オブジェクト用の直接的アドレ
シング情報を返す。好ましい実施例においては、デーモ
ンプロセスは追加的にサーバープロセスの状態を確認
し、必要ならばプロセスを起動する。サーバープロセス
起動に関する好ましい一実施例は、本出願人の別出願で
ある、「弁理士書類番号:P747/SUN1P030、発明の名
称:コンピュータプロセスの管理方法と装置、発明者:
Vanderbilt 他」に見られる。直接的アドレシング情報
を受信した後、制御はステップ908へ進み、そこで図
9のステップ716は完了する。
【0079】次に、図12を参照して、図11のステッ
プ904の一実施例を更に詳細に説明する。図12の方
法は、ステップ1002において、ORBデーモンに関
して一時的オブジェクトレファレンス獲得ステップ90
4が制御を受けると始まる。ステップ1004におい
て、ORBデーモンに関する一時的オブジェクトレファ
レンスがメモリーキャッシュ−2内に存在するか否かを
判定する。存在する場合、制御はステップ1012へ分
岐し、そこでORBデーモンに関する一時的オブジェク
トレファレンスがキャッシュ−2から直接返される。一
時的オブジェクトレファレンスが返された後、制御はス
テップ1014へ進み、そこで図11のステップ904
は完了する。
【0080】ORBデーモンに関する一時的オブジェク
トレファレンスがキャッシュ−2内に存在しない場合、
制御はステップ1006へ分岐し、そこでクライアント
はサーバーホスト上のリモート手順コール(remote pro
cedure call = RPC)バインダをコールし、ロケータ
id と具体化番号をアーギュメントとしてコールへ転送
する。応答として、RPCバインダはアドレシング情報
を返し、ステップ1008においてクライアントは返さ
れたORBデーモンアドレシング情報を利用して一時的
オブジェクトレファレンスを作成する。RPCバインダ
の実装と構造は当業者には周知である。一旦一時的オブ
ジェクトレファレンスが作成されると、クライアント
は、それをステップ1010においてキャッシュ−2に
格納し、それによってこの方法の効率を永続させる。次
に制御はステップ1012へ進み、そこでORBデーモ
ンに関する一時的オブジェクトレファレンスがキャッシ
ュ−2から直接返される。一時的オブジェクトレファレ
ンスが返された後、制御はステップ1014へ進み、そ
こで図11のステップ904は完了する。
【0081】キャッシュ−1において利用可能なアドレ
シング情報を増やすための、ひとつの方法を、図13を
参照して以下に説明する。背景として、不変オブジェク
トに関するのオブジェクトレファレンスは、(図7
(b)等を参照して説明したように)オプションとして
の場所ヒントを含むことができる。場所ヒントは、目標
オブジェクトに関する直接的アドレシング情報を含む。
各場所ヒントは、キャッシュ−1内を探す、図9のアド
レス情報ステップ714を有する。更に、当業者には理
解されるように、オブジェクトレファレンスは、オブジ
ェクトコールを介して、あるいはオブジェクトコールへ
応答して、ホストコンピュータによって受信され得る。
したがって、オブジェクトレファレンスが受信されるた
びにアドレシング情報を増やす可能性がある。
【0082】図13の方法において、第1のステップ1
100は、前のパラグラフで述べた二つの理由のような
何らかの理由で受信したオブジェクトレファレンスをア
ンマーシャルする。次にステップ1102において、オ
ブジェクトレファレンスが場所ヒントを持っているか否
かを判定する。持っている場合、ステップ1104にお
いて、アドレシング情報とロケーションヒントからの期
日(もしあれば)がキャッシュ−1に格納される。場所
ヒントがない場合、あるいはキャッシュ−1の更新後、
図13の方法はステップ1106において行われ、オブ
ジェクトレファレンスは当初意図された目的のために使
用可能である。
【0083】本発明の、図13の方法に密接に関連し
た、もうひとつの方法面において、分散オブジェクトオ
ペレーティング環境の別々のコンピュータは、アドレシ
ング情報を共有するために共働する(work togethe
r)。したがって、いずれかのコンピュータが目標オブ
ジェクトに関するアドレシング情報を得るためにロケー
ターサービスを用いるとき、このコンピュータは他方で
はこの情報を、分散オブジェクトオペレーティング環境
内の他の複数のコンピュータへ分配することができる。
この情報を転送するための適当な方法のひとつは、オブ
ジェクトレファレンスによる方法であろう。次に各コン
ピュータはこのアドレシング情報を期日とともにキャッ
シュ−1メモリに格納する。
【0084】次に、本発明の更にひとつの利点を考察す
る。当業者には理解できるように、ひとつのモデル(こ
の考察に好都合)は、ORBをここで、アプリケーショ
ンレベルORB、転送レベルORB、および通信レベル
ORB、と定義する三つの異なる抽象的レベルに分け
る。低い通信レベルORBを表すコンポーネントとして
は、図10に関連して考察した、共有、ローカル、およ
びリモートの、アドレシングおよび転送の活動を含む。
高いアプリケーションレベルORBを表すコンポーネン
トとしては、サーバーへの初期クライアントコールがあ
り、ここではサーバーの場所とオブジェクト種類はクラ
イアントに対して不透明である。中間レベルである転送
レベルORBは、サーバーオブジェクトの種類に係わる
必要のあるORBのごく一部である。したがって、本発
明は、分散オブジェクト環境内において一時的および不
変オブジェクトを統合するタスクを、ORB全体を通じ
て不当な負荷を導入することなく達成し、それによって
分散オブジェクト環境の効率を確保する。
【0085】本発明のほんの数実施例のみを説明した
が、本発明はその精神または範囲から逸脱することな
く、他の多くの形態において実施可能であることを理解
すべきである。図3と図4を参照して説明したクライア
ント−サーバーモデルは、単なる見本であって、決して
限定するものと解釈してはならない。例えば、「ホスト
からホストへ」モデルは、複数の目標オブジェクトを含
むように外挿(拡張)が可能である。すなわち、第1の
目標オブジェクト304は、多分他の分散オブジェクト
環境内の他の目標オブジェクトへインディレクトするオ
ブジェクトレファレンスに過ぎないであろう。あるい
は、この第1の目標オブジェクトは、リクエストされた
サービスの一部分を実行し、第1のクライアント302
に応答する前に、自分のコールを第2の目標オブジェク
トに対して行う。理解できるように、可能なものを列挙
すると多くの実施例があり、それらはすべて本発明の範
囲内に入る。
【0086】更に、図7(a)と図7(b)のデータ構
造は、本発明の範囲内においてなお、大幅に変更するこ
とができる。第1の例としては、一時的および不変オブ
ジェクトレファレンスに関するデータ構造は、種類フィ
ールドなしで実施可能である。更に追加の例は、複数の
ネットワーク通信プロトコル、オペレーティングシステ
ム、およびアプリケーションプログラムを考慮すること
によって見いだすことができる。これらの各々には、説
明したデータ構造の特定の編成が必要となるだろう。こ
れら数多くの実施例のそれぞれの構成と実装は当業者に
は自明であり、したがって本発明の範囲内に入る。
【0087】分散オブジェクトシステムの技術に精通し
た者には理解できるように、一時的および不変オブジェ
クトを処理する上記方法の基礎をなすアイデアは、広範
囲の代替実施例として実施することができ、詳細に考察
するには余りにも数が多い。しかし、基礎となる考え方
は説明したので、様々な変形は当業者には明らかであろ
う。例えば、図10に関連して説明した一実施例である
転送モードの選択方法は、多くの変形を持つことができ
る。選択基準は負荷分担欲求(load sharing desire)
を強調することができるので、この基準のもとでは、リ
モートアドレスが最良のアドレスであろう。他の面から
は、説明しなかった他の転送形式もあり得る。しかし、
他の転送形式が利用可能であれば、この技術に精通した
者は、他の転送形式を利用するために本発明の教示をど
のように適用するか理解するであろう。
【0088】したがって、これらの例は説明的なもので
あって制限的なものではなく、本発明はここに示した例
に限定されない。
【図面の簡単な説明】
【図1】相互接続された様々なコンピュータを備えるコ
ンピュータネットワークの構成図である。
【図2】図1の1台のコンピュータの構成図である。
【図3】分散オブジェクトオペレーティング環境におけ
る、クライアントホストコンピュータ上で走るクライア
ントと、別のサーバーホストコンピュータ上で走るサー
バーオブジェクトとの間の関連性を示す、ホストからホ
ストへのクライアント-サーバーモデルの説明図であ
る。
【図4】クライアント/サーバーホストコンピュータ上
の別々のプロセス内で走るクライアントとサーバーとの
間の関連性を示す、プロセスからプロセスへのクライア
ント-サーバーモデルの説明図である。
【図5】単一のクライアント/サーバープロセス内で走
るクライアントとサーバーとの間の関連性を示す説明図
である。
【図6】(a)は、三つの異なるオブジェクト状態を経
過する不変オブジェクトの説明図であって、各状態は本
発明の第1の面による一時的状態および不変状態を含
む。(b)は、本発明の第2の実施例による三つの異な
る状態を経過する一時的オブジェクトの説明図であっ
て、各状態は本発明の第2の面による一時的状態を含
む。
【図7】(a)は、一時的オブジェクトに関するオブジ
ェクトレファレンスの説明図であって、オブジェクトレ
ファレンスは、本発明の第2の実施例による種類フィー
ルド、オブジェクトキー、1セットのエンドポイントア
ドレス、および具体化番号を含む。(b)は、不変オブ
ジェクトに関するオブジェクトレファレンスの説明図で
あって、オブジェクトレファレンスは、本発明の第1の
実施例による種類フィールド、ホスト名、ロケーターア
イデンティフィケーション、オブジェクトキー、サブオ
ブジェクト識別子、および場所ヒントを含む。
【図8】本発明のひとつの方法面に従って、分散サーバ
ーオブジェクトを発動するため、クライアントによって
実行されるプロセスを示すフローチャートである。
【図9】図8のステップ604を更に詳細に説明するフ
ローチャートである。
【図10】図8のステップ606を更に詳細に説明する
フローチャートである。
【図11】図9のステップ716を更に詳細に説明する
フローチャートである。
【図12】図11のステップ904を更に詳細に説明す
るフローチャートである。
【図13】キャッシュメモリ内で利用可能なアドレシン
グ情報を増やすことによって本発明の利点を永続させる
プロセスの説明図である。
【符号の説明】
10…ネットワーク、12,16,18,20,22…
コンピュータ、14…ネットワーク接続、30…コンピ
ュータ、32…中央処理装置(CPU)、34…RA
M、36…ROM、38…大容量記憶装置、40…入出
力源。
フロントページの続き (72)発明者 パヴァーニ ディワンジ アメリカ合衆国, カリフォルニア州 94305, スタンフォード, エスコンデ イド ビレッジ 29シー

Claims (52)

    【特許請求の範囲】
  1. 【請求項1】 複数の分散された一時的オブジェクトを
    想定する分散オブジェクトオペレーティング環境におい
    て、サーバーコンピュータシステム上に実装されるサー
    バーコンピュータプロセス内に存在する一時的オブジェ
    クトに関するオブジェクトレファレンスとして用いるオ
    ブジェクトであって、 前記サーバーコンピュータシステムに対応するエンドポ
    イントアドレスのセットと、 前記サーバーコンピュータプロセスに対応する具体化番
    号と、 前記一時的サーバーオブジェクトに対応するオブジェク
    トキーと、 を備え、前記エンドポイントアドレスのセットと、前記
    具体化番号と、前記オブジェクトキーとが、前記一時的
    サーバーオブジェクトを一義的に識別するデータ構造を
    有するオブジェクト。
  2. 【請求項2】 前記データ構造は、前記一時的オブジェ
    クトの種類が一時的であることを示す種類フィールドを
    更に備える、請求項1記載のオブジェクト。
  3. 【請求項3】 前記エンドポイントアドレスのセット
    は、可変長のデータ要素である、請求項1記載のオブジ
    ェクト。
  4. 【請求項4】 前記エンドポイントアドレスのセット
    は、固定長のデータ要素である、請求項1記載のオブジ
    ェクト。
  5. 【請求項5】 前記エンドポイントアドレスのセットの
    アドレスの1つは、24ないし128バイト長のデータ
    要素である、請求項4記載のオブジェクト。
  6. 【請求項6】 前記1つのアドレスの4バイトは、サー
    バーコンピュータシステムネットワークアドレスであ
    り、前記1つのアドレスの2バイトは、サーバーコンピ
    ュータプロセスネットワークポート番号である、請求項
    5記載のオブジェクト。
  7. 【請求項7】 前記エンドポイントアドレスのセット
    は、サーバーコンピュータシステムネットワークアドレ
    スとサーバーコンピュータプロセスネットワークポート
    番号とを含む、請求項1記載のオブジェクト。
  8. 【請求項8】 前記分散オブジェクトオペレーティング
    環境は、クライアントコンピュータシステム上で実行さ
    れるクライアントコンピュータプロセス内に存在するク
    ライアントを備え、前記エンドポイントアドレスのセッ
    トと前記具体化番号とが、前記サーバーコンピュータプ
    ロセスが前記クライアントコンピュータプロセスである
    ことを示す、請求項1記載のオブジェクト。
  9. 【請求項9】 前記分散オブジェクトオペレーティング
    環境は、クライアントコンピュータシステム上で実行さ
    れるクライアントコンピュータプロセス内に存在するク
    ライアントを備え、前記エンドポイントアドレスのセッ
    トと前記具体化番号とが、前記サーバーコンピュータシ
    ステムが前記クライアントコンピュータシステムである
    ことを示す、請求項1記載のオブジェクト。
  10. 【請求項10】 前記具体化番号は、可変長のデータ要
    素である、請求項1記載のオブジェクト。
  11. 【請求項11】 前記具体化番号は、固定長のデータ要
    素である、請求項10記載のオブジェクト。
  12. 【請求項12】 前記具体化番号は、1ないし16バイ
    ト長のデータ要素である、請求項11記載のオブジェク
    ト。
  13. 【請求項13】 前記具体化番号は、前記サーバーコン
    ピュータプロセスの形成時刻を示す番号である、請求項
    1記載のオブジェクト。
  14. 【請求項14】 前記具体化番号は、サーバーコンピュ
    ータプロセスにとって予め定義された意味を有する、予
    め定義された番号である、請求項1記載のオブジェク
    ト。
  15. 【請求項15】 前記オブジェクトキーは、前記アドレ
    シング情報のセットおよび前記具体化番号とともに、前
    記一時的サーバーオブジェクトを一義的に定義する識別
    子である、請求項1記載のオブジェクト。
  16. 【請求項16】 前記オブジェクトキーは、前記サーバ
    ーコンピュータプロセス内において一義的な識別番号で
    ある、請求項15記載のオブジェクト。
  17. 【請求項17】 前記分散オブジェクトオペレーティン
    グ環境が、第1の分散オブジェクトオペレーティング環
    境であって、前記オブジェクトキーは、第2の分散オブ
    ジェクトオペレーティング環境の一時的オブジェクトに
    関する第2のオブジェクトレファレンスとして用いる第
    2のオブジェクトを備える、請求項1記載のオブジェク
    ト。
  18. 【請求項18】 前記オブジェクトキーは、前記第1の
    分散オブジェクトオペレーティング環境内のクライアン
    トが、前記第2の分散オブジェクトオペレーティング環
    境の前記一時的オブジェクトをコールすることを可能に
    する、請求項17記載のオブジェクト。
  19. 【請求項19】 前記サーバーコンピュータシステム上
    の一時的メモリに格納されている、関連した一時的状態
    を有する、請求項1記載のオブジェクトレファレンスに
    対応する、一時的サーバーオブジェクト。
  20. 【請求項20】 前記サーバーコンピュータプロセスが
    終了すると、前記一時的サーバーオブジェクトが存在し
    なくなるように、前記サーバーコンピュータプロセスに
    直接結び付けられている、請求項19記載の一時的サー
    バーオブジェクト。
  21. 【請求項21】 複数のコンピュータシステムと、 前記複数のコンピュータシステムを相互接続するコンピ
    ュータネットワークと、 前記複数のコンピュータシステムのひとつに存在する少
    なくともひとつの請求項1記載の前記オブジェクトと、 を備える分散オブジェクトオペレーティング環境。
  22. 【請求項22】 ロケータ−サービスが存在するコンピ
    ュータシステムに対応するコンピュータシステム名と、 前記ロケータサービスが存在するデーモンコンピュータ
    プロセスに対応するロケータ同定事項と、 前記不変オブジェクトに対応するオブジェクトキーと、 サブオブジェクト識別子と、 を含むデータ構造を備える第2のオブジェクトであっ
    て、第2のサーバーコンピュータシステム上で実行する
    第2のサーバープロセス内に存在する不変オブジェクト
    のために、オブジェクトレファレンスとして用いる第2
    のオブジェクトを更に備える、請求項21記載の分散オ
    ブジェクトオペレーティング環境。
  23. 【請求項23】 前記第2のオブジェクトの前記データ
    構造は、前記オブジェクトの種類が不変であることを示
    す種類フィールドを更に備える、請求項22記載の分散
    オブジェクトオペレーティング環境。
  24. 【請求項24】 前記第2のオブジェクトの前記データ
    構造は、場所ヒントを更に備える、請求項22記載の分
    散オブジェクトオペレーティング環境。
  25. 【請求項25】 前記場所ヒントは、 前記不変サーバーオブジェクトが存在する前記第2のサ
    ーバーコンピュータシステムに対応するエンドポイント
    アドレスのセットと、 前記第2のサーバーコンピュータプロセスに対応する具
    体化番号とを備え、前記エンドポイントアドレスのセッ
    トと、前記具体化番号と、前記オブジェクトキーとが、
    前記不変サーバーオブジェクトを一義的に識別して場所
    を見いだす、請求項23記載の分散オブジェクトオペレ
    ーティング環境。
  26. 【請求項26】 ナルオブジェクトに関するオブジェク
    トレファレンスとして用いる第3のオブジェクト種類
    と、 無効オブジェクトに関するオブジェクトレファレンスと
    して用いるための第4のオブジェクト種類とを更に備え
    る請求項22記載の分散オブジェクトオペレーティング
    環境。
  27. 【請求項27】 複数の分散された一時的オブジェクト
    を想定する分散オブジェクトオペレーティング環境にお
    いて、サーバーコンピュータシステム上に実装されるサ
    ーバーコンピュータプロセス内に存在する不変オブジェ
    クトに関するオブジェクトレファレンスとして用いるオ
    ブジェクトであって、 ロケータ−サービスが存在するコンピュータシステムに
    対応するコンピュータシステム名と、 前記ロケータ−サービスが存在しているデーモンコンピ
    ュータプロセスに対応するロケータ同定事項と、 前記不変オブジェクトに対応するオブジェクトキーと、 サブオブジェクト識別子と、 場所ヒントとを備えるデータ構造を有するオブジェク
    ト。
  28. 【請求項28】 前記場所ヒントは、 前記サーバーコンピュータシステムに対応するエンドポ
    イントアドレスのセットと、 前記サーバーコンピュータプロセスに対応する具体化番
    号とを備え、前記エンドポイントアドレスのセットと、
    前記具体化番号と、前記オブジェクトキーとが、前記不
    変オブジェクトを一義的に識別して場所を見いだす、請
    求項27記載のオブジェクト。
  29. 【請求項29】 ロケータ−サービスが存在している前
    記コンピュータシステムは、前記サーバーコンピュータ
    システムである、請求項28記載のオブジェクト。
  30. 【請求項30】 前記オブジェクトの前記データ構造
    は、前記不変オブジェクトの種類が不変であることを示
    す種類フィールドを更に含む、請求項27記載のオブジ
    ェクト。
  31. 【請求項31】 複数のコンピュータシステムと、 前記複数のコンピュータシステムを相互接続するコンピ
    ュータネットワークと、 前記複数のコンピュータシステムのひとつに存在する少
    なくともひとつの、請求項27記載のオブジェクトとを
    備える分散オブジェクトオペレーティング環境。
  32. 【請求項32】 前記サーバーコンピュータシステム上
    の不変メモリ内に格納されるとともに、対応する不変状
    態を有する、請求項27記載のオブジェクトレファレン
    スに対応する不変サーバーオブジェクト。
  33. 【請求項33】 前記サーバーコンピュータプロセスが
    終了しても、その状態を維持して、作用可能である、請
    求項32記載の不変サーバーオブジェクト。
  34. 【請求項34】 分散オブジェクトオペレーティング環
    境において用いるためのコンピュータシステム上のキャ
    ッシュメモリ内に分散オブジェクトアドレシング情報を
    維持するためのコンピュータに実装される方法であっ
    て、 コンピュータ制御のもとで、分散オブジェクトに対応す
    るオブジェクトレファレンスを受信するステップと、 コンピュータ制御のもとで、前記オブジェクトレファレ
    ンスが、前記分散オブジェクトに対応するアドレシング
    情報を含むか否かを判定し、含む場合に、コンピュータ
    制御のもとで、前記アドレシング情報を前記キャッシュ
    に書き込むステップと、 を備える方法。
  35. 【請求項35】 前記オブジェクトレファレンス受信ス
    テップは、コンピュータ制御のもとで、前記オブジェク
    トレファレンスをアンマーシャルするステップを更に備
    える、請求項34記載の方法。
  36. 【請求項36】 前記オブジェクトレファレンス受信ス
    テップは、目標オブジェクトコールの一部である、請求
    項35記載の方法。
  37. 【請求項37】 前記オブジェクトレファレンス受信ス
    テップは、目標オブジェクトコールへの応答の一部であ
    る、請求項35記載の方法。
  38. 【請求項38】 前記アドレシング情報書き込みステッ
    プは、コンピュータ制御のもとで前記アドレシング情報
    に関する失効日を前記キャッシュに書き込むステップを
    備える、請求項34記載の方法。
  39. 【請求項39】 クライアントコンピュータシステム上
    で実行されるクライアントプロセス内に存在する対応オ
    ブジェクトレファレンスを有し、サーバーコンピュータ
    システム上で実行されるサーバープロセス上に存在す
    る、分散されたサーバーオブジェクトをコールするた
    め、コンピュータに実装される方法であって、 コンピュータ制御のもとで、前記分散されたサーバーオ
    ブジェクトに関するアドレシング情報を獲得するステッ
    プと、 コンピュータ制御のもとで、前記分散されたサーバーオ
    ブジェクトに関する1つのアドレスを選択するステップ
    と、 コンピュータ制御のもとで、前記分散されたサーバーオ
    ブジェクトへリクエストを送るステップとを備えるコン
    ピュータに実装される方法。
  40. 【請求項40】 コンピュータ制御のもとで、前記分散
    されたサーバーオブジェクトから応答を受けるステップ
    を更に備える、請求項39記載の方法。
  41. 【請求項41】 コンピュータ制御のもとで、前記アド
    レシング情報獲得ステップが、前記分散されたサーバー
    オブジェクトの、一時的および不変の種類を判定するサ
    ブステップを備える、請求項39記載の方法。
  42. 【請求項42】 前記種類がナルと無効とを更に含むと
    ともに、コンピュータ制御のもとで、前記分散されたサ
    ーバーオブジェクトの種類がナルまたは無効である場合
    に、前記アドレシング情報獲得ステップがエラーメッセ
    ージを返すサブステップを更に備える、請求項41記載
    の方法。
  43. 【請求項43】 前記アドレシング情報獲得ステップ
    が、前記分散されたサーバーオブジェクトの種類が一時
    的である場合に、コンピュータ制御のもとで、前記アド
    レス情報を前記オブジェクトレファレンスから直接返す
    サブステップを更に備える、請求項41記載の方法。
  44. 【請求項44】 前記アドレシング情報獲得ステップ
    は、 前記アドレス情報がクライアントコンピュータシステム
    上にあるキャッシュメモリに格納されているか否かをコ
    ンピュータ制御のもとで判定するサブステップと、 前記分散されたサーバーオブジェクトの種類が不変であ
    る場合に、コンピュータ制御のもとで前記アドレス情報
    を前記キャッシュメモリから返すサブステップとを更に
    備える請求項41記載の方法。
  45. 【請求項45】 前記アドレシング情報が当初前記キャ
    ッシュメモリに格納されていないと判定された結果に応
    じて、前記アドレシング情報獲得ステップは、 コンピュータ制御のもとで、前記アドレシング情報を前
    記分散オブジェクトオペレーティング環境内から獲得す
    る中間サブステップと、 コンピュータ制御のもとで、前記アドレシング情報を前
    記キャッシュメモリに格納する中間サブステップとを更
    に備える請求項44記載の方法。
  46. 【請求項46】 前記オブジェクトレファレンスが、ロ
    ケータ同定事項、ホスト名、およびオブジェクトキーを
    含み、前記アドレシング情報獲得ステップは、 コンピュータ制御のもとで、サーバーコンピュータシス
    テム上を走るデーモンプロセスとコンピュータ通信を形
    成するサブステップと、 コンピュータ制御のもとで、前記デーモンプロセスへル
    ックアップオペレーションを発行し、前記オブジェクト
    キーを前記デーモンへ転送するサブステップとを備える
    請求項45記載の方法。
  47. 【請求項47】 デーモンプロセスとの前記コンピュー
    タ通信形成ステップは、前記デーモンに関する一時的オ
    ブジェクトレファレンスが、前記クライアントコンピュ
    ータシステム上に見いだされるキャッシュメモリに格納
    されているか否かをコンピュータ制御のもとで判定する
    ステップを含み、格納されている場合、前記通信形成ス
    テップが、コンピュータ制御のもとで、前記一時的オブ
    ジェクトレファレンスを前記キャッシュメモリから返す
    ステップを更に備える、請求項46記載の方法。
  48. 【請求項48】 前記一時的オブジェクトレファレンス
    がキャッシュメモリに格納されていないと判定された結
    果に応じて、デーモンプロセスとの前記通信形成ステッ
    プは、 コンピュータ制御のもとで、前記ロケータ同定事項を、
    所定の具体化番号とともに転送するステップを含む、前
    記ホスト名を用いてサーバーコンピュータシステム上の
    リモート手順コールバインダーをコールする中間ステッ
    プを含み、 コンピュータ制御のもとで、前記リモート手順コールバ
    インダからのアドレスを受信する中間ステップと、 コンピュータ制御のもとで、前記デーモンに関する一時
    的オブジェクトレファレンスを、前記アドレスと前記所
    定の具体化番号とから構成する中間ステップと、 コンピュータ制御のもとで、前記一時的オブジェクトレ
    ファレンスを前記キャッシュメモリに格納するステップ
    とを更に備える請求項47記載の方法。
  49. 【請求項49】 前記アドレス選択ステップは、コンピ
    ュータ制御のもとで、前記サーバープロセスと前記クラ
    イアントプロセスが同一のプロセスであるか否かを判定
    するステップを備える、請求項39記載の方法。
  50. 【請求項50】 前記サーバープロセスと前記クライア
    ントプロセスが同一のプロセスである場合、コンピュー
    タ制御のもとで、ローカルアドレスとローカル転送を選
    択するステップを更に備える、請求項49記載の方法。
  51. 【請求項51】 前記サーバープロセスと前記クライア
    ントプロセスが同一のプロセスでないと判定された場合
    に応じて、 コンピュータ制御のもとで、前記サーバーコンピュータ
    システムが前記クライアントコンピュータシステムと同
    じであるか否かを判定するステップと、 前記サーバーコンピュータシステムが前記クライアント
    コンピュータシステムと同じである場合、コンピュータ
    制御のもとで、共有メモリアドレスと共有メモリ転送を
    選択するステップと、 前記サーバーコンピュータシステムが前記クライアント
    コンピュータシステムと同じでない場合、コンピュータ
    制御のもとで、リモートアドレスとリモート転送を選択
    するステップとを更に備える請求項49記載の方法。
  52. 【請求項52】 分散オブジェクトオペレーティング環
    境において用いる各対応コンピュータシステム上に存在
    する複数の各キャッシュ内の分散オブジェクトに関する
    アドレシング情報を維持するコンピュータに実装される
    方法であって、 コンピュータ制御のもとで、前記複数のキャッシュ内の
    利用可能な分散オブジェクトに関するすべてのアドレシ
    ング情報を、少なくとも1つのコンピュータシステムへ
    複数のオブジェクトレファレンスの形式で分散するステ
    ップと、 前記少なくとも1つのコンピュータシステムが、分散さ
    れた複数のオブジェクトレファレンスに関して請求項3
    4のコンピュータに実装された方法を実行するステップ
    とを備える方法。
JP8092013A 1995-03-22 1996-03-21 オブジェクトを管理するための方法、装置、および、データ構造 Pending JPH0926890A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/408954 1995-03-22
US08/408,954 US6009266A (en) 1995-03-22 1995-03-22 Methods, apparatus and data structures for managing objects

Publications (1)

Publication Number Publication Date
JPH0926890A true JPH0926890A (ja) 1997-01-28

Family

ID=23618443

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8092013A Pending JPH0926890A (ja) 1995-03-22 1996-03-21 オブジェクトを管理するための方法、装置、および、データ構造

Country Status (5)

Country Link
US (1) US6009266A (ja)
EP (1) EP0737916B1 (ja)
JP (1) JPH0926890A (ja)
CA (1) CA2172220A1 (ja)
DE (1) DE69630480T2 (ja)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6625641B1 (en) * 1996-06-03 2003-09-23 Sun Microsystems, Inc. Method and apparatus for providing client support without installation of server software
US5881230A (en) * 1996-06-24 1999-03-09 Microsoft Corporation Method and system for remote automation of object oriented applications
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
US6687761B1 (en) * 1997-02-20 2004-02-03 Invensys Systems, Inc. Process control methods and apparatus with distributed object management
US7203769B2 (en) * 1997-03-14 2007-04-10 International Business Machines Corporation Bootstrapping technique for distributed object client systems
US6158044A (en) * 1997-05-21 2000-12-05 Epropose, Inc. Proposal based architecture system
US6195709B1 (en) * 1997-07-24 2001-02-27 International Business Machines Corporation Method of providing persistency for transient objects in object oriented technology
US6330709B1 (en) * 1998-03-30 2001-12-11 International Business Machines Corporation Virtual machine implementation for shared persistent objects
US6301582B1 (en) * 1998-03-30 2001-10-09 International Business Machines Corporation System and method for storage of shared persistent objects
EP0955577B1 (en) 1998-05-04 2011-11-30 International Business Machines Corporation Method and device for creating an object in a non-persistent memory and/or keeping accessibility to said object
US6792606B2 (en) * 1998-07-17 2004-09-14 International Business Machines Corporation Method and apparatus for object persistence
US6405217B1 (en) * 1998-09-21 2002-06-11 Microsoft Corporation State-based implementation of transactions on a file system
CN1335956A (zh) * 1998-10-16 2002-02-13 西尔弗斯特里姆软件公司 分布式系统的连接集线器
US6907609B1 (en) * 1999-02-01 2005-06-14 Iona Technologies Plc. Object request dispatch using matching of a segmented object key
US6434685B1 (en) 1999-02-11 2002-08-13 Oracle Corp. Paged memory management system within a run-time environment
US6499095B1 (en) * 1999-02-11 2002-12-24 Oracle Corp. Machine-independent memory management system within a run-time environment
US6877161B1 (en) * 1999-02-11 2005-04-05 Oracle International Corp. Address calculation of invariant references within a run-time environment
DE19910527A1 (de) * 1999-03-09 2000-09-14 Siemens Ag System und Verfahren zur Objektidentifizierung in verteilten hierarchischen Systemen, insbesondere in Automatisierungssystemen
US6829761B1 (en) * 1999-10-21 2004-12-07 Oracle International Corporation Method and apparatus for managing shared memory in a run-time environment
US6457111B1 (en) * 1999-12-14 2002-09-24 International Business Machines Corporation Method and system for allocation of a persistence indicator for an object in an object-oriented environment
US6831652B1 (en) * 2000-03-24 2004-12-14 Ati International, Srl Method and system for storing graphics data
US7031976B1 (en) * 2000-05-26 2006-04-18 Sprint Communications Company L.P. Computer framework and method for isolating a business component from specific implementations of a datastore
US7099926B1 (en) 2000-07-06 2006-08-29 International Business Machines Corporation Object caching and update queuing technique to improve performance and resource utilization
US7543304B2 (en) * 2000-12-14 2009-06-02 Borland Software Corporation Method for efficient location of corba objects based on an unmarshaled object key in a request
US7003582B2 (en) * 2001-06-20 2006-02-21 International Business Machines Corporation Robust NP-based data forwarding techniques that tolerate failure of control-based applications
AU2002317099A1 (en) * 2001-07-03 2003-01-21 Research In Motion Limited System and method of object-oriented persistence
US20030023949A1 (en) * 2001-07-06 2003-01-30 International Business Machines Corporation Storage administration
US8041739B2 (en) * 2001-08-31 2011-10-18 Jinan Glasgow Automated system and method for patent drafting and technology assessment
JP2003099341A (ja) * 2001-09-20 2003-04-04 Canon Inc ネットワークデバイス管理装置、管理システム及び管理方法、並びにネットワークデバイス
US8244854B1 (en) 2004-12-08 2012-08-14 Cadence Design Systems, Inc. Method and system for gathering and propagating statistical information in a distributed computing environment
US8806490B1 (en) 2004-12-08 2014-08-12 Cadence Design Systems, Inc. Method and apparatus for managing workflow failures by retrying child and parent elements
US7979870B1 (en) * 2004-12-08 2011-07-12 Cadence Design Systems, Inc. Method and system for locating objects in a distributed computing environment
US8108878B1 (en) 2004-12-08 2012-01-31 Cadence Design Systems, Inc. Method and apparatus for detecting indeterminate dependencies in a distributed computing environment
US7890954B2 (en) * 2004-12-22 2011-02-15 Argela Technologies Method and system for communicating between application software
US10324735B2 (en) * 2006-05-15 2019-06-18 Avaya Inc. Method invocation for persistent objects with dynamic multikeys
US10185579B2 (en) * 2006-05-15 2019-01-22 Avaya Inc. Dynamic multikeys for persistent objects
US10289728B2 (en) * 2006-05-15 2019-05-14 Avaya Inc. Garbage collection of persistent objects with dynamic multikeys
US8862979B2 (en) * 2008-01-15 2014-10-14 Microsoft Corporation Multi-client collaboration to access and update structured data elements
US8639724B1 (en) 2009-07-31 2014-01-28 Amazon Technologies, Inc. Management of cached object mapping information corresponding to a distributed storage system
US8521771B1 (en) 2009-07-31 2013-08-27 Amazon Technologies, Inc. Management of class-associated object mapping information corresponding to a distributed storage system
US8285925B1 (en) 2009-07-31 2012-10-09 Amazon Technologies, Inc. Management of object mapping information corresponding to a distributed storage system
US8621182B1 (en) 2009-07-31 2013-12-31 Amazon Technologies, Inc. Management of object mapping information corresponding to a distributed storage system
BR112019006754A2 (pt) * 2016-10-03 2019-07-02 Stratus Digital Systems servidor de transação transiente antecedentes
US20190114630A1 (en) 2017-09-29 2019-04-18 Stratus Digital Systems Transient Transaction Server DNS Strategy
US11175969B2 (en) * 2018-01-26 2021-11-16 Nicira, Inc. Extensible systematic representation of objects and operations applied to them

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5201049A (en) * 1988-09-29 1993-04-06 International Business Machines Corporation System for executing applications program concurrently/serially on different virtual machines
US5117351A (en) * 1988-10-21 1992-05-26 Digital Equipment Corporation Object identifier generator for distributed computer system
US5325524A (en) * 1989-04-06 1994-06-28 Digital Equipment Corporation Locating mobile objects in a distributed computer system
US5247676A (en) * 1989-06-29 1993-09-21 Digital Equipment Corporation RPC based computer system using transparent callback and associated method
US5504895A (en) * 1992-03-24 1996-04-02 Canon Kabushiki Kaisha Method of managing data structure containing both persistent data and transient data
US5287507A (en) * 1992-03-27 1994-02-15 Sun Microsystems, Inc. Method and apparatus for portable object handles that use local caches
DE69309485T2 (de) * 1992-11-13 1997-07-10 Microsoft Corp Verfahren zur verteilung von schnittstellenzeigern fur fernprozeduranrufe

Also Published As

Publication number Publication date
EP0737916B1 (en) 2003-10-29
US6009266A (en) 1999-12-28
CA2172220A1 (en) 1996-09-23
EP0737916A1 (en) 1996-10-16
DE69630480D1 (de) 2003-12-04
DE69630480T2 (de) 2004-08-19

Similar Documents

Publication Publication Date Title
JPH0926890A (ja) オブジェクトを管理するための方法、装置、および、データ構造
EP0737922B1 (en) Method and apparatus for managing computer processes
US6272557B1 (en) Framework for marshaling and unmarshaling argument object references
US5793965A (en) Method and apparatus for determining the type of an object in a distributed object system
US6189046B1 (en) Mechanism and method for merging cached location information in a distributed object environment
US6282581B1 (en) Mechanism for resource allocation and for dispatching incoming calls in a distributed object environment
US5969967A (en) Methods and apparatus for conspiracy between objects
US6938085B1 (en) Mechanism for enabling session information to be shared across multiple processes
US6976261B2 (en) Method and apparatus for fast, local CORBA object references
EP0660234B1 (en) Method and system for executing code remotely
US5949998A (en) Filtering an object interface definition to determine services needed and provided
US6687831B1 (en) Method and apparatus for multiple security service enablement in a data processing system
EP0604010B1 (en) Method and apparatus for subcontracts in distributed processing systems
US5864866A (en) Apparatus and method for providing externalization in an object-oriented environment
US20050204045A1 (en) Mechanism for enabling session information to be shared across multiple processes
EP0733970B1 (en) Methods and apparatus for managing collections of objects
EP0817037A2 (en) Mechanism for dynamically associating a service dependent representation with objects at run time
JPH10133876A (ja) 低オーバヘッドオブジェクトアダプタ
US6769125B2 (en) Methods and apparatus for managing computer processes
US6189048B1 (en) Mechanism for dispatching requests in a distributed object system
US6957427B1 (en) Remote object activation in a distributed system
US20020107997A1 (en) Techniques for transmission of message fragments between object request brokers