JPH1063506A - タイプコードで解釈されコンパイル(編集)されたマーシャリングを可能にするトランスポートから独立した呼出しとサーバントインターフェイス - Google Patents

タイプコードで解釈されコンパイル(編集)されたマーシャリングを可能にするトランスポートから独立した呼出しとサーバントインターフェイス

Info

Publication number
JPH1063506A
JPH1063506A JP9170765A JP17076597A JPH1063506A JP H1063506 A JPH1063506 A JP H1063506A JP 9170765 A JP9170765 A JP 9170765A JP 17076597 A JP17076597 A JP 17076597A JP H1063506 A JPH1063506 A JP H1063506A
Authority
JP
Japan
Prior art keywords
descriptor
call
argument
server
exception
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
JP9170765A
Other languages
English (en)
Inventor
Swee Boon Lim
ブーン リム スウィー
Peter B Kessler
ビー. ケスラー ピーター
David M Brownell
エム. ブローネル デイヴィッド
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 JPH1063506A publication Critical patent/JPH1063506A/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/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • G06F9/548Object oriented; Remote method invocation [RMI]

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)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【課題】分散クライアント・サーバーに基づくオブジェ
クト指向オペレーティングシステム内でサーバント呼び
出しを促進するため、データ構造メソッド、および装置
を開示する。 【解決手段】開発の一局面において、タイプコードイン
ジケータと、マーシャリング機能識別子と、アンマーシ
ャリング機能識別子とを含むデスクリプタデータ構造を
用いて、異なるオブジェクト間で、アプリケーションコ
ードが共有できるようになっていて、よって、オペレー
ティングシステム内の共通化されたコードの量を増やす
ことにより、サーバント呼び出しが促進される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は分散コンピューティ
ング・システム分野、クライアント・サーバー・コンピ
ューティング分野、およびオブジェクト指向プログラミ
ング分野に関する。更に具体的には本発明はサーバント
呼出しを容易にするデータ構造、メソッド、および装置
に関する。
【0002】
【従来の技術】別々のコンピュータ上にあるオブジェク
トがネットワークによって接続されているコンピューテ
ィング環境は普通、クライアント・サーバー・コンピュ
ーティング環境と称する。いくつかのコンピュータは他
のコンピュータに対するサービスまたは機能性のプロバ
イダー(提供者)として作用する。その他のコンピュー
タはサービスまたは機能性のコンシューマー(消費者)
として作用する。サービスまたは機能性のプロバイダー
は「サーバー」として知られ、また、サービスまたは機
能性のコンシューマーは「クライアント」と呼ばれてい
る。このクライアント・サーバー・モデルはまた、同一
コンピュータ上で走っている別々のプログラムが何らか
の保護されたメカニズムを介して相互に通信を行い、両
者がそれぞれサービスまたは機能性のプロバイダーとコ
ンシューマーとして作用する場合として一般化すること
ができる。
【0003】
【発明が解決しようとする課題】そのような分散システ
ムを提供するための試みが、サーバーオブジェクトのリ
クエストを行うクライアント・オブジェクトへのインタ
ーフェイスをサーバー・オブジェクトが提供する、クラ
イアント・サーバー・モデルに基づくオブジェクト指向
メソッド論を用いてなされてきた。そのような分散シス
テムにおいては普通、サーバーはデータおよび関連する
メソッドからなるオブジェクトである。クライアントオ
ブジェクトはサーバーオブジェクトへのコールを行って
サーバントオブジェクトの機能性へのアクセスを行う
が、このコールは、分散システムによって仲介される。
サーバーオブジェクトは、一つのコールを受け取ると適
当なメソッドを実行し、結果をクライアントオブジェク
トへ送り返す。クライアントオブジェクトとサーバーオ
ブジェクトは、オブジェクト・リクエスト・ブローカー
(ORB)を介して通信を行うが、このORBは種々の
分散オブジェクトを探し当て、オブジェクト相互間の通
話を行うのに用いられる。分散オブジェクトはネットワ
ーク内の任意の場所に、例えばクライアントのアドレス
・スペース内、クライアントマシーン上の複数のアドレ
ス・スペース内、およびネットワーク全体の複数のマシ
ーン内に、存在することができる。
【0004】ソフトウェア業界は、分散オブジェクト技
術の必要性に応じてオブジェクト・マネージメント・グ
ループ(OMG)を作成した。OMGの目標は、オブジ
ェクト・リクエスト・ブローカー(ORB)、オブジェ
クト・サービス、コモン・ファシリティ、およびアプリ
ケーション・オブジェクトの四つの主要コンポーネント
を持つオブジェクト・マネージメント・アーキテクチャ
(OMA)を定義することである。オブジェクト・リク
エスト・ブローカーは、基本的なオブジェクト・コミュ
ニケーションとマネージメント・サービスを提供するこ
とによって分散オブジェクトシステムの基盤を形成す
る。オブジェクト・リクエスト・ブローカーの標準は、
OMG、改訂2.0、1995年7月付け、コモン・オ
ブジェクト・リクエスト・ブローカー・アーキテクチャ
(CORBA)仕様に含まれている。
【0005】代表的なクライアント・サーバー・システ
ムにおいては、性能オーバーヘッドが高価になる可能性
がある。すなわち、システム内のプロセスのスピードと
品質が、分散オブジェクト間の情報伝達に係わるアプリ
ケーション・コードとメソッドの非効率的使用によっ
て、妥協させられる可能性がある。例えば、クライアン
ト・サーバー・システムが情報を要求するたびにバッフ
ァーまたはコードの部分から情報を繰り返し抽出するこ
とに係わる性能オーバーヘッドは、高い。更に、当業者
には理解できるように、クライアント・サーバー・シス
テムは普通、編集された呼出し(compiled invocation)
と編集されない呼出し(non-compiled invocation)に関
して別々のインターフェイスを用いる。別々のインター
フェイスを用いることは非効率的である。従って、分散
オブジェクト間の情報交換に係わる性能オーバーヘッド
を低減するメソッド、データ構造、および/または装置
の提供が望まれる。更に、編集された呼出しと編集され
ない呼出しの間での共通ベースコードの共有を可能にす
るメカニズムを提供すれば、クライアント・サーバー・
システムの性能が改善されるであろう。
【0006】
【課題を解決するための手段】前記目的およびその他の
目的を達成するため、および本発明の目的に従って、分
散クライアント・サーバーに基づくオブジェクト指向オ
ペレーティング・システムにおけるサーバント呼出しを
容易にするためのデータ構造、メソッドおよび装置を開
示する。本発明の一局面において、タイプコードインジ
ケータ、マーシャル機能識別子、およびアンマーシャル
機能識別子を含むデスクリプタ・データ構造を用いて、
アプリケーションコードのモジュールを別々のオブジェ
クト間で共有できるようにし、それによってオペレーシ
ティングシステム内における共通化されたコードの量を
増やし、サーバント呼出しを容易にする。
【0007】本発明の種々の実施例において、デスクリ
プタ・データ構造は、下記フィールドの一つまたはそれ
以上を追加的に含むパラメータ・デスクリプタ・データ
構造である:デスクリプタ・データ構造に関連するエン
ティティの処理方向を識別する方向インジケータ:当該
デスクリプタ・データ構造に関連する当該エンティティ
の名称を与えるための名称インジケータ;当該デスクリ
プタ・データ構造に関連する当該エンティティを受け入
れるプロセスによって割当てられねばならないメモリー
の量を示すサイズインジケータ。本発明の他の実施例に
おいて、デスクリプタ・データ構造は、例外を記述する
例外デスクリプタ・データ構造という形をとる。
【0008】本発明のもう一つ局面において、例外デス
クリプタ・データ構造は、タイプコード・インジケータ
と、投入(throw)機能がコールされた場合、例外の性質
を指定するように編成された投入機能を識別するように
編成された投入機能インジケータとを含む。実施例の中
には、例外デスクリプタ・データ構造内に、例外デスク
リプタ・データ構造に関連する例外を、一義的に識別す
るよう編成されたレポジトリ・デスクリプタも含む。
【0009】本発明およびその利点は、添付図面に関連
した説明によって更によく理解できる。
【0010】
【発明の実施の形態】本発明は分散オブジェクトシステ
ムを対象とし、添付の図面に示したいくつかの好ましい
実施例を参照して説明する。本発明は、CORBAによ
る、或いは他の任意の適当な仕様による適当な分散オブ
ジェクトシステムを含む任意の分散オブジェクトシステ
ムに関連して実施することができる。しかし説明の便宜
上、本発明の実施例は、引用によって本出願に組み入れ
る1995年7月付け改訂2.0、オブジェクト・マネ
ージメント・グループ(ORG)からのCORBA仕様
のもとで実行されるオブジェクト・リクエスト・ブロー
カー(ORB)に主として関連して説明する。図1は、
本発明の一実施例の実行に適した代表的な分散オブジェ
クトシステムの全体的構造(アーキテクチャ:architectu
re)をダイヤグラム的に示す。図2は、3レベル発送メ
カニズムを含むようなアーキテクチャ内においてクライ
アントからサーバントオブジェクトへのリクエストが追
従するいくつかの可能なフローパスをダイヤグラム的に
示す。図3は、クライアントがサーバントオブジェクト
を参照するために用いるオブジェクト・レファレンス・
データ構造を示す。
【0011】分散オブジェクトシステム10は普通、図
1に記号的に示したように、オブジェクトリクエストブ
ローカー(ORB)11を含む。ORB(11)は図2
を参照して以下に説明するように、クライアントからサ
ーバント(ターゲットオブジェクト)へコールを発送
し、クライアントへ応答(レスポンス)を返すのに必要
なすべてのロケーション・メカニズムとトランスポート
・メカニズムと設備を提供する。クライアントとサーバ
ントは、同一プロセス内、同一マシーン内の別々のプロ
セス内、あるいは全く別々のマシーン上に存在すること
ができる。ここでの検討に関しては、クライアント20
は、分散オブジェクト上において一つのオペレーション
を呼び出す任意のコードであればよく、従って、分散オ
ブジェクトまたは一つのプロセスの形を取っても取らな
くてもよい。分散オブジェクトは様々な表現(represent
ation)を持ち得る。例えば、一つのオブジェクト14
は、アプリケーション開発者によって提供されるC++
オブジェクトでもよい。あるいは、一つのオブジェクト
に関する実行は、視覚的アプリケーションビルダー15
内で作成してもよい。この視覚的アプリケーションビル
ダーは、開発者(作成者)があるオブジェクトに関して
新しい実行を作成するために、一つのカタログから既存
のオブジェクトタイプを視覚的に選んで、一つのオブジ
ェクトが提供するサービスをもう一つのオブジェクトが
必要とするサービス(属性(attributes)、引数、結果、
等)へグラフィック的に接続することを可能にする。
【0012】オブジェクト開発設備16は、分散オブジ
ェクトの作成とインストール(配置)を簡単にする。こ
れは、デベロッパーオブジェクトを「ラップする(包む:
rap)」すなわち分散オブジェクトコード内においてカプ
セル化する。従って、オブジェクト開発設備16は、開
発オブジェクトをORBオブジェクト実行14へ変換す
るのに用いることができる。この例においては、ORB
オブジェクト実行14は図のその位置に示したように、
サーバーとして表されている。デベロッパー(開発者、
作成者)は、一つのインターフェイス定義言語を用い
て、一つのORBオブジェクトに関する一つのインター
フェイスを定義し、オブジェクトの挙動を実行するデベ
ロッパー・オブジェクト実行を提供し、次にオブジェク
ト開発設備16を用いてORBオブジェクト実行14を
作成する。ランタイム(run time)においては、このOR
Bオブジェクト実行14を利用するORBオブジェクト
の事例(サーバントオブジェクト)を作成する。オブジ
ェクト開発設備は、ある時点においてクライアントの役
割をするオブジェクトの作成にも用いられることを理解
すべきである。
【0013】クライアント20は、スタブ21、サブコ
ントラクト・レヤー36、場合によってはフィルター4
0、およびトランスポート・レヤー38を介して通信を
行う。スタブ21は、サロゲート22、メソッドテーブ
ル24およびスタブ機能25を含む。クライアント20
は当初、クライアントにサーバントオブジェクトと見な
されるサロゲート22と通信を行う。あるいは、クライ
アント20は、サロゲート22、メソッドテーブル24
およびスタブ機能25を介してでなく、ダイナミック呼
び出しインターフェイス(DII)26を介して直接サ
ーバントオブジェクトと通信することもできる。クライ
アントがダイナミックリクエストを作成できるようにす
るため、ダイナミック呼び出しインターフェイス26が
用いられる。クライアントが上記レヤーを用いてコール
を行うことができる一つの手順を、図2を参照して以下
に更に詳しく説明する。
【0014】サブコントラクトレヤー36は、上記に引
用した1995年11月07日出願の米国特許出願番号
08/554,794 に詳細に説明されているような特定のサブ
コントラクトによって指名される種々のサービス(また
は特徴またはオブジェクトメカニズム)を実行するため
にサブコントラクトを用いるため、一つのオブジェクト
が必要とする機能性を提供する。サブコントラクトは、
個々のオブジェクトが利用することができる分散オブジ
ェクトシステムが提供するサービスの品質を識別する。
例えば、サブコントラクトは、特定のオブジェクトのた
めに用いられるべき保安(security)の特徴を識別する。
フィルター40は、もし使用中であれば、圧縮(compres
sion)、解読(encryption)、追跡(tracing)、またはデバ
ッギング(debuging)など、オブジェクトとの通信のやり
とりに適用すべき様々なタスクを実行することができ
る。
【0015】トランスポートレヤー38は、情報をマー
シャルし、アンマーシャルし、および普通はクライアン
トと同じプロセスを共有しないサーバントとの間で情報
を物理的にやりとりするように作用する。
【0016】標準実行スイート28(またはオブジェク
トアダプター)は、同一のやり方で、例えばオブジェク
ト・キー・マネージメントのように、ORBオブジェク
ト14と対話するサブコントラクトの一セットを表す。
サブコントラクトは複数実行スイート(multiple implem
entation suites)に属することに注目すべきである。ま
た、実行スイートは種々のサブコントラクトを利用する
ことができる。スタティックスケルトン32またはダイ
ナミックスケルトン30のいずれかの形をとることので
きる一つのスケルトンを用いて、(図1bを参照して以
下更に詳しく説明するように)リクエストをサーバント
オブジェクト78が要求するフォーマットに変換(trans
form)することができる。このように、スケルトン30
と32は適当なサーバントオブジェクト78をコールす
る。スタティックスケルトン32は、特定のインターフ
ェイスに関するオブジェクト実行14のコールに用いら
れ、一方ダイナミックスケルトン30は特定のインター
フェイスに関するオブジェクトが利用できないとき一般
的に用いられる。
【0017】ORBデーモン46は、オブジェクトサー
バーがクライアントによって呼び出されたとき確実にア
クティブになるようにする役割をする。オブジェクトサ
ーバーをスタートさせる技法は、米国特許出願番号 08/
408,645 に開示されている。セキュア・プロトコル(Sec
ure Protocol)42は、インターネット・インターOR
Bプロトコルを確保し、情報をトランスポートレヤー3
8を介して安全なメソッドで転送する助けをするセキュ
ア・インターオペラビリティ・プロトコルである。これ
は、完全性保護(integrity protection)、機密性(confi
dentiality)、等を意味する。インターネット・インタ
ーORBプロトコルは、普通、別々のマシーン上のプロ
セス間で通信を行うプロトコルである。しかし、インタ
ーネット・インターORBプロトコルが同一マシーン上
のプロセス間で通信を行う場合もある。セキュリティ・
サーバー54は、別々のコンピュータ上のプロセス間で
用いられるサービスを確保するセキュリティ管理サーバ
ーである。
【0018】タイプコード/エニー・モジュール44
は、「タイプコード」オブジェクトと「エニー」オブジ
ェクトを実行する。タイプコードはインターフェイス定
義言語(IDL:Interface Definition Language)デー
タタイプを記述し、クライアントとサーバーの間のタイ
プ記述の転送を可能にする。IDLデータタイプの一事
例は、一つの「エニー」オブジェクトによってカプセル
化することができる。一つのエニーオブジェクトはカプ
セル化したデータのタイプコードを参照し、データの一
般的エンコーディング(解読)である。
【0019】実行レポジトリ50は、オブジェクトサー
バーに関する情報を保存する。具体的に、実行レポジト
リ50はサーバープロセスのスタート(始動)に必要な
情報を保存する。例えば、実行レポジトリ50はサーバ
ープログラムの場所、プログラムへの任意の引数、およ
びプログラムへ引き渡すべき任意の環境変数等のような
情報を保存する。
【0020】単純持続(simple persistence)は、インタ
ーフェイス定義言語(IDL:Interface Definition La
nguage)によって定義されるタイプと、IDLコンパイ
ラ経由でそのIDLタイプを実行した出力を、追加コー
ドの一部とともに用いて、IDLによって定義されたタ
イプをディスクに対して読み書きできるようにする。ネ
ーミングサービス52は、ORBオブジェクトの指名に
用いられる。クライアントは、名前によって必要なオブ
ジェクトを見いだすためネーミングサービスネームサー
バー52を用いることができる。ネームサーバー52は
オブジェクトレファレンスを返し、次にこれを用いてそ
のオブジェクトへリクエストを送ることができる。イン
ターフェイスレポジトリ48(IFR)は、分散オブジ
ェクトシステム内のすべてのオブジェクトに関するすべ
てのインターフェイスについて知っている。
【0021】図2にダイアグラム的に示すように、クラ
イアントがメソッドテーブル(mテーブル)ディスパッ
チを用いて行うリクエストは、サーバントに至るまでに
前記アーキテクチャの様々なレヤーを通過する。リクエ
ストはクライアントによって開始され、任意の形をとる
ことができる。リクエストの形は、クライアントの作成
に用いるプログラミング言語の性質に大きく依存する。
例えば、クライアントがC++言語で書かれた場合、リ
クエストはC++メソッドコール62の形をとることが
できる。このコールは、サロゲートの形をとる指定オブ
ジェクトレファレンスとされる。サロゲートは、オブジ
ェクトのインターフェイスに適合するメソッドを含む。
【0022】当業者には理解できるように、一つの分散
オブジェクトシステム内の別々の場所で用いられるオブ
ジェクトレファレンスは、外観が著しく変化しているこ
とがある。上記実施例においては、クライアント側のオ
ブジェクトレファレンスは二重ポインターである(本明
細書では「ファット(太った)・ポインター」と呼ぶ)。
ファットポインターは二つの別々の(distinct)ポインタ
ーを含む。第1のポインター、すなわちロケーション・
インジケータは、参照されるオブジェクトに関するクラ
イアント・レプレゼンテーション(「クライアント・レ
プ」)を指し示す。第2のポインター、すなわちロケー
ション・インジケータは、参照されるオブジェクトに関
するメソッドテーブルディスパッチ24のメソッドテー
ブルを指し示す。「ポインター」という用語は、本明細
書において用いる場合、コンピュータまたはネットワー
ク・メモリー内の場所のみならず広くロケーション・イ
ンジケータを識別するのに用いられることを理解すべき
である。クライアント・レプレゼンテーションは、呼び
出し(invocation)と、CORBAによって定義される
「疑似」オブジェクトレファレンスオペレーションをサ
ポートするメソッドを持つオブジェクトである。これら
のオペレーションには、「複写(duplicate)」メソッ
ド、「リリース」メソッド、「狭い」メソッド、「ハッ
シュ(細断)」メソッド、および「同等である」メソッ
ドを含むが、これらに限らない。
【0023】クライアントがコールを開始すると、コー
ルはメソッドテーブルディスパッチメカニズム24を用
いて処理される。そのような技法は米国特許出願番号 0
8/307,929 に開示されている。メソッドテーブル・ディ
スパッチ・メカニズムは、スタブ機能25へのロケーシ
ョンインジケータのリストを含むメソッドテーブルを用
い、その内の一つは呼び出されるべきメソッドに関連す
る。スタブ機能25は一つの機能または手順コールをク
ライアント手順の「ネイティブ」言語によって受け、次
にサブコントラクトレヤー36またはネイティブコール
を用いて対応するサーバントオブジェクトを最終的にコ
ールする。ネイティブ言語は、例えばC++のような任
意の適当な言語でよい。
【0024】メソッドコールディスパッチ24は、メソ
ッドコールを処理するため適当な一つのスタブ機能25
を決定し、次にメソッドコールと適当なスタブ機能25
のペアを作る。メソッドコールを行っているクライアン
トがサーバントオブジェクトと同じプロセス内にある場
合、ローカルスタブ機能がコールされる。ローカルスタ
ブ機能はメソッドコールを直接サーバントオブジェクト
78へ送る。あるいは、サーバントオブジェクトが別の
プロセス内に、すなわちリモートプロセス内にある場
合、リモートスタブ機能がコールされる。リモートスタ
ブ機能はクライアントレプレゼンテーションを呼び出
し、この呼び出しがサーバントオブジェクト78へ送ら
れる。
【0025】サブコントラクトレヤー36によって実行
されるサブコントラクト(複数)は、分散オブジェクト
システムにおいて重要な、オブジェクト呼び出しと引数
パッシングの基本的メカニズムのコントロールを提供す
るロジックモジュールである。サブコントラクトレヤー
36によって実行される一つのサブコントラクトは、一
つのオブジェクトが用いるべきサービスの品質を決定す
る。一つのサブコントラクトは、普通はオブジェクトレ
ファレンスに埋め込まれている、サブコントラクト識別
子によって一義的に(uniquely)識別される。一つのサー
ビス品質は複数のサービス特性の一セットである。選択
可能な複数のサービス特性の中には、サービスアクティ
ベーション、保安(security)、取扱い(transactions)、
フィルター可能性(filterability)、およびクリーン・
シャットダウンに関する品質がある。サブコントラクト
は、特定のサービス品質が利用できるように構成され
る。予め定められたサービス品質によれば、個々のサー
ビス特性の処理に関わるオーバーヘッドが低減される。
現実的には、「合理的な」すなわち普通に用いられるサ
ービス特性の組合せのみがサポートされる。しかし、あ
る与えられた分散オブジェクトシステムの特定の要件を
充たすためにサブコントラクトを作成してもよい。
【0026】サブコントラクトレヤー36における適当
なサブコントラクトの識別は、当該サブコントラクトに
特有の必要機能の識別と見なされる。例えば、各サブコ
ントラクトに関してマーシャル機能またはアンマーシャ
ル機能が定義される。サブコントラクトマーシャル機能
は、それが別のアドレススペースまたはドメインへ伝達
され得るように、オブジェクトレファレンスをマーシャ
ルするため、スタブによって用いられる。オブジェクト
レファレンスは普通、トランスポートレヤー38におい
て、トランスポートメカニズムによって処理される。
【0027】トランスポートレヤー38の一部分である
T1,T2などのトランスポートメカニズムは、サーバ
ントオブジェクトとの間で情報をマーシャルして物理的
にするのに用いられる。情報すなわちオブジェクトレフ
ァレンスまたはリクエストは、ある与えられたドメイン
に適したプロトコルへ変換される。例えば、プロトコル
はイーサーネットプロトコルとジェネラル・インターO
RB・プロトコル(GIOP)を含むが、これらに限ら
ない。いくつかのまれな場合において、プロトコルはサ
ーバー上で実行されるべき命令を伝達するため電子メー
ルの使用さえ必要とするかも知れない。情報のマーシャ
ル後、トランスポートメカニズムは次に、すべて分散オ
ブジェクトシステムのクライアント側が用いるハードウ
ェア70の一部であるオペレーティングシステム、デバ
イスドライバーの任意の組合せ、すなわちネットワーク
を介して、情報を送る。
【0028】トランスポートメカニズムは、ある与えら
れたドメインに適したプロトコルへの情報の変換を必要
とするが、いくつかのトランスポートメカニズムは、別
々のドメインに関する情報のエンコーディングを必要と
しない。情報源以外のドメインに適したプロトコルへの
情報変換を必要としないトランスポートメカニズムを
「ドア」(door)と称する。ドアは基本的には、同一ホス
ト上の二つの異なるプロセス間のゲートウェイ(出入り
口)である。ドアを用いると、トランスポートレヤー3
8において情報を規範的実行(canonical implementatio
n)へ変換する必要がなくなる。その理由は、情報を一つ
の異なるマシンが用いるプロトコルへエンコードする必
要がないからであり、これは、情報が同一ホスト上に残
っており、従ってドメインの変更を必要としないという
事実に基づく。従って、情報は簡単に「平らに延ばさ
れ」、すなわち一つの流れへとマーシャルされ、これは
一つの異なるマシンによって用いられるようにエンコー
ドされず、ホスト上の二つのプロセス間でやり取りされ
る。
【0029】情報がいったんクライアント側で用いられ
るハードウェア70を介して転送(トランスポート)さ
れると、次に情報は分散オブジェクトシステムのサーバ
ー側のハードウェア70へ転送される。情報がいったん
ハードウェア70を介して回送されると、分散オブジェ
クトシステムのサーバー側は、トランスポートレヤー3
8の一部分であるエンドポイント上で情報を受け取るた
め、T1、T2のようなトランスポートメカニズムを呼
び出す。トランスポートレヤー38によってエンドポイ
ントが作られていない場合、トランスポートレヤー38
は、サブコントラクトレヤー36がエンドポイントを作
るのに必要な機能性を提供する。例えば、専用エンドポ
イントは普通、サブコントラクトレヤー36によって作
成される一方、ネットワーク・エンドポイントおよびT
CP/IPエンドポイントを含むのが普通であるクラス
ター・エンドポイントは、普通、トランスポートレヤー
38によって作成される。エンドポイントがサブコント
ラクトレヤー36、あるいはトランスポートレヤー38
のいずれによって作成されるかにかかわらず、エンドポ
イントは「リブ・イン(live in)」、すなわちトランス
ポートレヤー38の一部分である。エンドポイントは本
質的に別のドメインから情報を受けるポート(出入り
口)である。トランスポートレヤー38内のエンドポイ
ントは、別のドメインから送られてきた情報を受け取る
と、その情報をトランスポートレヤー38からサブコン
トラクトレヤー36へ発送する。次にサブコントラクト
レヤー36、あるいは更に具体的には情報を受信するサ
ブコントラクトレヤー36内のサブコントラクトは、そ
の情報をスケルトンとサーバントへ発送する。
【0030】サブコントラクトレヤー36は、それが受
け取った情報の少なくとも一部分をアンマーシャルする
ための機能性を提供する。すなわち、サブコントラクト
レヤー36は、リクエストの少なくとも一部分をアンマ
ーシャルする。次に、リクエストはスケルトン31へ発
送され、スケルトン31はこのリクエストをサーバント
オブジェクト78が必要とする、実行に特有のフォーマ
ットに変換する。このスケルトンは、前記スタティック
スケルトンまたはダイナミックスケルトンのいずれでも
よい。
【0031】一般的に、リモートリクエストはクライア
ント側とサーバー側を介して上記のように回送される。
メソッドコール62が受信されると、メソッドテーブル
24を用いて適当なサブコントラクトを識別し、引き続
きトランスポートレヤー38においてトランスポートメ
カニズムを選択し、これによってリクエストをマーシャ
ルし、それをもう一つのドメインへ送る準備をする。マ
ーシャルされたリクエストはハードウェア70を介して
サーバー側へ送られ、トランスポートレヤー38の一部
分であるエンドポイントがそれを受け取る。適当なエン
ドポイントがワイヤーを介して情報を受け取り、情報は
トランスポートレヤー38からサブコントラクトレヤー
36へ送られ、サブコントラクトレヤー36はそれが受
け取った情報を少なくとも部分的にアンマーシャルす
る。サブコントラクトレヤーは次にリクエストをスケル
トン31へ発送し、スケルトン31はこのリクエスト
を、サーバントオブジェクト78が必要とする特定のフ
ォーマットに変換する。このパス(path:経路)を矢印7
7で示す。このパスは、リモートリクエスト、ローカル
リクエストのいずれもが取ることができる。
【0032】しかし、もしクライアントとサーバーが一
つのローカルプロセスにあれば、すなわちクライアント
とサーバーの両方が同一プロセス内にあれば、上記のよ
うに矢印77で示したパスの使用は不必要に複雑にな
る。もしクライアントとサーバーが同一プロセス内にあ
ることが分かっていれば、サービスのためのリクエスト
の呼び出しパスすなわちフローパスを短かくすることが
できる。オブジェクトレファレンスが作成されたとき、
もしローカルプロセスが識別できれば、短縮フローパ
ス、すなわち矢印75、76で表したパスを選んで、同
一ホスト上のクライアントからサーバーへリクエストを
送ることができる。矢印76で表したパスは、適当なサ
ブコントラクトを識別するのにサブコントラクトレヤー
36を用いるので、このパスを取る可能性が大きい。し
かし、適当なサブコントラクトを明確に識別する必要が
ない場合、矢印75で表したパスを取ることができる。
【0033】ここで図3を用いて一つのオブジェクトレ
ファレンスの一実施例を説明する。当業者にはなじみな
ように、オブジェクトレファレンスは、ある与えられた
時刻にそれらが保持されているプロセス内の場所次第で
様々な形を取ることができる。しかし、背景として、ロ
ーオーバーヘッド実行スイートを利用するシステム内で
用いるための代表的オブジェクトレファレンスを図3に
示す。同図に示した実行においては、オブジェクトレフ
ァレンス150は、ホスト識別子152、ポート指定1
54、およびオブジェクトキー156を含む。オブジェ
クトキー156は、サブコントラクト識別子158、サ
ーバー識別子160、実行識別子162、およびユーザ
ーキー164を含む。ホスト識別子152は一つのネッ
トワーク内の特定のコンピュータを示す一方、ポート指
定154は通信のために用いるべき選ばれるコンピュー
タのポートを識別する。オブジェクトキー156は、そ
のホストマシン上で所望のサーバントオブジェクトの場
所を見いだすのに用いる追加の識別情報を提供する。
【0034】サーバー識別子160は、中にサーバント
オブジェクトが常駐する特定のプロセスまたはプログラ
ムを指名する。一方、ユーザーキー164は、サーバー
識別子160によって指名されたプログラム内における
サーバントを見いだすのに用いられる特定の番号または
ストリングである。サブコントラクト識別子158は、
特定のサブコントラクトのプロトコルとその関連サービ
スにサーバントを添付するのに用いられ、実行識別子1
62は当該サーバントオブジェクトとともに用いられる
べきインターフェイスの実行を指名する。
【0035】分散オブジェクト指向システム、すなわち
分散動作環境によって用いられるアプリケーションコー
ドの量を、システムの性能面で妥協せずに減らすこと
は、当該システムの全体的効率を向上させる。分散オブ
ジェクト指向システムにおいて用いられるアプリケーシ
ョンコードの量を減らすメソッドの一つは、可能な限り
妥協することである。換言すれば、可能な場合は常に、
同じコードを用いて種々のタスクを実行すれば、システ
ムの全体的効率を向上させつつアプリケーションコード
の総量を低減させることができるであろう。更に、コー
ドパス(code paths)の数が少ないということは、コード
のテストが容易であることと、あまり普通でない特徴の
中にバグが潜んでいる可能性が少ないことを意味する。
例えば、ダイナミック呼出しのような、あまり普通でな
い特徴は、より普通であるスタティック呼出しのときテ
ストされる。一つまたはそれ以上のマイナールーチンを
含むかも知れないダイナミック呼出し特徴の残りは、独
立的にテストされる。
【0036】共通化コードを実行することのできる一つ
の分野はメソッドの呼出し分野である。クライアント・
サーバー・システムにおけるメソッドへのコールは普
通、メソッドの指定と、そのメソッドを呼び出すのに必
要な、そのメソッドが用いる種々のインターフェイスパ
ラメータとそのメソッドが設ける例外を含む情報を必要
とする。普通、各パラメータに関連して作成されるコー
ドは、パラメータを用いる各メソッドへ直接仕向けられ
る。複数のメソッドが同じパラメータ(複数)を用いる
ことができるので、あるパラメータに関連するコードが
「モジュール」すなわちデータ構造内に包含されていれ
ば、システムの効率は改善される。次にこのモジュール
のコードに、二つ以上のメソッドがアクセスすることが
でき、それによって、一つのシステム内のコードの量が
低減される。
【0037】共通化コードを実行することのできるもう
一つの分野は、マーシャリングおよびアンマーシャリン
グ分野である。情報のパケットをマーシャルするには、
情報を「ワイヤー」すなわちネットワーク通信ラインを
介して転送するために準備する必要がある。情報のパケ
ットをアンマーシャルすることは、本質的にマーシャル
手順の逆であって、それによって非ネットワーク環境に
おいて意味をもつ情報のパケットを作り出すことであ
る。マーシャリングとアンマーシャリングにはそれぞれ
二つの一般的タイプがある。すなわち、編集されたマー
シャリングまたはアンマーシャリングと、編集されな
い、すなわちタイプコードによって解釈されるマーシャ
リングおよびアンマーシャリングである。編集された、
すなわちインターフェイス定義言語(IDL)によって
作成され、かつ非編集のマーシャリングルーチンとアン
マーシャリングルーチンの間の相違を分離すると、ルー
チンの相違しない部分とともに用いるための共通コード
の作成が可能になる。すなわち、汎用(genric)マーシャ
ルルーチンと汎用アンマーシャルルーチンを作成するこ
とができる。汎用ルーチンを用いると、コードのテスト
が容易になり、それによって、あまり普通でない特徴の
中にバグが潜んでいる可能性が少なくなる。
【0038】一般的に、上記のように、一つのオブジェ
クトを呼び出すためのコールには、呼び出すべきメソッ
ドの指定、呼び出すべきメソッドに係わるパラメータの
指定、および呼び出すべきメソッドに係わる例外の指定
が係わる。データ構造を用いてコードを共通化すること
ができる。更にデータ構造を用いて、例えばパラメータ
に関連する変更を、変更対象のパラメータを用いるメソ
ッドの呼出し全体に影響を及ぼすことなく、行うことが
できる。言い換えれば、データ構造を用いることによっ
て、あるオブジェクトを呼び出すためのコールに関連す
る一つの要素への変更を、例えばアプリケーションソフ
トウェアを大幅に変更せずに、行うことができる。オブ
ジェクトの呼出しに用いることのできるデータ構造に
は、メソッドデスクリプタデータ構造、呼出し記述デー
タ構造、パラメータデータ構造、および例外データ構造
があるが、これらに限らない。
【0039】次に図4は、本発明に関して用いるのに適
したメソッドデスクリプタ79のダイヤグラム図であ
る。メソッドデスクリプタ79は、多くのデスクリプタ
・データ構造の一つであって、コールされるべき、すな
わちインボーク(呼出)されるべき特定のメソッドを記
述するのに用いられる。普通、メソッドデスクリプタ7
9はリモート(遠隔の)手順メソッドを記述する。分散
オブジェクト指向システムのクライアントクライアント
側とサーバー側の両方がメソッドデスクリプタデータ構
造79を用いる。図示した実施例において、メソッドデ
スクリプタデータ構造79は、キー80、呼び出される
べきメソッドのローカルネーム81、呼び出されるべき
メソッドの論理識別子(ID)82を含む。キー80は
任意の適当な形をとることができ、例えば、一つの文字
列(a string of characters)であるローカルネームのハ
ッシュ値(hash value)、すなわち数値の形をとることが
できる。ローカルネーム81のハッシュ値は、メソッド
番号の作成に用いることができ、これは一義的(ユニー
ク)ではないが、関連するメソッドの識別に用いること
ができる。呼び出されるべきメソッドのローカルネーム
81は、ノン・スコープト・ネーム(non-scoped name)
であり、メソッドデスクリプタが関連づけられるべきク
ライアントを識別する作用をする。論理ID(82)
は、関連するメソッドのユニークネームである。すなわ
ち、論理ID(82)はメソッドのグローバル(全体
的)識別子として作用する。
【0040】メソッドのローカルネーム81とメソッド
デスクリプタ内の論理ID(82)に加えてキー80を
設けることの利点は、メソッドのローカルネーム81と
論理ID(82)は普通は文字列であるのに対して、キ
ー80は数値を持っているという事実に基づいている。
数値は、文字列(strings of characters)であるバリュ
ー(値)よりもはるかに速やかに比較、デコード、およ
び発送が可能である。メソッドデスクリプタ79はメソ
ッドに関する情報を含んでいるが、メソッドの実際の呼
出しを記述する情報は含まない。従って、メソッドの実
際の呼出しを記述するための呼出しデスクリプタを設け
る。呼出しデスクリプタは、メソッドの呼出しに属する
情報を提供するデータ構造である。すなわち、呼出しデ
スクリプタは、メソッドデスクリプタによって記述され
る特定のリモート手順メソッドに関するすべての情報の
コレクション(集合)である。
【0041】図5は、本発明の一実施例による呼出しデ
スクリプタ84のダイヤグラム図である。呼出しデスク
リプタ84はブール値(boolean values)、整数値、コン
テクスト、他のデータ構造へのポインター、および機能
へのポインターの組合せを含むことができる。ポインタ
ーは、汎用識別子(generic identifiers)すなわち適当
なデータ構造または機能を識別する任意の手段で置き換
えることができるものと理解すべきである。本明細書に
おいては、ポインターおよび識別子という用語は互換性
をもって用いることとする。ブール値または論理フラッ
グは、「編集された(コンパイルド)」(compiled)フラ
ッグ84と「ワンウェイ」フラッグ85を含む。コンパ
イルド・フラッグ84は、呼出しパスがスタティックで
あるか、すなわち編集されているか、あるいはダイナミ
ックであるか、すなわちタイプコードによって解釈され
ているか、判定する。ダイナミック呼出しパスは、非編
集(non-compiled)呼出しパスとしても知られている。ワ
ンウェイフラッグ85は、回答がリクエストに応答する
ものであるか識別する。整数値は、「イン」デスクリプ
タ・カウンター86(IN DESC COUNT)と
「アウト」デスクリプタ・カウンター(OUT DES
COUNT)87を含む。両カウンターは、特定の
呼出しに関連する「イン」パラメータの数と「アウト」
パラメータの数をそれぞれ表す値を保持している。
【0042】図5に示した呼出しデスクリプタ83は、
他のデータ構造へのポインター、すなわち「イン」デス
クリプタ88へのポインター(IN DESC)、「ア
ウト」デスクリプタ89へのポインター(OUT DE
SC)、および例外デスクリプタへのポインター90
(EXCEPTION DESC)を含む。IN DE
SC(88)とOUT DESC(89)は、図6につ
いて以下に詳しく説明するパラメータデスクリプタへの
ポインターである。IN DESC(88)とOUT
DESC(89)は、それぞれパラメータデスクリプタ
の任意のアレイへのポインターとなることができる。E
XCEPTION DESC(90)は、例外デスクリ
プタへのポインターのアレイへのポインターであって、
図6について以下に説明する。IN DESC COU
NT 86(OUT DESC COUNT 87)とI
DESC 88(OUT DESC 89)は、パラ
メータデスクリプタのオーダーされ、カウントされた集
合を実行するが、他の適当なデータ構造を用いて実行す
ることができる。
【0043】図5に示した呼出しデスクリプタは、コン
テクスト91も含む。例えばコンテクスト91のような
コンテクストは、一般的に、呼出されるべきメソッドに
関連する情報を含む関連ストリングのアレイであること
ができる。コンテクストに含まれる情報は、呼出される
べきメソッドの実行に有用な情報であるかも知れない。
コンテクストは、概念的には関連性の表である。各関連
性は普通、ストリングであるキーと、当該キーに関連し
同じくストリングであるバリューを含む。
【0044】再初期化機能92へのポインター(REI
NIT)は、図5に示した呼出しデスクリプタ83の一
部として含まれている。再初期化機能は、バッファー内
のデータが処理され終わると、保存されているすべての
ポインターを開放し、関連するバッファーをクリアす
る。例えば、呼出されるべきメソッドが、情報をネット
ワーク通信ラインを介して転送するための準備メソッド
であるマーシャルメソッドである場合、再初期化機能
は、パラメータ内の情報がマーシャルされた後のある時
点において、関連するパラメータをクリアする。
【0045】次に図6は、本発明の一実施例によるパラ
メータデスクリプタ93のダイヤグラム図である。パラ
メータデスクリプタ93は、特定のパラメータに関連す
る特性を記述するように配設されたデータ構造であっ
て、それ自体はイン・デスクリプタ(IN DESC)
およびアウト・デスクリプタ(OUT DESC)を介
して呼び出しデスクリプタに関連をもっている。パラメ
ータデスクリプタ93は、方向(direction 指示、方向)
94とタイプコード95を含むことができ、更にサイズ
コード96、名称97、関連するマーシャル機能へのポ
インター98、および関連するアンマーシャル機能への
ポインター99の任意の組合せを含むことができる。方
向94は、与えられたパラメータの処理方向を識別する
インジケータである。方向94は、モードとも称する。
処理方向は、クライアントのレファレンスのフレームか
ら、「イン」方向、「アウト」方向、「インアウト」方
向、および「リターン」方向である。イン方向は、与え
られたパラメータはクライアントからサーバーへ与えら
れた引数であることを示し、アウト方向は、与えられた
パラメータはサーバーからクライアントへ与えられた引
数であることを示す。従ってインアウト方向は、与えら
れたパラメータはイン方向とアウト方向の両方向に伝達
される引数であることになる。リターン方向は、与えら
れたパラメータはコールからの帰りの引数であることを
示す。
【0046】上記のように、例えばパラメータデスクリ
プタ93のようなパラメータデスクリプタは呼出しデス
クリプタに関連づけられている。具体的に、パラメータ
デスクリプタは、図4について上に説明したように、呼
出しデスクリプタに含まれるIN DESCポインター
とOUT DESCポインターによって間接的に指示(p
oint)される。IN DESCは一般的に、処理方向が
イン方向またはインアウト方向であるパラメータのアレ
イへのポインターであり、OUT DESCは一般的
に、処理方向がアウト方向またはリターン方向であるパ
ラメータのアレイへのポインターである。
【0047】タイプコード95は、パラメータの処理方
向に関する情報は含んでいないが、特定のデータタイ
プ、この場合パラメータのデータタイプを記述する仕様
を含んでいる。タイプコード95は、マーシャルおよび
アンマーシャルの機能またはメソッドへのポインターを
含む。マーシャル機能については、図5について先に説
明した。アンマーシャル機能は、マーシャリング手順を
逆にして、データタイプが用いられるドメインにおいて
意味をもつデータタイプの事例を作成する機能である。
タイプコード95はまた、データタイプのサイズに関す
る、換言すれば、データタイプの各事例が必要とするメ
モリーの量に関する、情報を含む。タイプコード95の
主な目的はデータタイプ、更に具体的にはデータタイプ
の構造または構成要素を記述することであると、理解す
べきである。
【0048】タイプコード95は、マーシャル機能、ア
ンマーシャル機能、データタイプの名称と構成要素に関
する情報、データタイプの事例に必要なメモリーのサイ
ズまたは量へのポインターを含んでいるので、パラメー
タデスクリプタの一部としてマーシャル機能、アンマー
シャル機能、およびデータタイプのサイズに関する値
(バリュー)を特に含む必要はない。しかし、パラメー
タデスクリプタ内のタイプコード95から抽出すること
のできる情報を明示的に提供することは、情報を必要の
都度抽出することに係わる性能損失を除去できるので、
有利である。例えば、タイプコード95を介してデータ
タイプのサイズを計算することは、構成要素タイプのサ
イズの繰り返し計算と結果の集計を伴い、経費がかか
る。従って、先に述べたように、パラメータデスクリプ
タ93は、方向94とパラメータのタイプコード95に
加えて、マーシャル機能とアンマーシャル機能それぞれ
へのポインター98および99のみならず、関連するパ
ラメータのサイズ96とパラメータの名称に関する情報
を明示的に含むことができる。
【0049】次に図7は、本発明の一実施例による例外
デスクリプタ102のダイヤグラム図である。例外デス
クリプタ102は、関連する例外の特性を記述するよう
に配設されたデータ構造である。上記のパラメータデス
クリプタのように、例外デスクリプタ102は呼出しデ
スクリプタに関連し、図5について上に述べたEXCE
PTION DESCによって間接的に指し示される。
例外デスクリプタ102は、タイプコード103を含む
ことができ、更にサイズ104、キー107、レポジト
リ識別子108、関連するマーシャル機能111へのポ
インター、関連するアンマーシャル機能112へのポイ
ンター、および投入機能113へのポインターを含むこ
とができる。上記のパラメータデスクリプタは方向を含
んでいるが、例外デスクリプタ102は、処理方向が常
にサーバーからクライアントであるので、含まない。換
言すれば、例外は常にサーバーからクライアントへ伝達
される。
【0050】図6について上に述べたように、タイプコ
ード103は、データタイプに関連するマーシャル機能
とアンマーシャル機能を含む特定のデータタイプを記述
する仕様を含む。図7に戻ると、この場合のエンティテ
ィは例外である。例外に関連するマーシャル機能とアン
マーシャル機能へのポインターを含むことに加えて、タ
イプコード103は、例外のサイズ、すなわち例外を受
信しているプロセスによって割当てられねばならないメ
モリーの量に関する情報を含む。タイプコード103は
更に、レポジトリ識別子(REPOSITORY
D)を含む。レポジトリ識別子は更に例外を一義的(ユ
ニーク)に識別する。レポジトリ識別子は、図4につい
て上に説明したメソッドデスクリプタの論理識別子LO
GICAL IDに多少類似していて、例外レポジトリ、
あるいはすべての例外の「リスト」内の一つの例外を一
義的に識別するのに用いることができる。最後に、タイ
プコード103は、例外の性質を指定する投入機能(T
HROW FUNC)へのポインターを含み、例外の場
合、リクエストの再回送に用いられる。特に例外デスク
リプタに関連するタイプコード103内の情報のみを説
明したが、タイプコード103は説明したよりも更に大
量の情報を一般的に含むことができるものと認識すべき
である。
【0051】図6について上に述べたパラメータデスク
リプタの場合もそうであったが、図7について上に述べ
た例外デスクリプタ102はタイプコード103から抽
出することのできる情報を明示的に含んでいる。この場
合にも、この情報、すなわち、例外のサイズ104、キ
ー107、レポジトリ識別子108、関連するマーシャ
ル機能へのポインター111、および関連するアンマー
シャル機能へのポインター112、の任意の組合せを明
示的に例外レポジトリ102に含めて、情報をタイプコ
ード103からその都度抽出することに係わる性能損失
を避けることができる。
【0052】図4から図7までについて説明した4つの
デスクリプタデータ構造は相互に関連づけられる。パラ
メータデスクリプタデータ構造と例外デスクリプタデー
タ構造は、分散オブジェクト指向システムの立上げ時、
コンパイラールーチンによって作成される。すなわち、
パラメータデスクリプタデータ構造と例外デスクリプタ
データ構造は、コンパイル時に自動的にファイルされ
る。他方、メソッドデスクリプタデータ構造と呼出しデ
スクリプタデータ構造は、立上げ時に作成されてコンパ
イル時に自動的にファイルされてもよいし、あるいは、
それらは実行時(run-time)に作成されてもよい。呼出し
デスクリプタは、パラメータデスクリプタのアレイへの
ポインターと例外デスクリプタへのポインターのアレイ
を含む。メソッドデスクリプタと残りの3つのデータ構
造の間の関係は、本発明の一実施例による分散オブジェ
クトのクライアント側における呼出しメソッドへのコー
ルの表現である図8を参照すると最もよく理解できる。
呼出しメソッドへのコールは、メソッドデスクリプタへ
のポインター、関連する呼出しデスクリプタへのポイン
ター、パラメータ・アドレスのアレイまたは保存場所へ
のポインター、CORBAコンテクスト、およびCOR
BA例外を、引数として含めることに係わる。メソッド
デスクリプタと呼出しデスクリプタは、ともに呼出しメ
ソッドへのコールの一部であるので、相互に関連してい
る。メソッドデスクリプタと呼出しデスクリプタは、一
つのデスクリプタデータ構造にまとめることもできる
が、別々のままにしてある。その理由は、分散オブジェ
クトシステムのクライアント側とサーバー側はともにメ
ソッドデスクリプタを用いるが、サーバー側において、
メソッドデスクリプタ内の情報と呼出しデスクリプタ内
の情報はシステム全体の別々の場所から来るという事実
である。パラメータアドレスのリストは、呼出しメソッ
ドへのコール毎に変化し、そこから「イン」引数を取出
し、そこへ「アウト」引数を保存するメモリー場所を提
供する作用をする。パラメータ保存場所アレイは、図2
について上に述べたスタブとスケルトンによって step
up される。CORBA例外保存例外デスクリプタは、
例外リターンポインターへのポインターを提供する。こ
の例外リターンポインターへのポインターは、例外への
ポインターをどこに保存するかを示す。例外リターンポ
インターへのポインターが無しの場合、例外リターンが
投入される。
【0053】次に図9について、本発明の一実施例によ
るオブジェクト呼出しメソッドを説明する。すなわち、
メソッドを呼び出すためにコールが行われると発生する
ステップをダイヤグラムに示す。まず、ファットポイン
トを用いるコールまたはリクエストをクライアントが受
取る。このコールは任意の適当なコンピュータ言語であ
ればよいが、図示の実施例においてはC++コールであ
る。ファットポインターはまた、「大きな」ポインタ
ー、すなわち少なくとも2個の「通常」ポインターを含
むポインター構造であると見なすことができる。ファッ
トポインターはまた、CORBAオブジェクトレファレ
ンスであると見なすこともできる。ファットポインター
が2個の「通常」ポインターを持つ場合、ファットポイ
ンターは普通、8バイトを含み、通常ポインターは普通
それぞれ4バイトを持つ。ファットポインターは、代表
ポインター「レップ」とメソッドテーブル(またはmテ
ーブル)ポインターからなり、両者はそれぞれ通常ポイ
ンターであり、クライアント上において分散オブジェク
トを代表(表現)するサブコントラクト・エンティティ
である。
【0054】ステップ100において、コールされたメ
ソッドはファットポインターによって指示されるmテー
ブル内にある。コールされたメソッドがローカルメソッ
ドであれば、ファットポインターによって指示されるm
テーブルはローカルmテーブルである。同様に、コール
されたメソッドがリモートメソッドであれば、ファット
ポインターによって指示されるmテーブルはリモートm
テーブルである。ステップ105において、ファットポ
インターとC++コールへの引数によって識別されたク
ライアント表現をもって指示された機能へのコールが行
われる。この機能がコールされた後、プロセスコントロ
ールは、指示された機能がローカルプロセスであるかリ
モートプロセスであるかによって、異なる機能へ分岐す
る。指示された機能がローカルプロセスである場合、プ
ロセスコントロールはステップ110へ進み、ローカル
スタブが実行される。ステップ110においてローカル
スタブが実行された後、プロセスはステップ120にお
いて機能コールから戻る。ファットポインターによって
指示される機能がリモートプロセス内にあって、ローカ
ルプロセス内にない場合、プロセスコントロールはステ
ップ105において機能がコールされた後、ステップ1
15へ進む。ステップ115において、リモートスタブ
が実行される。リモートスタブを実行するプロセスを以
下に詳しく説明する。ステップ115において、リモー
トスタブが実行された後、プロセスコントロールはステ
ップ120へ進み、これは次に機能コールから戻る。
【0055】次に図10を参照して、本発明の一実施例
によるリモートスタブの実行メソッドを説明する。すな
わち、図9を参照してリモートスタブの実行ステップ1
15を説明する。複数の引数のリストまたはコンテクス
トを用いる場は、一つのコンテクストを用いるリモート
スタブからの呼出しのスタートは、ステップ190にお
いて始まり、リターンパラメータおよびアウトパラメー
タ、すなわちリターン処理方向を持ったパラメータおよ
びアウト処理方向を持ったパラメータのためのストーレ
ッジ、すなわちメモリーの割当てが行われる。本明細書
においては、「イン・パラメータ」および「アウト・パ
ラメータ」という用語はそれぞれ、「イン処理方向を持
ったパラメータ」および「アウト処理方向を持ったパラ
メータ」という語句と互換性をもって用いることとす
る。同様に、「リターン・パラメータ」および「インア
ウト・パラメータ」という用語はそれぞれ、「リターン
処理方向を持ったパラメータ」および「インアウト処理
方向を持ったパラメータ」という語句と互換性をもって
用いることとする。インアウト処理方向を持ったパラメ
ータ用のメモリーは予め割当てられているので、メモリ
ー割当てステップ190においては、インアウト・パラ
メータ用のメモリーは割当てられない。プロセスコント
ロールはメモリー割当てステップ190からステップ1
92へ進み、そこでインパラメータが設定される。呼出
しメソッドがコールされる毎に、リモートスタブからの
呼出しに用いられた引数に関連するイン・パラメータを
設定しなければならない。イン・パラメータを設定は、
図8の呼出しメソッドへIN PARAMとして送るべ
きイン・パラメータを保持するメモリー場所へのポイン
ターのアレイの設定を必要とする。イン・パラメータの
設定から、プロセスコントロールはステップ194へ進
み、そこでアウトパラメータとインパラメータが設定さ
れる。すなわち、図8の呼出しメソッドへOUT PA
RAMとして送られるべきアウトパラメータを受信する
メモリー場所へのポインターのアレイが作成される。
【0056】アウトパラメータ設定のステップ194か
ら、プロセスコントロールはステップ196へ移行し、
そこでクライアント表現(client representation)に関
する呼出しメソッドへのコールが行われる。「シグネチ
ャー」(signature)または基本的要素または呼出しメソ
ッドは、図8について先にのべたものと解釈されるべき
である。各クライアント表現は関連する呼出しメソッド
を持っている。クライアント表現に関する呼出しメソッ
ドのコールに係わるステップを、図11を参照して以下
に説明する。ステップ197において、ステップ196
における呼出しメソッドへのコールの結果が例外になる
か否か判定される。例外があったと判定されると、プロ
セスコントロールはステップ198へ進み、ステップ1
90においてリターンパラメータとアウトパラメータの
保存に割当てられたメモリーが割当て解除される。次に
プロセスコントロールはコールの結果を呼出しメソッド
へ返す。ステップ197において、例外がなかったと判
定されると、プロセスコントロールは単にコールの結果
を呼出しメソッドへ返すのみである。
【0057】次に図11を参照して、本発明の一実施例
によるクライアント表現の呼出しメソッドを説明する。
すなわち、図10を参照して、クライアント表現の呼出
しメソッドをコールするステップ196を説明する。こ
のステップはステップ201において始まり、ここでは
リモートスタブが、引数として複数のデスクリプタ、す
なわちメソッドデスクリプタ、呼出しデスクリプタ、パ
ラメータ保存場所デスクリプタおよび例外保存場所デス
クリプタを用いて、クライアント表現の呼出しメソッド
をコールする。換言すれば、リモートスタブは複数のデ
スクリプタを引数として用いて適当なサブコントラクト
を呼出す。ステップ202において、トランスポートが
選ばれる。一つのサブコントラクトのみが一つのトラン
スポートをサポートするならば、そのトランスポートが
選ばれる。サブコントラクトが複数のトランスポートを
持っていれば、選ばれるべき最適のトランスポートを指
定する情報を、トランスポートに関連するメトリックス
(metrics)が提供する。トランスポートが選ばれると、
プロセスコントロールはステップ204へ進み、ターゲ
ットオブジェクトレファレンスに基づいてエンドポイン
トが識別される。エンドポイントは、呼出しを受信する
こと、およびメッセージを送ることに用いられる「ポー
トホール」(porthole 出入り口)、すなわち接続点であ
る。CORBAオブジェクトレファレンスは他のオブジ
ェクトへのポインターを含むことができ、これについて
は図2を参照して先に説明した。オブジェクトレファレ
ンス内のオブジェクトキーは、図2を参照して先に説明
したように、ターゲットオブジェクト、すなわちリクエ
ストのターゲットであるオブジェクトを識別する。エン
ドポイントの識別は、クライアントのトランスポートレ
ヤーあるいはクライアントのサブコントラクトレヤーの
いずれにおいて行ってもよい。エンドポイントが識別さ
れた後、プロセスコントロールはステップ206へ進
み、そこでステップ202において選ばれた最適のマー
シャルバッファーが作成される。これはクライアント側
のトランスポートレヤーにおいて行われる。マーシャル
バッファーは本質的にはトランスポート(転送)される
べき情報をカプセル化するネットワークバッファーであ
って、トランスポートに適したアトミックデータをエン
コードする能力を持っている。マーシャルバッファー
は、マーシャルバッファーからマーシャルまたはアンマ
ーシャルされるべき情報のエンコーディング・フォーマ
ットを指定する識別子またはタグを持っている。サブコ
ントラクトは、識別子があるので、選ばれたトランスポ
ートに適したマーシャルバッファーを識別することがで
きる。
【0058】選ばれたトランスポートに適したマーシャ
ルバッファーが作成された後、ステップ208におい
て、ターゲットオブジェクトレファレンスおよびオペレ
ーション、またはメソッドデスクリプションが、マーシ
ャルされる。このステップにおいては、別途分割できな
いオブジェクトレファレンス部分のみがマーシャルされ
る。ステップ209において、コンテクストが用いられ
る場合、コンテクストがマーシャルされる。コンテクス
ト内において呼出しメソッドに関連(interest)のある情
報のみがピックアウト(選出)される。コンテクストの
マーシャリングのステップから、プロセスコントロール
はステップ210へ進み、そこでデスクリプタを用いて
引数がマーシャルされる。オブジェクトレファレンスが
引数の一つとしておくられた場合、それは引数オブジェ
クトレファレンスによって供給される情報を用いてマー
シャルされる。デスクリプタを用いて引数をマーシャル
するプロセスは、図12について以下に説明する。コン
テクストをマーシャルするステップ209は、デスクリ
プタを用いて引数をマーシャルする(図示の)ステップ
210の前、または後のいずれで行われてもよい。コン
テクストを用いない場合、ステップ209を行う必要は
全くない。
【0059】コンテクスト(用いられる場合)と引数が
マーシャルされた後、プロセスコントロールはステップ
212へ進み、そこで、マーシャルバッファーの内容
が、選ばれたトランスポートを介して、識別されたエン
ドポイントへ伝達される。選ばれたトランスポートのほ
とんどすべてに関して、このステップは、マーシャルバ
ッファーの内容をワイヤーを介して送ることを必要とす
る。伝達ステップ212は、クライアントからサーバー
への通信と見なすことができる。伝達ステップ212か
ら、プロセスコントロールはステップ214へ進み、そ
こでクライアントはサーバーからの回答を待つ。ステッ
プ216において、クライアントはサーバーからの回答
を受取る。クライアントがサーバーからの回答を受取っ
た後、プロセスコントロールはステップ218へ進み、
そこでサーバーから受取った回答はマーシャルバッファ
ー内にカプセル化される。回答がリクエストより大きい
場合、回答をカプセル化するため新しいマーシャルバッ
ファーを作成することができる。しかし、回答がリクエ
ストより大きくないい場合、ステップ206において作
成されたマーシャルバッファーを用いて、ステップ21
8において回答がカプセル化される。回答をカプセル化
するステップはトランスポートレヤーにおいて行われる
ものと理解すべきである。
【0060】回答がマーシャルバッファー内においてカ
プセル化されると、プロセスコントロールはステップ2
20へ進み、そこでトランスポートに特有のヘッダー
が、マーシャルバッファー内にカプセル化されている回
答からアンマーシャルされる。トランスポートに特有の
ヘッダーは、ステップ202において選ばれたトランス
ポートに属す情報を含んでいる。その他のヘッダーとし
ては、引数を識別するヘッダーとリクエスト識別子を指
定するヘッダーがある。マーシャルバッファーに関連す
るポインターを用いてヘッダーの始めと終わりを判定す
ることができる。このポインターはマーシャルバッファ
ー内においてバイトからバイトへ移動する。トランスポ
ートに特有のヘッダーが回答からアンマーシャルされた
後、プロセスコントロールはステップ222へ進み、そ
こでオリジナルコールからのデスクリプタを用いて引数
がアンマーシャルされる。ステップ222を、図13に
ついて、以下に説明する。ステップ222を、図13に
ついて、以下に説明する。デスクリプタを用いて引数が
アンマーシャルされた後、プロセスはリモートスタブへ
戻る。
【0061】次に図12を参照して、デスクリプタを用
いた引数のマーシャリングメソッド、すなわち図10の
ステップ210を本発明の一実施例に従って説明する。
引数をマーシャルする図10のステップは、このプロセ
スの作用は呼出しパスがスタティックであるか、すなわ
ち編集されているか、あるいはダイナミックであるかに
基づいて適当なマーシャリング・ルーチンを呼出すこと
であるので、デスクリプタを用いて引数を包括的にマー
シャルするプロセスと見なすことができる。図12に戻
ると、デスクリプタを用いて引数を包括的にマーシャル
する第1のステップはステップ1100であり、ここで
は呼出しパスがスタティックであるかダイナミックであ
るか、判定される。具体的に、本実施例のステップ11
00において、呼出しデスクリプタのコンパイルフラッ
グが真(true)に設定されているか、判定される。コンパ
イルフラッグが真(true)に設定されていると判定された
場合、これは呼出しパスがスタティックであることを示
し、プロセスコントロールはステップ1102へ進み、
そこでカウンターiはまずゼロに設定され、カウンター
の値iが引数カウント以上であるか否か判定される。引
数カウントは引数として送られる。これは普通、図5に
ついて先に説明したIN DESC COUNTまたは
OUT DESC COUNTである。引数カウント
は、引数として送り込まれたパラメータデスクリプタに
よって指示されたパラメータの合計数を表す。各パラメ
ータiについて、パラメータ保存場所デスクリプタによ
って与えられる、関連するマーシャルバッファーとパラ
メータiに関するアドレスを含む引数を送って、パラメ
ータiに適したマーシャルメソッドが呼出されるステッ
プ1104が、繰り返される。パラメータiに関するア
ドレスは、図7について上に述べたように、メソッドを
呼出すコールの一部であるパラメータアドレスリストへ
のポインターによって識別される。イン・パラメータに
関して一つのパラメータアドレスリストと、アウト・パ
ラメータに関して一つのパラメータアドレスリストがあ
るので、このメソッドへ送られるリストは、クライアン
ト側において「イン」引数がマーシャルされているか、
「アウト」引数がサーバー側においてマーシャルされて
いるかに依存する。プロセスコントロールは、すべての
パラメータが処理されてしまうまで、すべてのパラメー
タが処理されてしまったか否か判定するステップ110
2と、パラメータiに適したマーシャルメソッドを呼出
すステップ1104の間においてループを描く(循環す
る)。すべてのパラメータが処理されてしまうと、すな
わちカウンターiが引数・カウントに等しくなると、プ
ロセスコントロールはステップ1110へ進み、そこ
で、マーシャルメソッドを呼出すコールのいずれかによ
って例外が投入されたか否か判定される。
【0062】ステップ1110において編集フラッグが
真に設定されていないと判定された場合、これは呼出し
パスがダイナミックであることを示す。呼出しパスがダ
イナミックであるとの判定の後、プロセスコントロール
はステップ1106へ進み、そこでカウンターiはまず
ゼロに設定され、カウンターiが引数カウント以上であ
るか否か判定される。引数カウントは通常、呼出しデス
クリプタのIN DESC COUNTまたはOUT
DESC COUNTである。パラメータiに関連する
タイプコード、関連するマーシャルバッファー、および
パラメータiのアドレスを含む複数の引数を送ってタイ
プコード・マーシャリング・ルーチンが呼出されるステ
ップ1108が、各パラメータiについて繰り返され
る。一般的に、タイプコード・マーシャリング・ルーチ
ンはタイプコード・インタープリタによって実行され
る。タイプコードはパラメータデスクリプタ内と例外デ
スクリプタ内の両方に見いだされるのに対して、パラメ
ータiのアドレスは、図8について上に述べたように、
メソッドを呼出すコードの一部であるパラメータ・アド
レス・リストへのポインターによって識別される。イン
・パラメータに関して一つのパラメータアドレスリスト
と、アウト・パラメータに関して一つのパラメータアド
レスリストがあるので、このメソッドへ送られるリスト
は、クライアント側において「イン」引数がマーシャル
されているか、「アウト」引数がサーバー側においてマ
ーシャルされているかに依存する。プロセスコントロー
ルは、カウンターiが引数カウントを超えるまで、すべ
てのパラメータが処理されてしまったか否か判定するス
テップ1106と、タイプコード・マーシャリング・ル
ーチンを呼出すステップ1108の間においてループを
描く(循環する)。すべてのパラメータが処理されたと
判定されると、プロセスコントロールはステップ111
0へ進み、そこで、マーシャルメソッドを呼出すコール
のいずれかによって例外が投入されたか否か判定され
る。
【0063】マーシャルメソッドを呼出すコールのいず
れかによって例外が投入されたか否か判定するステップ
1110において、例外が投入されなかったと判定され
た場合、デスクリプタを用いて引数をマーシャルするス
テップ、すなわち図10のステップ210は完了する。
例外が投入されたと判定された場合、プロセスコントロ
ールはステップ1112へ移行し、そこで例外リターン
・ポインターが無(null)であるか否か判定される。すな
わち、ステップ1112は、例外の投入が適切であるか
否かの判定である。呼出しメソッドへのコールの考察に
おいて先に述べた例外リターン・ポインターが無である
場合、これは特定のマーシャリングの例外がコーラーへ
投入されたことを示す。もしそうであるならば、プロセ
スコントロールは、例外ポインターが無であるか否かの
判定ステップ1112から、特定のマーシャリングの例
外を投入するステップ1114へ移行する。例外ポイン
ターが無でない場合、プロセスコントロールはステップ
1116へ移行し、そこでマーシャリングの例外のため
のメモリーが割当てられ、例外が初期化される。次にス
テップ1118において、ステップ1116において割
当てられたストーレッジのアドレス、すなわちメモリー
のアドレスが、例外リターン・ポインターによって指示
されたポインターへ割当てられる。ステップ1118の
完了後、デスクリプタを用いて引数をマーシャルするプ
ロセスは完了する。
【0064】包括的なマーシャリング・ルーチンは、分
散オブジェクトシステムのクライアント側とサーバー側
によって共用されるものと理解すべきである。クライア
ント側からコールされた場合、引数としてIN PAR
AM、IN DESC、およびIN DESC COU
NTが送られる。同様に、サーバー側からコールされた
場合、引数としてOUT PARAM、OUT DES
C、およびOUT DESC COUNTが送られる。
更に、多くの包括的マーシャリング・ルーチンがあり得
るものと理解すべきである。例えば、逆の順序で引数を
マーシャルする包括的マーシャリング・ルーチンがあり
得るものと理解すべきである。しかし、編集マーシャリ
ングとタイプコード解釈マーシャリングとの相違は、包
括的マーシャリング・ルーチン内においてのみ知り得
る。
【0065】次に図13を参照して、デスクリプタを用
いて引数をアンマーシャルするメソッドを、本発明の一
実施例に従って説明する。すなわち、図11のステップ
222を検討する。デスクリプタを用いて引数をアンマ
ーシャルするプロセスはステップ1201において始ま
り、そこでサーバーが例外を提起したか(raised)否か判
定される。サーバーが例外を提起しなかった場合、プロ
セスコントロールはステップ1202へ進み、そこで、
先に用いたメモリーをリフレッシュするため再初期化機
能がコールされる。再初期化機能がコールされた後、プ
ロセスコントロールはステップ1203へ進み、そこ
で、包括的アンマーシャリング・ルーチンへのコールが
行われる。包括的なアンマーシャリング・ルーチンは、
分散オブジェクトシステムのクライアント側とサーバー
側両方によって用いられるものと理解すべきである。包
括的なアンマーシャリング・ルーチンの実行プロセスを
図14を参照して以下に考察する。
【0066】ステップ1201においてサーバーが例外
を提起したと判定された場合、ステップ1204におい
てマーシャルバッファー内の情報から例外のタイプ、識
別子(ID)、およびキーが決定される。例外のタイ
プ、識別子(ID)、およびキーは、任意の数のメソッ
ドによって決定することができる。例えば、当業者には
理解できるように、マーシャルバッファー上において
「ピーク」メソッドを用いることができる。例外のタイ
プ、識別子(ID)、およびキーが決定された後、ステ
ップ1206において、サーバーが提起した例外が、予
め定義されたシステム例外であるか、あるいはユーザー
によって定義された例外であるかが判定される。例外が
ユーザーによって定義された例外である場合、ステップ
1260において、ユーザー例外ルーチンをコールす
る。ユーザーによって定義された例外ルーチンの実行に
係わるステップを、図15を参照して以下に説明する。
【0067】ステップ1206において、例外が予め定
義されたシステム例外であると判定された場合、プロセ
スコントロールはステップ1208へ移行し、例外リタ
ーンポインターが無であるか否か判定される。例外リタ
ーンポインターが無であるか否かの判定は、アンマーシ
ャルされるべき例外のためのメモリーを割当てることが
最終的に必要であるか否かの判定と見なすことができ
る。例外リターンポインターが無である場合、プロセス
コントロールはステップ1210へ移行し、そこですべ
てのシステム例外のリストを含むシステム例外デスクリ
プタレポジトリ内のマッチするキーを探す。システムデ
スクリプタレポジトリは、システム全体のEXCEPT
ION DESC、すなわち、各システム例外を記述す
る例外デスクリプタへのポインターのリストである。マ
ッチするキーをサーチした後、ステップ1212におい
て、マーシャルバッファー内の情報から決定されたキー
に関するキー・マッチが見いだされたか、判定が行われ
る。キー・マッチが見いだされなかった場合、例外が投
入され、システム例外が見いだされなかったことを示
し、デスクリプタを用いて引数をアンマーシャルするプ
ロセスは完了したと見なされる。マーシャルバッファー
内の情報から決定されたキーに関するキー・マッチが見
いだされたと判定された場合、例外識別子(ID)を、
ステップ1214においてマッチしたキーに関する識別
子(ID)と比較する。換言すれば、システム例外デス
クリプタレポジトリ内で見いだされたキーに対応するI
Dと、ステップ1204においてマーシャルバッファー
内の情報から決定された例外IDとの間で比較が行われ
る。
【0068】例外IDを、マッチしたキーに関連するI
Dと比較した後、プロセスコントロールはステップ12
16へ移行し、そこで例外IDの、マッチしたキーに関
連するIDとの比較が有利であるか判定される。すなわ
ち、例外IDと、マッチしたキーに関連するIDとが相
互に矛盾がないか判定される。例外IDが、マッチした
キーに関連するIDに本当にマッチする場合、ステップ
1222においてマーシャルバッファーへのポインター
を送って、マッチしたキーに関連する投入機能がコール
される。C++実施例においては、投入機能は例外に関
連するデータをアンマーシャルして例外を投入する。投
入機能は、図6を参照して上に説明した。マッチしたキ
ーに関連する投入機能がコールされると、デスクリプタ
を用いて引数をアンマーシャルするプロセスは完了す
る。ステップ1216において、例外IDと、マッチし
たキーに関連するIDとがマッチしないと判定された場
合、ステップ1218において、システム例外デスクリ
プタレポジトリをサーチして、もう一つのキーマッチを
探す。次にプロセスコントロールはステップ1212へ
戻り、キーマッチが見いだされたか否か、判定される。
【0069】先のステップ1208において例外リター
ンポインターが無でないと判定された場合、システム例
外デスクリプタレポジトリ内においてマッチするキーを
求めるサーチが行われる。次にステップ1242におい
て、キーマッチが見いだされたか、判定される。キーマ
ッチが見いだされなかった場合、ステップ1250にお
いて、システム例外が見いだされなかったことを示すた
めメモリーが割当てられる。従って、割り当てられた例
外が作成される。割り当てられた例外は次にステップ1
252において例外リターンポインターを介して戻され
る。すなわち、例外に割当てられたメモリーのアドレス
が戻され、デスクリプタを用いて引数をアンマーシャル
するプロセスは完了する。
【0070】ステップ1242においてキーマッチが見
いだされた場合、プロセスコントロールはステップ12
44へ移行し、そこで例外識別子(ID)を、マッチし
たキーに関する識別子(ID)と比較する。ステップ1
244からプロセスコントロールはステップ1246へ
移行し、例外識別子(ID)と、マッチしたキーに関す
る識別子(ID)との比較の結果がマッチであるか、判
定される。ステップ1248において、システム例外デ
スクリプタレポジトリをサーチして、もう一つのキーマ
ッチを探す。システム例外デスクリプタレポジトリをサ
ーチして、もう一つのキーマッチを探した後、プロセス
コントロールはステップ1242へ戻り、もう一つのキ
ーマッチが見いだされたか否か、判定される。例外ID
と、マッチしたキーに関するIDが本当にマッチしてい
る場合、例外をアンマーシャルするためのメモリーがス
テップ1254において割当てられる。つぎにステップ
1255において、見いだされた例外デスクリプタに関
するアンマーシャル機能へのポインターが無であるか、
判定される。ポインターが無である場合、これは、コー
ルされるべきアンマーシャル機能がダイナミックであ
る、すなわちタイプコードに基づいていることを示す。
タイプコードに基づくアンマーシャルルーチンは、ステ
ップ1258において、関連する例外タイプコード、関
連するマーシャルバッファー、および割当てられたメモ
リーのアドレスを送ってコールされる。関連する例外タ
イプコードは例外デスクリプタレポジトリから見いだす
ことができるものと解釈すべきである。アンマーシャル
ルーチンがステップ1258においてコールされた後、
プロセスコントロールはステップ1252へ進み、そこ
で割当てられた例外が例外リターンポインターを介して
戻され、デスクリプタを用いて引数をアンマーシャルす
るプロセスは完了する。アンマーシャルされるべき機能
が無でない場合、コールされるべきアンマーシャル機能
がスタティック、すなわち編集されたものである。ステ
ップ1256において、マッチしたキーに関連するアン
マーシャル機能へのコールが行われ、関連するマーシャ
ルバッファーへのポインターが引数として送られる。ア
ンマーシャル機能へのコールの後、プロセスコントロー
ルはステップ1252へ進み、そこで割当てられた例外
が例外リターンポインターを介して戻される。
【0071】次に図14を参照して、デスクリプタを用
いて引数を包括的にアンマーシャルするメソッドを本発
明の一実施例に従って説明する。デスクリプタを用いて
引数を包括的にアンマーシャルするメソッドは、図20
のステップ1510にも関係があり、これを以下に説明
する。デスクリプタを用いて引数を包括的にアンマーシ
ャルするメソッドの第1ステップはステップ1130で
あって、ここでは呼出しデスクリプタのコンパイル・フ
ラッグが真(true)に設定されているか、判定される。コ
ンパイル・フラッグが真(true)に設定されていると判定
された場合、これは呼出しパスがスタティックであるこ
とを示し、プロセスコントロールはステップ1132へ
進み、そこでカウンターiがまず1に設定され、そこで
カウンターiの値が引数のカウント(計数値)以上であ
るか、判定される。引数のカウント(計数値)は、アン
マーシャルされるべき引数またはパラメータの数を示
す。各パラメータiについて、関連するマーシャルバッ
ファーとパラメータiに関するアドレスを含む引数を送
って、パラメータiに適した、送り込まれたパラメータ
デスクリプタによって識別されたアンマーシャルメソッ
ドが呼出される、ステップ1134が繰り返される。パ
ラメータiに関するアドレスは、図8について上に説明
したように、メソッドを呼出すためのコールの一部であ
るパラメータアドレスリストへのポインターによって識
別される。「パラメータ保存場所」と「パラメータアド
レスリスト」という用語は互換的に用いられるものと解
釈すべきである。プロセスコントロールは、カウンター
iを増加させてカウンターiが引数カウント以上である
か判定するステップ1132と、パラメータiに関する
アンマーシャルメソッドを呼出すステップ1134の間
で、すべてのパラメータが処理されてしまうまで循環す
る。すべてのパラメータが処理されてしまうと、プロセ
スコントロールは1140へ進み、そこで、アンマーシ
ャルメソッドを呼出すコールのいずれかによって例外が
投入されたか否か判定される。
【0072】ステップ1130においてコンパイルフラ
ッグが真に設定されていないと判定された場合、これは
呼出しパスがダイナミックである、すなわちタイプコー
ドによって解釈されることを示す。コンパイルフラッグ
が真に設定されていない場合、プロセスコントロールは
ステップ1136へ進み、そこでカウンターiに増分が
加えられ、カウンターiが引数カウント以上であるか否
か判定される。換言すれば、ステップ1136はカウン
ターiに増分を加え、未処理のパラメータの有無を判定
する。各パラメータiについて、パラメータiに関連す
るタイプコード、関連するマーシャルバッファー、およ
びパラメータiに関するアドレスを送ってタイプコード
・アンマーシャリング・ルーチンを呼出すステップ11
38が、未処理パラメータがなくなるまで繰り返され
る。タイプコードはパラメータデスクリプタと例外デス
クリプタの両方において見いだすことができるが、送り
込まれるパラメータiに関するアドレスは、先に述べた
ように、パラメータ・アドレス・リストへのポインター
を用いて識別される。すべてのパラメータが処理された
と判定されると、プロセスコントロールはステップ11
40へ進み、そこで例外が投入されたか否か判定され
る。
【0073】ステップ1140において、アンマーシャ
ルメソッドを呼出すコールのいずれかによって例外が投
入されたか否か判定される。例外が投入されなかった場
合、デスクリプタを用いて引数をアンマーシャルするプ
ロセスは完了する。例外が投入されたと判定された場
合、プロセスコントロールはステップ1142へ移行
し、そこで、例外リターンポインターが無であるか否か
判定される。例外リターンポインターが無である場合、
これは、特定のアンマーシャル例外が投入され得ること
を示す。もしそうであれば、ステップ1144において
特定のアンマーシャル例外が投入される。ステップ11
42において、例外リターンポインターが無でないと判
定された場合、プロセスコントロールはステップ114
6へ進み、そこで、例外をアンマーシャルするためのメ
モリーが割当てられる。次に、ステップ1148におい
て、ステップ1146において割当てられたストーレッ
ジ、すなわちメモリーのアドレスが、例外リターンポイ
ンターによって指し示されたポインターへ指定される。
ステップ1148の後、デスクリプタを用いて引数をア
ンマーシャルするプロセスは完了する。
【0074】次に図16を参照して、ユーザー例外ルー
チンのプロセス、すなわち図14のステップ1260
を、本発明の一実施例に従って説明する。このプロセス
は、例外リターンポインターが無であるか否か判定する
ステップ1268において始まる。例外リターンポイン
ターが無である場合、プロセスコントロールは、マッチ
するキーを求めるべくユーザー例外デスクリプタレポジ
トリをサーチするステップ1270へ進む。ユーザー例
外デスクリプタレポジトリは、メソッドに関連するユー
ザー例外を記述する例外デスクリプタへのポインターの
リストであって、関連する呼出しデスクリプタから得ら
れる。ステップ1272において、ユーザー例外レポジ
トリのサーチの結果、キーマッチが見いだされたか否か
判定される。キーマッチが見いだされなかった場合、例
外が投入され、これは、ユーザー例外レポジトリ内にユ
ーザー例外が見いだされなかったことを示し、デスクリ
プタを用いて引数をアンマーシャルするプロセスは完了
する。キーマッチが見いだされた場合、ステップ127
4において、例外識別子(ID)を、マッチしたキーに
関連する識別子(ID)と比較する。例外IDを、マッ
チしたキーに関連するIDと比較した後、プロセスコン
トロールはステップ1276へ進み、例外IDとマッチ
したキーに関連するIDとの比較の結果がマッチになる
か否か判定される。例外IDと、マッチしたキーに関連
するIDとの比較の結果がマッチになった場合、ステッ
プ1282において送られたマーシャルバッファーへの
ポインターによって、マッチしたキーに関連する投入機
能がコールされる。投入機能は図8について既に説明し
た。機能がコールされると、ステップデスクリプタを用
いて引数をアンマーシャルするプロセスは完了する。ス
テップ1276において、例外IDと、マッチしたキー
に関連するIDとがマッチしなかった場合、ステップ1
278において、もう一つのキーマッチを求めるべくユ
ーザー例外デスクリプタレポジトリをサーチする。次に
プロセスコントロールはステップ1272へループバッ
クし、そこでキーマッチが見いだされたか判定される。
【0075】例外リターンポインターが無であるか否か
判定するステップ1268を参照し、例外リターンポイ
ンターが無でないと判定された場合、ステップ1284
において、ユーザー例外デスクリプタレポジトリ内にお
いてマッチするキーをサーチする。次にステップ128
6において、キーマッチが見いだされたか否か判定され
る。キーマッチが見いだされなかった場合、ステップ1
293においてメモリーが割当てられて初期化され、ユ
ーザー例外が見いだされなかったことが示され、例外を
マーシャルするためのメモリーが割当てられる。ステッ
プ1291において、割当てられた例外が例外リターン
ポインターを介して返され、デスクリプタを用いて引数
をアンマーシャルするプロセスは完了する。
【0076】ステップ1286においてキーマッチが見
いだされた場合、プロセスコントロールはステップ12
88へ移行し、そこで、例外IDを、マッチしたキーに
関連するIDと比較する。比較ステップ1288から、
プロセスコントロールはステップ1290へ移行し、そ
こで、例外IDとマッチしたキーに関連するIDとの比
較の結果がマッチになるか否か判定される。もう一つの
キーマッチを求めるべくユーザー例外デスクリプタレポ
ジトリをサーチする。もう一つのキーマッチをサーチし
た後、プロセスコントロールはステップ1286へ戻
り、そこで、キーマッチが見いだされたか否か判定され
る。ステップ1290において、例外IDと、マッチし
たキーに関連するIDが間違いなくマッチする場合、ス
テップ1294において、例外をアンマーシャルするた
めのメモリーが割当てられる。次にステップ1295に
おいて、見いだされた例外デスクリプタに関するアンマ
ーシャル機能へのポインターが無であるか否か判定され
る。ポインターが無である場合、ステップ1298にお
いて、関連する例外タイプコード、関連するマーシャル
バッファー、および割当てられたメモリーのアドレスを
送って、タイプコードに基づくアンマーシャル・ルーチ
ンがコールされる。タイプコードに基づくアンマーシャ
ル・ルーチンがコールされた後、プロセスコントロール
はステップ1291へ進み、割当てられた例外が例外リ
ターンポインターを介して返され、デスクリプタを用い
て引数をアンマーシャルするプロセスは完了する。ステ
ップ1295において、アンマーシャル機能へのポイン
ターが無でないと判定された場合、プロセスコントロー
ルはステップ1296へ進み、そこで、マッチしたキー
に関連するアンマーシャル機能へのコールが行われ、関
連するマーシャルバッファーが引数として送られる。ア
ンマーシャル機能へのコールが行われた後、プロセスコ
ントロールは、割当てられた例外をステップ1291に
おいて例外リターンポインターを介して返し、デスクリ
プタを用いて引数をアンマーシャルするプロセスは完了
する。
【0077】様々なマーシャルルーチンとアンマーシャ
ルルーチンがあるものと解釈すべきである。ルーチンの
数は、用いられるトランスポートまたはプロトコルに依
存する。通常、マーシャルルーチンとアンマーシャルル
ーチンの数はトランスポートの数より少ない。上記の包
括的なマーシャルとアンマーシャルの各ルーチンは、引
数が左から右へ、および各引数内において深度優先順に
マーシャルされる、ほとんどの標準プロトコルに適して
いる。その他の包括的なマーシャルとアンマーシャルの
各ルーチンは、引数を右から左へ、および各引数内にお
いて幅優先順にマーシャルすることができる。コンパイ
ル(編集)されたマーシャリングとアンマーシャリング
の各ルーチンは普通、深度優先順を、タイプコードで解
釈されるマーシャリングとアンマーシャリングの各ルー
チンは普通、幅優先順をとる。多くの場合、コンパイル
されたマーシャルおよびアンマーシャル・ルーチンとタ
イプコード解釈されるマーシャルおよびアンマーシャル
・ルーチンの相違は、包括的ルーチン内に隠れていて、
そのため、コンパイルされたマーシャルおよびアンマー
シャルとタイプコード解釈されるマーシャルおよびアン
マーシャルのいずれが用いられるかにかかわらず、トラ
ンスポート・パスとサブコントラクト・コード・パスが
同じままであることができる。従って、多くの場合、呼
出しはトランスポートに依存すると見なすことができ
る。
【0078】いくつかの場合に、トランスポートは、引
数間と各データタイプ内において別々のマーシャル順序
とアンマーシャル順序を必要とするプロトコルを持つこ
とができる。従って、トランスポートは、図6を参照し
て上に説明した、当該メソッドに関連する呼出しデスク
リプタ内において特定のメソッドに関する情報が利用可
能であるので、各プロトコルに適した特定のマーシャル
・ルーチンおよびアンマーシャル・ルーチンを利用する
ことができる。例えば、右から左へのマーシャル順序
は、図13を参照して説明したような左から右へのマー
シャル順序に関して用いられるインデックス増分ループ
と逆に、インデックス減分ループによって行うことがで
きる。標準の、コンパイルされた、深度優先の、引数の
マーシャル順序およびアンマーシャル順序が、与えられ
たトランスポートまたはプロトコルに適さない場合、他
のマーシャル順序およびアンマーシャル順序、例えば、
幅優先順序を、タイプコードをもつタイプコード・イン
タープリターを用いて行うことができる。その理由は、
タイプコードがデータタイプの完全な記述、すなわち構
造を含むからである。換言すれば、この場合、異なるタ
イプコード・マーシャル・インタープリターとタイプコ
ード・アンマーシャル・インタープリターが用いられる
ので、コンパイルされたマーシャル・ルーチンとアンマ
ーシャル・ルーチンは用いられない。従って、包括的マ
ーシャル・ルーチンとアンマーシャル・ルーチンが、与
えられたトランスポートに適さない場合、マーシャル・
コンベンションまたはアンマーシャル・コンベンション
が実行できるように、十分な情報がデスクリプタ内にお
いて利用可能であり、呼出しプロセス全体はトランスポ
ートから独立していると見なすことができる。
【0079】ダイナミック呼出しの場合、スタティック
呼出しの場合にコールされると思われるものと同じクラ
イアント表現(representation)呼出しメソッドがコール
される。ただし、ダイナミック呼出しシステムは普通、
メソッドデスクリプタ、呼出しデスクリプタ、および他
の関連するデスクリプタを、利用可能なインターフェイ
ス・レポジトリのユーザーによって与えられる情報から
構成する。ダイナミック呼出しに関しては、関連する例
外デスクリプタとパラメータデスクリプタ内にマンダト
リー・フィールドのみが与えられる。
【0080】分散オブジェクトシステムのサーバー側
は、受信エンドポイントにおいて受信したリクエストに
応答する。サーバー側は受信エンドポイントを絶えずモ
ニターしてリクエストの受信時を判定する。サーバー呼
出しに係わるメソッドとしては、サーバー呼出しオブジ
ェクトの初期化と破棄に用いられる従来技術の構築メソ
ッドと従来技術の破棄メソッドがある。図19を参照し
て、サーバー呼出しオブジェクトを説明する。サーバー
側に関連するその他のメソッドとしては、アンマーシャ
ルメソッド、マーシャルメソッド、およびマーシャル例
外メソッドがある。各メソッドに、関連する呼出しデス
クリプタがある。マーシャルメソッドは、図13につい
て上に述べたように包括的マーシャルメソッドをコール
する。同様に、アンマーシャルメソッドは、図14につ
いて上に述べたように包括的アンマーシャルメソッドを
コールする。
【0081】次に図17を参照して、分散オブジェクト
指向システムのサーバー側において特定の受信エンドポ
イントがリクエストを受信したとき発生するステップ
を、本発明の一実施例に従って説明する。このプロセス
はステップ250において始まり、ここで、リクエスト
に特有のマーシャルバッファーを作成し、受信したリク
エストをカプセル化する。作成されるマーシャルバッフ
ァーのタイプは、図2について上に説明したように、専
用エンドポイントまたはクラスター・エンドポイントで
ある。ステップ252において、エンドポイントのタイ
プとターゲット・オブジェクト・レファレンスに基づい
て発送ルーチンが選ばれる。関連するサブコントラクト
とトランスポートは通常、発送ルーチンの選択における
要因である。発送ルーチンを選んだ後、プロセスコント
ロールはステップ254へ移行し、そこで、選ばれた発
送ルーチンがコールされる。ステップ250において作
成されたマーシャルバッファーは、「クッキー」ととも
に適当な発送ルーチンへのコールへ送られる。クッキー
はデータ要素へのポインターである。発送ルーチンがコ
ールされる場合、そこには普通、コールの一部として送
り込まれるクロージャがある。クロージャは、クッキー
と発送ルーチンへのポインターを含む。代表的な発送ル
ーチンをコールまたは実行するプロセスを、図18を参
照して以下に詳しく説明する。発送ルーチンへのコール
の結果、回答がマーシャルバッファ内にカプセル化され
る。最後にステップ256において、回答が受信エンド
ポイント上に伝達される。
【0082】次に図17を参照して、代表的な発送ルー
チンの実行メソッドを、本発明の一実施例に従って説明
する。ステップ1300において、ヘッダー情報が存在
すれば、マーシャルバッファーからヘッダー情報をアン
マーシャルする。クライアントからサーバーへリクエス
トを回送するために用いられる、選ばれたトランスポー
トが、時々マーシャルバッファーからヘッダーを除去す
る。ステップ1302において、ターゲット・オブジェ
クト・レファレンス・データがアンマーシャルされる。
すなわち、呼出されるべきオブジェクトを識別する任意
の項目にアクセスする。次にステップ1304におい
て、呼出し、すなわちコールされるべきオペレーション
名がアンマーシャルされる。プロセスコントロールはス
テップ1304からステップ1306へ進み、そこで、
マーシャルバッファーからオペレーション・キーが獲得
すなわちアンマーシャルされ、適当なメソッドデスクリ
プタが作成される。ターゲット・オブジェクト・レファ
レンス・データ、オペレーション名、およびオペレーシ
ョン・キーがアンマーシャルされる順序は、ステップの
順序が、用いられる特定のプロトコルに依存するので、
重要ではないと理解すべきである。
【0083】ステップ1308において、発送ルーチン
に関連するトランスポートとサブコントラクトに適した
サーバー呼出しオブジェクトが作成される。サーバー呼
出しオブジェクトの作成に必要な情報は、ターゲット・
オブジェクト・レファレンス・データ、オペレーション
名、およびオペレーションキーをアンマーシャルするス
テップにおいて集められる情報である。サブコントラク
トは、作成されるべきサーバー呼出しオブジェクトの適
当な種類を黙示的に(implicitly)決定する。すなわち、
与えられたサブコントラクトは、同じトランスポートエ
ンドポイント、またはオブジェクトに関して作成される
サーバー呼出しオブジェクトの種類の選択に常に首尾一
貫している(consistent)。サーバー呼出しオブジェクト
の構造を、図18について以下に説明し、サーバー呼出
しオブジェクトの作成に関するステップを図19につい
て以下に説明する。
【0084】ステップ1308においてサーバー呼出し
オブジェクトを作成した後、プロセスコントロールはス
テップ1310へ移行し、そこで、アンマーシャルされ
たターゲット・オブジェクト・レファレンス・データに
基づいて発送クロージャが識別される。発送クロージャ
の識別用には、ハッシュテーブルまたはユーザーによっ
て与えられるルーチンへのコールの使用を含む多くのメ
ソッドがある。発送クロージャは、ターゲット・オブジ
ェクト・レファレンスのオブジェクトキーをキーとして
用いて「ルックアップ」、すなわち識別することができ
る。関連するサブコントラクトとトランスポートは通
常、発送ルーチンの選択における要因であると理解すべ
きである。識別された発送クロージャ、または発送ルー
チンは、スケルトン発送機能へのポインターと、この場
合はサーバントへのポインターであるクッキーを持つ。
【0085】ステップ1312において、識別されたク
ロージャー、および従って、識別されたスケルトンは、
ステップ1310において作成されたサーバー呼出しオ
ブジェクトへのポインターとクッキーを用いて呼出され
る。ステップ1314において、識別された発送クロー
ジャが呼出されたとき例外が投入されたか否か判定され
る。例外が投入されたと判定された場合、プロセスコン
トロールはステップ1316へ進み、そこで、投入され
たまたは返された例外を、引数として送り込んで、サー
バー呼出しオブジェクトのマーシャル例外メソッドが呼
出される。次にステップ1318において、サーバー呼
出しオブジェクトが破壊され、代表的な発送ルーチンを
実行するプロセスは完了する。サーバー呼出しオブジェ
クトを破壊するステップには、汎用コールバック・クロ
ージャへのコールが係わる。このクロージャは、マーシ
ャリング後、割当てられたメモリーをダイナミックスケ
ルトンが開放することを可能にする。ステップ1314
において例外が投入されなかったと判定された場合、プ
ロセスコントロールは直接ステップ1318へ進み、そ
こで、サーバー呼出しオブジェクトが破壊される。サー
バー呼出しオブジェクトが破壊された後、代表的な発送
ルーチンを実行するプロセスは完了する。発送クロージ
ャの呼出し、すなわちスケルトンの呼出しに係わるステ
ップを、図20と図21を参照して、以下に説明する。
【0086】次に図18を参照し、代表的なサーバー呼
出しオブジェクトの構造を、本発明の一実施例に従って
説明する。サーバー呼出しオブジェクト1408は、マ
ーシャルバッファー1410へのポインター、メソッド
デスクリプタ1412へのポインター、および呼出しデ
スクリプタへのポインター1414を含むデータ構造で
ある。サーバー呼出しオブジェクト1408は、分散オ
ブジェクトシステムのサーバー側においてメソッドの呼
出しに用いられる。具体的に、サーバー呼出しオブジェ
クト1408は、メソッドコールを実行するため、サー
バーが用いる機能性を含む。サーバー呼出しオブジェク
ト1408に係わるメソッドは他のメソッドによって上
書き(overwritten)できるものと解釈すべきである。こ
こに説明した実施例においては、サーバー呼出しオブジ
ェクトは、マーシャルメソッド、アンマーシャルメソッ
ド、およびマーシャル例外メソッドを持つC++オブジ
ェクト、すなわちデータ構造である。
【0087】サーバー呼出しオブジェクト1408はオ
プションとして、マーシャルバッファー1410へのポ
インター、メソッドデスクリプタ1412へのポインタ
ー、および呼出しデスクリプタへのポインター1414
以外の要素を含むことができる。例えば、サーバー呼出
しオブジェクト1408は、コンテクストが存在すれ
ば、コンテクスト1416へのポインター、および、コ
ールバック機能へのポインターとデータ要素、すなわち
クッキーへのポインターを含むコールバッククロージャ
をも含むことができる。ダイナミック・スケルトンイン
・ターフェイス(DSI)は、ダイナミック・スケルト
ン呼出し中に割当てられ、割当てられたメモリーが、マ
ーシャルされねばならないかまたはマーシャリングの結
果のために必要である結果またはデスクリプタを含むの
で破壊または返却され得なかったメモリーを破壊および
再割り当てするプロセスを助けるために、コールバック
クロージャ1418を用いることができる。サーバー呼
出しオブジェクト1408は、システムの要件次第で追
加のポインターと機能を含むことができるものと解釈す
べきである。
【0088】次に図19を参照して、サーバー呼出しオ
ブジェクトの作成メソッドを、本発明の一実施例に従っ
て説明する。すなわち、図19は図17のステップ13
08の全体図である。ステップ1402において、サー
バー呼出しオブジェクトは、サーバー呼出しオブジェク
トのコンストラクターメソッドをコールすることによっ
て初期化される。コンストラクターメソッドはデータ構
造の初期化に広く用いられており、当業者には周知であ
る。サブコントラクトはコンストラクターメソッドを用
いてサーバー呼出しオブジェクトを作成する。サブコン
トラクトは、作成されるべきサーバー呼出しオブジェク
トのタイプを判定する。具体的に、サブコントラクトは
任意のオプショナル要素、例えば図18について説明し
たような、サーバー呼出しオブジェクトの一部として含
めることのできる、コンテクストへのオプショナル・ポ
インターを判定する。しかし、この判定はサブコントラ
クト内において黙示的である。すなわち、与えられたサ
ブコントラクトは、同じトランスポート・エンドポイン
ト、すなわちオブジェクトに関して常に同種のサーバー
呼出しオブジェクトを作成する。 サーバー呼出しオブ
ジェクトが初期化された後、ステップ1404におい
て、適当なマーシャルバッファー、すなわちサーバー呼
出しオブジェクトに関連するマーシャルバッファーへの
ポインターがフィルイン(記入)される(filled in)。
次にステップ1406において、サーバー呼出しオブジ
ェクトに関連するメソッドデスクリプタへのポインター
がフィルインされる。いくつかの実施例において、メソ
ッドデスクリプタへのポインターは、マーシャルバッフ
ァーへのポインターがフィルインされる前にフィルイン
されてもよいと解釈すべきである。サーバー呼出しオブ
ジェクトは呼出しデスクリプタへのポインターを含む
が、このポインターは、サーバー呼出しオブジェクトが
作成された後、スケルトンによってフィルインされる。
メソッドデスクリプタへのポインターがフィルインされ
た後、サーバー呼出しオブジェクトを作成するステップ
は完了する。
【0089】次に図20を参照して、発送クロージャ、
またはスケルトンを呼出すステップ、すなわちスタティ
ックスケルトンである図17のステップ1312を、本
発明の一実施例に従って説明する。サーバー呼出しオブ
ジェクトへのポインターとサーバントへのポインターが
スケルトンを呼出すためのコールへ送り込まれると、ス
テップ1502において、ほとんどのプログラミング言
語において標準的なオペレーションであるコントロール
の切替えが発生する。サーバー呼出しオブジェクトに関
連するメソッドデスクリプタを用いて呼出しデスクリプ
タが識別された後、プロセスコントロールはステップ1
504へ進み、そこで呼出しデスクリプタへのポインタ
ーがフィルインされる。呼出しデスクリプタへのポイン
ターは上記のようにサーバー呼出しオブジェクトの一部
である。呼出しデスクリプタへのポインターがフィルイ
ンされた後、ステップ1506においてメモリーが割当
てられる。スケルトンは、割当てるべきメモリーの量を
決定する能力を持つ。イン・パラメータ・アドレス・リ
スト、すなわちメモリー場所リストが次にステップ15
08において設定される。イン・パラメータ・リスト
は、イン・引数がマーシャルされるべき場所へのポイン
ターのリストからなる。
【0090】イン・パラメータ・リストが設定された
後、プロセスの流れはステップ1510へ移行し、そこ
で、サーバー呼出しオブジェクトに関連するアンマーシ
ャルメソッドがイン・パラメータ・リストとともにコー
ルされる。コールされたアンマーシャルメソッドは特定
のサーバー呼出しオブジェクトに特有であって、IN
ESC、IN DESC COUNT、およびイン・パ
ラメータリストを送って、最終的に図14について上に
説明した一般的なアンマーシャリング・ルーチン、また
は同等のルーチンをコールする。ステップ1512にお
いて、メソッドデスクリプタによって識別されたサーバ
ントメソッドがコールされる。サーバントメソッドへの
コールによって例外が投入された場合、プロセスの流れ
は、図22のサーバー呼出しオブジェクトのマーシャル
例外メソッドの呼出しステップ1316へ進む。例外が
投入されなかった場合、サーバントメソッドへのコール
の後、ステップ1514においてサーバントメソッドか
ら返信(return)を受取る。サーバントメソッドはまた
「コールされた」メソッドとしても知られているかも知
れない。ステップ1516において、アウト・パラメー
タのリストが設定される。アウト・パラメータのリスト
は、アウト・引数を保持している場所へのポインターの
リストからなる。アウト・パラメータのリストが設定さ
れた後、ステップ1518においてアウト・パラメータ
のリストとともにサーバー呼出しオブジェクトのマーシ
ャルメソッドへコールが行われる。マーシャルメソッド
はOUT DESC、OUT DESC COUNT、お
よびアウト・パラメータリストを送って、最終的に図1
2について上に説明した一般的なマーシャルメソッド、
または同等のメソッドをコールする。マーシャルメソッ
ドへのコールが行われた後、スケルトンを呼出すプロセ
スは完了する。
【0091】次に図21を参照して、発送クロージャま
たはスケルトンの呼出しメソッド、すなわちダイナミッ
ク・スケルトン・インターフェイス(DSI)における
図17のステップ1312を、本発明の一実施例に従っ
て説明する。まず、サーバー呼出しオブジェクトへのポ
インターとサーバントアドレスへのポインターをコール
へ送ってDSIスケルトンを呼出す。次にステップ16
02において、サーバー呼出しオブジェクトによって指
示されたメソッドデスクリプタによって識別されたメソ
ッドに関する呼出しデスクリプタを作成または獲得す
る。デスクリプタの作成に必要な情報は、デスクリプタ
・データ構造としても知られ、インターフェイス・レポ
ジトリ内に含まれている。インターフェイスに関連する
情報を保存しているインターフェイス・レポジトリは、
呼出しデスクリプタをはじめ、必要なすべてのデスクリ
プタを作成するのに十分な情報を集めるため、精査され
る(traversed)。この情報は次にデスクリプタを作成す
るためDSIサブシステムによって用いられる。デスク
リプタは、必要になったとき、すなわち、インターフェ
イスレポジトリ内の情報を用いてメソッドが呼出された
とき作成されるものと理解すべきである。ダイナミック
の、またはタイプコードにより解釈される、マーシャリ
ングとアンマーシャリングは普通、予めコンパイルされ
たメソッドと呼出しデスクリプタを用いない。
【0092】呼出しデスクリプタが作成または獲得され
た後、プロセスの流れはステップ1604へ移行し、そ
こで、サーバー呼出しオブジェクト内に含まれている呼
出しデスクリプタがフィルイン(filled in 記入)され
る。次にステップ1606において、呼出しデスクリプ
タによって指示されたパラメータ・デスクリプタによっ
て与えられたタイプコードを用いて、引数用のメモリー
が割当てられる。受信プロセスによって割当てられねば
ならないメモリーの量に関する情報はタイプコードから
計算することができるので、パラメータ・デスクリプタ
内のサイズコードを明示的に(explicitly)与える必要は
ない。
【0093】メモリーが割当てられた後、ステップ16
08においてイン・パラメータ・リストが設定される。
すなわち、イン・引数がアンマーシャルされるべきポイ
ンターのリストが作成される。つぎに、ステップ161
0において、サーバー呼出しオブジェクトに関するアン
マーシャルメソッドへのコールが、引数とイン・パラメ
ータ・リストを用いて行われる。ステップ1612にお
いてイン・パラメータ・リストを用いてアンマーシャル
メソッドがコールされると、DSIサーバントの発送メ
ソッドへのコールが行われる。次にプロセスコントロー
ルはステップ1614へ進み、そこで、サーバントメソ
ッドからのリターン(回答)が受信される。サーバント
メソッドからのリターン(回答)の受信後、ステップ1
615において、例外が返されたか否か、判定される。
例外が返されたと判定された場合、ステップ1620に
おいてサーバー呼出しオブジェクトのマーシャル例外メ
ソッドが、例外において返された引数を用いて、コール
される。マーシャル例外メソッドへのコールが行われる
と、DSIスケルトンを呼出すプロセスは完了する。ス
テップ1615において、例外が返されなかったと判定
された場合、プロセスの流れはステップ1616へ進
み、そこで、アウト・パラメータ・リスト、すなわち、
アウト・引数がアンマーシャルされるべき場所へのポイ
ンターのリストが設定される。アウト・パラメータ・リ
ストが設定された後、ステップ1618において、アウ
ト・パラメータ・リストを引数として用いて、サーバー
呼出しオブジェクトのマーシャルメソッドが呼出され
る。マーシャルメソッドの呼出し後、DSIスケルトン
を呼出すプロセスは完了する。
【0094】サブコントラクトとトランスポートに係わ
るコードは、コンパイルされたマーシャリングおよびア
ンマーシャリングと、解釈されたマーシャリングおよび
アンマーシャリングの間の相違を意識しないものと理解
すべきである。更に、ダイナミックスケルトンとスタテ
ィックスケルトンは、当初サーバー呼出しオブジェクト
によって定義された同じインターフェイスを利用する。
サーバー呼出しオブジェクトに関連するマーシャルメソ
ッドは、最終的に包括的なマーシャルメソッドまたは同
等のメソッドをコールする。同様に、アンマーシャルメ
ソッドは、最終的に包括的なアンマーシャルメソッドま
たは同等のメソッドをコールする。引数のマーシャルと
アンマーシャルに関する詳細は、包括的なマーシャルメ
ソッドとアンマーシャルメソッドまたは同等のメソッド
内に埋め込まれて、すなわち隠されている。しかし、し
かしサーバー呼出しオブジェクトのマーシャルメソッド
とアンマーシャルメソッドには、多くの種類があり、そ
の数は、用いられる特定のサブコントラクトとトランス
ポートに依存する。
【0095】上記本発明は、コンピュータシステムに保
存されているデータに係わる様々なプロセスステップを
用いる。これらのステップは、物理量の物理的操作を必
要とするステップである。通常、必ずしも常にではない
が、これらの量は、保存、転送、結合、比較、その他の
操作を受けることのできる電気信号または磁気信号の形
をとる。それは時として、主に、これらの信号にビット
(bits)、値(values)、要素(elements)、変数(bariabe
s)、文字(characters)、データ構造(data structures)
などとして広く用いられるという理由で便利である。し
かし、これら用語や類似の用語は、適当な物理量に関連
づけられて、これらの量に貼り付けられる便利なラベル
に過ぎないことを忘れてはならない。
【0096】更に、実行される操作はしばしば、識別(i
dentifying)、実行(running)、または比較(comparing)
と称される。本発明の一部をなし、ここに述べられる任
意のオペレーションにおいて、これらのオペレーション
はマシーンオペレーションである。本発明のオペレーシ
ョンの実行に有用なマシーンには、汎用ディジタルコン
ピュータまたはその他類似の装置がある。あらゆる場合
に忘れてならないのは、コンピュータ操作における操作
メソッドとコンピューテーション自体のメソッドとの区
別である。本発明は、電気信号またはその他の物理信号
を処理して他の必要な物理信号を発生させるため、コン
ピュータを操作するためのメソッドステップに関する。
【0097】本発明はまた、これらのオペレーションを
実行するための装置にも関する。この装置は、必要な目
的のための特製品であっても、あるいはコンピュータ内
に保存されているコンピュータプログラムによって選択
的に起動される、あるいは再構成される(reconfigured)
汎用コンピュータであってもよい。本明細書に提示した
プロセスは、本質的に特定のコンピュータやその他の特
定の装置に関連するものではない。特に、本明細書の教
示に従って書かれるプログラムとともに様々な汎用マシ
ーンを使うことができ、あるいは、必要なメソッドステ
ップの実行するため更に専用化した装置を作れば更に便
利である。これら様々なマシーンの必要構造は上記説明
から明らかであろう。
【0098】本発明は更に、コンピュータによって実行
される様々なオペレーションのためのプログラムインス
トラクションを含む、コンピュータによって読むことの
できる媒体にも関する。この媒体とプログラムインスト
ラクションは、本発明の目的のために特別に設計製作さ
れたものでも、あるいはコンピュータソフトウェアの当
業者に周知かつ利用可能な種類のものであってもよい。
コンピュータによって読むことのできる媒体には、ハー
ドディスク、フロッピーディスク、および磁気テープな
どの磁気媒体;フロプティカルディスクのような磁気光
媒体;および、リードオンリーメモリー装置(ROM)
およびランダムアクセスメモリー(RAM)のような、
プログラムインストラクションの保存と実行のために特
別構成されたハードウェア装置がある。プログラムイン
ストラクションの例としては、コンパイラーによって作
られるようなマシーンコード、およびインタープリタ(i
nterpreter)を用いるコンピュータによって実行される
ハイレベルコードを含むファイルなど、両方がある。
【0099】図22は、本発明の一実施例による代表的
なコンピュータシステムを示す。コンピュータシステム
500は、主記憶装置(primary storage)504(普通
はリードオンリーメモリーすなわちROM)、および主
記憶装置(primary storage)506(普通はランダムア
クセスメモリー、すなわちRAM)を含む記憶装置(sto
rage devices)に接続された適当数のプロセッサー(中
央処理装置、すなわちCPU)を含む。この技術分野で
は周知のように、ROM 504は、データとインスト
ラクションを一方向にCPUに送るように作用し、RA
M 506は普通、データとインストラクションを双方
向に送るのに用いられる。これら両主記憶装置は、上記
の任意の適当なコンピュータ読取り可能な媒体を含むこ
とができる。大容量記憶装置(mass storage device)5
08もCPU 502に双方向的に接続して、追加の記
憶容量を提供し、上記の任意の適当なコンピュータ読取
り可能な媒体を含むことができる。大容量記憶装置50
8は、プログラム、データ等を記憶するために用いるこ
とができ、普通は主記憶装置504、506より遅いハ
ードディスクのような二次記憶媒体(secondary storage
medium)である。大容量記憶装置508は、磁気または
紙テープリーダーまたはその他周知の装置であればよ
い。大容量記憶装置508に保持された情報は、バーチ
ュアルメモリー(virtual memory)としてのRAM 50
6の一部として標準的なメソッドで適宜組み入れること
ができることが理解できる。CD−ROM 514のよ
うな特定の大容量記憶装置もデータを一方向にCPUへ
送ることができる。
【0100】CPU 502はまた、一つ以上の入出力
装置を備えたインターフェイス510に接続することが
でき、入手力装置としては、限定はしないが、ビデオモ
ニター、トラックボール、マウス、キーボード、マイク
ロホン、タッチ感知ディスプレイ、トランスデューサー
カードリーダー、磁気または紙テープリーダー、タブレ
ット、スタイラス、音声または手書き認識装置、または
もちろんコンピュータのような他の周知の入力装置があ
る。最後に、CPU 502 は、コンピュータまたは一
般的に512で示したネットワーク接続を用いた遠隔通
信ネットワークにオプション的に接続することができ
る。そのようなネットワーク接続を用いると、上記メソ
ッドステップの実行中に、CPUがネットワークから情
報を受け取ったり、あるいは情報をネットワークへ出力
したりすることが考えられる。上記装置や材料はコンピ
ュータのハードウェアやソフトウェアの技術の当業者に
はなじみである。
【0101】本発明の好ましい実施例を一例のみ説明し
たが、本発明はその精神または範囲からかけ離れること
なく、他の多くの具体的形態において実施することがで
きるものと理解すべきである。上記実施例においては、
メソッドデスクリプタ、呼出しデスクリプタ、パラメー
タ・デスクリプタ、および例外デスクリプタに関する具
体的なデータ構造を説明した。これらのデータ構造を本
発明の範囲内において大幅に変更し得ることは明らかで
ある。同様に、引数をマーシャルおよびアンマーシャル
するメソッドも、本発明の範囲内において大幅に変更し
得ることは明らかである。例えば、引数をマーシャルお
よびアンマーシャルするメソッドの順序を入れ替えるこ
とができる。各ステップも、本発明の精神または範囲か
らかけ離れることなく、削除または追加が可能である。
【0102】更に、いくつかの状況において、共通のオ
ブジェクト、例えばパラメータに関連するマーシャルメ
ソッドおよびアンマーシャルメソッドを一つのメソッド
に結びつけることができる。マーシャルメソッドとアン
マーシャルメソッドが同一である場合、機能コールにお
ける引数の追加を用いて、マーシャリングまたはアンマ
ーシャリングの要否を指定することができる。マーシャ
ルメソッドとアンマーシャルメソッドが個別である場
合、新しい機能を作成して両方のメソッドを実行するこ
とができる。この新機能は、求められたメソッドがマー
シャルであるかアンマーシャルであるかを指定する機能
コールへの引数を含むことができる。単一の機能がマー
シャルとアンマーシャルの両方を表わしている場合、マ
ーシャルメソッドとアンマーシャルメソッドへのポイン
ターを持つタイプコードおよびデスクリプタのデータ構
造においては、一つのポインターを用いて単一の機能を
指示することができる。ブール値またはフラッグを、デ
スクリプタ・データ構造がマーシャリングまたはアンマ
ーシャリングを必要としているか否か示すデスクリプタ
・データ構造の中へ、実行することができる。従って、
上記実施例は説明的であって限定的ではないと解釈すべ
きであり、本発明は下記特許請求の範囲とその同等の全
範囲によって定義される。
【図面の簡単な説明】
【図1】分散オブジェクトシステムの象徴的概観図であ
る。
【図2】クライアントからのリクエストが、分散オブジ
ェクト指向システムのクライアント側およびサーバー側
の構造と、分散オブジェクト指向システムのクライアン
ト側およびサーバー側との間のインターフェイスを介し
て回送される様子を表すダイヤグラム図である。
【図3】オブジェクトレファレンスのダイヤグラム図で
ある。
【図4】本発明の一実施例によるメソッドデスクリプタ
のダイヤグラム図である。
【図5】本発明の一実施例による呼出しデスクリプタの
ダイヤグラム図である。
【図6】本発明の一実施例によるパラメータデスクリプ
タのダイヤグラム図である。
【図7】本発明の一実施例による例外デスクリプタのダ
イヤグラム図である。
【図8】本発明の一実施例による分散オブジェクト指向
システムのクライアント側における呼出しメソッドへの
コールの説明図である。
【図9】本発明の一実施例による、オブジェクトの呼び
出しに係れるステップを示すプロセス流れ図である。
【図10】本発明の一実施例によるリモートスタブの実
行に係わるステップを示すプロセス流れ図である。
【図11】本発明の一実施例によるクライアント表現の
呼出しメソッドをコールするリモートスタブに係わるス
テップを示すプロセス流れ図である。
【図12】本発明の第一実施例によるデスクリプタを用
いる引数のマーシャリングに係わるステップを示プロセ
ス流れ図である。
【図13】本発明の一実施例によるデスクリプタを用い
る引数のアンマーシャリングに係わるステップを示プロ
セス流れ図である。
【図14】本発明の一実施例によるデスクリプタを用い
る引数の包括的なアンマーシャルに係わるステップを示
プロセス流れ図である。
【図15】本発明の一実施例によるユーザー例外ルーチ
ンのコールに係わるステップを示プロセス流れ図であ
る。
【図16】本発明の一実施例による、特定の受信エンド
ポイントにリクエストが受信されたとき分散オブジェク
ト指向システムのサーバー側に発生するステップを示プ
ロセス流れ図である。
【図17】本発明の一実施例による代表的な発送ルーチ
ンの実行に係わるステップを示プロセス流れ図である。
【図18】本発明の一実施例によるサーバー呼出しオブ
ジェクトのダイヤグラム図である。
【図19】本発明の一実施例によるサーバー呼出しオブ
ジェクトの作成に係わるステップを示プロセス流れ図で
ある。
【図20】本発明の一実施例によるスタティックである
スケルトンの呼出しに係わるステップを示プロセス流れ
図である。
【図21】本発明の一実施例によるダイナミック・スケ
ルトン・インターフェイスにおけるスケルトンの呼出し
に係わるステップを示プロセス流れ図である。
【図22】本発明による代表的なコンピュータシステム
を示す図である。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ピーター ビー. ケスラー アメリカ合衆国, カリフォルニア州, パロ アルト, ヴァードサ ドライヴ 4121 (72)発明者 デイヴィッド エム. ブローネル アメリカ合衆国, カリフォルニア州, パロ アルト, パーク ブルヴァード 2569, ナンバーティー−201

Claims (35)

    【特許請求の範囲】
  1. 【請求項1】異なるオブジェクト間の通信を容易にする
    ためのオブジェクトリクエストブローカーを利用する分
    散オペレーティング環境で使用されるデスクリプタ・デ
    ータ構造であって、 該デスクリプタ・データ構造に関連するエンティティを
    記述するように構成されタイプコードインジケータ、 該エンティティをマーシャルするのに適したマーシャル
    機能を識別するように構成されたマーシャル機能識別
    子、および該エンティティをアンマーシャルするのに適
    したアンマーシャル機能を識別するように構成されたア
    ンマーシャル機能識別子、を含むデスクリプタ・データ
    構造。
  2. 【請求項2】該エンティティの期待される使用の性質を
    示す処理方向を識別するように構成された方向インジケ
    ータを含み、該方向インジケータの潜在的状態は、該エ
    ンティティがクライアントからサーバーへの引数であり
    得ることを示すイン方向状態と、該エンティティが該サ
    ーバーから該クライアントへの引数であり得ることを示
    すアウト方向状態と、該エンティティが該クライアント
    から該サーバーへと該クライアントから該サーバーへの
    両方の引数であり得ることを示すイン/アウト方向状態
    と、該エンティティがコールリターン状態アウト方向状
    態を更に含む請求項1に記載のデスクリプタ・データ構
    造。
  3. 【請求項3】該エンティティ用の名前を提供する少なく
    とも一つのネームインジケータ、該エンティティを受け
    取るために受取プロセスによって割り当てられるべきメ
    モリの量を示すサイズインジケータ、該エンティティ用
    のローカルネームを提供するように構成されたキー、該
    エンティティを一義的に識別するように構成されたレポ
    ジトリ識別子、および投入機能(throw function)がコー
    ルされたときに該エンティティの性質を規定するように
    構成された投入機能を識別するように構成された投入機
    能識別子、を更に含む請求項1または2に記載のデスク
    リプタ・データ構造。
  4. 【請求項4】該デスクリプタ・データ構造がパラメータ
    デスクリプタである請求項1〜3のいずれかに記載のデ
    スクリプタ・データ構造。
  5. 【請求項5】該デスクリプタ・データ構造が例外デスク
    リプタである請求項1〜3のいずれかに記載のデスクリ
    プタ・データ構造。
  6. 【請求項6】異なるオブジェクト間の通信を容易にする
    ためのオブジェクトリクエストブローカーを利用する分
    散オペレーティング環境で使用される例外デスクリプタ
    データ構造であって、該例外デスクリプタデータ構造
    が、 関連例外を記述するように構成されたタイプコードイン
    ジケータ、および投入機能がコールされたときに該例外
    の性質を規定するように構成された投入機能を識別する
    ように構成された投入機能インジケータ、を含む例外デ
    スクリプタ・データ構造。
  7. 【請求項7】該パラメータをマーシャルするのに適した
    マーシャル機能を識別するように構成されたマーシャル
    機能識別子、および該パラメータをアンマーシャルする
    のに適したアンマーシャル機能を識別するように構成さ
    れたアンマーシャル機能識別子を更に含む請求項6に記
    載の例外デスクリプタ・データ構造。
  8. 【請求項8】該例外用のローカルネームを提供するよう
    に構成されたキーを備えた請求項7に記載の例外デスク
    リプタ・データ構造。
  9. 【請求項9】該例外を一義的に識別するように構成され
    たレポジトリ識別子を更に含む請求項6、7または8に
    記載の例外デスクリプタ・データ構造。
  10. 【請求項10】異なるオブジェクト間の通信を容易にす
    るためのオブジェクトリクエストブローカーを利用する
    分散オペレーティング環境で使用される呼出デスクリプ
    タデータ構造であって、該呼出デスクリプタデータ構造
    が、 呼出経路タイプを識別するように構成されたコンパイル
    フラグを更に含み、 該コンパイルされたフラグの第1状態は、該呼出経路タ
    イプが、該呼出の促進のために必要なマーシャルおよび
    アンマーシャル機能をプレコンパイル(precompiled) し
    たスタティックな、コンパイルされた呼出(compiled in
    vocation) であることを示すと共に、該コンパイルされ
    たフラグの第2状態は、該呼出経路タイプが、該呼出の
    促進のために必要なマーシャルおよびアンマーシャル機
    能をプレコンパイルしないダイナミックな、タイプコー
    ドで解釈された呼出(typecode interpreted invocatio
    n) であることを示す、呼出デスクリプタ・データ構
    造。
  11. 【請求項11】該呼出デスクリプタ・データ構造に関連
    するパラメータの特性を記述するパラメータデスクリプ
    タ・データ構造のアレイへのポインタ、および該呼出デ
    スクリプタ・データ構造に関連する例外の特性を記述す
    る例外デスクリプタ・データ構造へのポインタ(複数)
    のアレイへのポインタ(単数)を更に含む請求項10に
    記載の呼出デスクリプタ・データ構造。
  12. 【請求項12】該呼出デスクリプタ・データ構造に関連
    するパラメータの数を示すデスクリプタカウンタを更に
    含む請求項10または11に記載の呼出デスクリプタ・
    データ構造。
  13. 【請求項13】該呼出デスクリプタ・データ構造に関連
    するバッファをクリアーするのに役立つ再初期化機能へ
    のポインタ、および該呼出デスクリプタ・データ構造に
    関連するメソッドに関係する情報を含むコンテクストデ
    スクリプタを更に含む請求項10〜12のいずれかに記
    載の呼出デスクリプタ・データ構造。
  14. 【請求項14】分散クライアント/サーバー・ベースの
    コンピューティングシステムにおいて、遠隔的に配置さ
    れたオブジェクトをコールするメソッドであって、 クライアントプロセス内でリクエストを受け取るステッ
    プ、 該リクエストをマーシャルするために用いられる、該リ
    クエストに適したトランスポート、を選択するステッ
    プ、 該リクエストをカプセル化するために用いられる、該選
    択されたトランスポートに適したマーシャルバッファ、
    を作成するステップ、 該マーシャルメソッドがタイプコードで解釈されたかコ
    ンパイルされたかを示すために用いられるコンパイルさ
    れたフラグを含む、マーシャルメソッドを利用したデス
    クリプタ・データ構造、を用いて引数をマーシャルする
    ステップ、および該コンパイルされたフラグがセットさ
    れるか否かを決定するステップであって、該コンパイル
    されたフラグがセットされると決定されたときは、該引
    数マーシャリングステップは、該リクエストに関連する
    該引数に関連するマーシャルメソッドを呼び出すことに
    よって達成されると共に、該コンパイルされたフラグが
    セットされないと決定されたときは、該引数マーシャリ
    ングステップは、該引数をタイプコードマーシャリング
    ルーチンにパスしてタイプコードマーシャリングルーチ
    ンを呼び出すことによって達成されるように成したステ
    ップ、を含むメソッド。
  15. 【請求項15】分散クライアント/サーバー・ベースの
    コンピューティングシステムにおいて、遠隔的に配置さ
    れたオブジェクトをコールするメソッドであって、 クライアントプロセス内で、アドレス内の場所に格納さ
    れた少なくとも一つの引数を含むリクエストを受け取る
    ステップ、 該リクエストに適したトランスポートを選択するステッ
    プ、 該リクエストをカプセル化するために用いられる、該選
    択されたトランスポートに適したマーシャルバッファ、
    を作成するステップ、 該リクエストがタイプコードで解釈されたかコンパイル
    されたかを示すために用いられるコンパイルされたフラ
    グを含む呼出デスクリプタ・データ構造と複数のパラメ
    ータデスクリプタとを含むデスクリプタ・データ構造を
    使って、該リクエストの中の該引数をマーシャルするの
    に適したマーシャル機能を選択するステップ、 該コンパイルされたフラグがセットされるか否かを決定
    するステップ、および該引数をマーシャルするステップ
    であって、該コンパイルされたフラグがセットされると
    決定されたときは、該引数マーシャリングステップは、
    該引数に関連するパラメータデスクリプタによって識別
    されたマーシャルメソッドを呼び出すことによって達成
    されると共に、該コンパイルされたフラグがセットされ
    ないと決定されたときは、該引数マーシャリングステッ
    プは、タイプコード解釈を使用して識別されたマーシャ
    リングメソッドを呼び出すことによって達成されるよう
    に成したステップ、を含むメソッド。
  16. 【請求項16】該デスクリプタ・データ構造を使って該
    リクエストの中の該引数をアンマーシャルするのに適し
    たアンマーシャル機能を選択するステップ、および該コ
    ンパイルされたフラグがセットされるか否かを決定する
    ステップであって、該コンパイルされたフラグがセット
    されると決定されたときは、該引数アンマーシャリング
    ステップは、該引数に関連するパラメータデスクリプタ
    によって識別されたアンマーシャルメソッドを呼び出す
    ことによって達成されると共に、該コンパイルされたフ
    ラグがセットされないと決定されたときは、該引数アン
    マーシャリングステップは、タイプコード解釈を使用し
    て識別されたアンマーシャルメソッドを呼び出すことに
    よって達成されるように成したステップを更に含む請求
    項15に記載のメソッド。
  17. 【請求項17】該パラメータデスクリプタによって識別
    された該マーシャルメソッドが該引数をパスされると共
    に、タイプコードの解釈を使って識別された該マーシャ
    ルメソッドが該引数と関連タイプコードとをパスされる
    請求項15または16に記載のメソッド。
  18. 【請求項18】該マーシャルメソッドの一つにパスされ
    た各引数が、該引数を格納するメモリ場所を定めるアド
    レスの形をとる請求項17に記載のメソッド。
  19. 【請求項19】該パラメータデスクリプタによって識別
    された該アンマーシャルメソッドが該引数をパスされる
    と共に、タイプコードの解釈を使って識別された該アン
    マーシャルメソッドが該引数と関連タイプコードとをパ
    スされる請求項15〜18のいずれかに記載のメソッ
    ド。
  20. 【請求項20】該アンマーシャルメソッドの一つにパス
    された各引数が、該引数を格納するメモリ場所を定める
    アドレスの形をとる請求項19に記載のメソッド。
  21. 【請求項21】該リクエストがそれに関連する一つ以上
    の引数を有するときに、該コンパイルされたフラグがセ
    ットされると決定されたときは、該引数マーシャリング
    ステップは、該引数の各々に関連するマーシャルメソッ
    ドを逐次呼び出すことによって達成されると共に、該コ
    ンパイルされたフラグがセットされないと決定されたと
    きは、該引数マーシャリングステップは、該引数をそれ
    らの関連タイプコードマーシャリングルーチンにパスし
    て該引数の各々に関連するタイプコードマーシャリング
    ルーチンを逐次呼び出すことによって達成される請求項
    15〜20のいずれかに記載のメソッド。
  22. 【請求項22】該リクエストを該選択されたトランスポ
    ートを介して、サーバープロセスに関連する識別された
    エンドポイントまで伝送するステップ、および回答を該
    サーバープロセスから受け取るステップを更に含む請求
    項15〜21のいずれかに記載のメソッド。
  23. 【請求項23】異なるオブジェクト間の通信を容易にす
    るためのオブジェクトリクエストブローカーを利用する
    分散オペレーティング環境でメソッドコールを実行する
    場所に使用されるサーバー呼出オブジェクトであって、 該サーバー呼出オブジェクト用の関連マーシャルバッフ
    ァを識別するように構成された第1ポインタ、 サーバー呼出オブジェクト用の関連メソッドデスクリプ
    タを識別するように構成された第2ポインタ、および引
    数を含む、該サーバー呼出オブジェクト用の関連呼出デ
    スクリプタ、を識別するように構成された第3ポイン
    タ、を含むサーバー呼出オブジェクト。
  24. 【請求項24】該サーバー呼出オブジェクト用の関連コ
    ンテクストを識別するように構成された第4ポインタを
    更に含む請求項23に記載のサーバー呼出オブジェク
    ト。
  25. 【請求項25】コールバック機能を識別するように構成
    された第5ポインタと、該サーバー呼出オブジェクト用
    のデータエレメントを識別するように構成された追加ポ
    インタとを含むように構成されたコールバッククロージ
    ャを更に含む請求項23または24に記載のサーバー呼
    出オブジェクト。
  26. 【請求項26】該関連呼出デスクリプタが少なくとも一
    つの関連パラメータデスクリプタを識別する請求項23
    〜25のいずれかに記載のサーバー呼出オブジェクト。
  27. 【請求項27】該関連パラメータデスクリプタが、該呼
    出デスクリプタ内の該引数をマーシャルおよびアンマー
    シャルするために汎用マーシャルおよびアンマーシャル
    メソッドをコールするように構成されたマーシャルおよ
    びアンマーシャルメソッドを識別する請求項26に記載
    のサーバー呼出オブジェクト。
  28. 【請求項28】分散オブジェクトコンピューティングシ
    ステム内の分散サーバーオブジェクト上で定義されたオ
    ブジェクトメソッドを呼び出すためにコンピュータ読取
    り可能コードが具体化されたコンピュータ使用可能媒体
    を含むコンピュータプログラムプロダクトであって、該
    コンピュータプログラムプロダクトが該コンピュータシ
    ステム内で、 クライアントプロセス内でリクエストを受け取るステッ
    プ、 該リクエストをマーシャルするために用いられる、該リ
    クエストに適したトランスポート、を選択するステッ
    プ、 該リクエストをカプセル化するために用いられる、該選
    択されたトランスポートに適したマーシャルバッファ、
    を作成するステップ、 該マーシャルメソッドがタイプコードで解釈されたかコ
    ンパイルされたかを示すために用いられるコンパイルさ
    れたフラグを含む、マーシャルメソッドを利用したデス
    クリプタ・データ構造、を用いて引数をマーシャルする
    ステップ、および該コンパイルされたフラグがセットさ
    れるか否かを決定するステップであって、該コンパイル
    されたフラグがセットされると決定されたときは、該引
    数マーシャリングステップは、該リクエストに関連する
    該引数に関連するマーシャルメソッドを呼び出すことに
    よって達成されると共に、該コンパイルされたフラグが
    セットされないと決定されたときは、該引数マーシャリ
    ングステップは、該引数をタイプコードマーシャリング
    ルーチンにパスしてタイプコードマーシャリングルーチ
    ンを呼び出すことによって達成されるように成したステ
    ップをもたらすためのコンピュータ読取り可能プログラ
    ムコードを備えたコンピュータプログラムプロダクト。
  29. 【請求項29】分散オブジェクトコンピューティングシ
    ステム内の分散サーバーオブジェクト上で定義されたオ
    ブジェクトメソッドを呼び出すためにコンピュータ読取
    り可能コードが具体化されたコンピュータ使用可能媒体
    を含むコンピュータプログラムプロダクトであって、該
    コンピュータプログラムプロダクトが該コンピュータシ
    ステム内で、 クライアントプロセス内で、アドレス内の場所に格納さ
    れた少なくとも一つの引数を含むリクエストを受け取る
    ステップ、 該リクエストに適したトランスポートを選択するステッ
    プ、 該リクエストをカプセル化するために用いられる、該選
    択されたトランスポートに適したマーシャルバッファ、
    を作成するステップ、 該リクエストがタイプコードで解釈されたかコンパイル
    されたかを示すために用いられるコンパイルされたフラ
    グを含む呼出デスクリプタ・データ構造と、複数のパラ
    メータデスクリプタとを含むデスクリプタ・データ構造
    を使って、該リクエストの中の該引数をマーシャルする
    のに適したマーシャル機能を選択するステップ、 該コンパイルされたフラグがセットされるか否かを決定
    するステップ、および該引数をマーシャルするステップ
    であって、該コンパイルされたフラグがセットされると
    決定されたときは、該引数マーシャリングステップは、
    該引数に関連するパラメータデスクリプタによって識別
    されるマーシャルメソッドを呼び出すことによって達成
    されると共に、該コンパイルされたフラグがセットされ
    ないと決定されたときは、該引数マーシャリングステッ
    プは、タイプコード解釈を使用して識別されたマーシャ
    リングメソッドを呼び出すことによって達成されるよう
    に成したステップをもたらすためのコンピュータ読取り
    可能プログラムコードを備えたコンピュータプログラム
    プロダクト。
  30. 【請求項30】30.該パラメータデスクリプタによっ
    て識別された該マーシャルメソッドが該引数をパスさせ
    ると共に、タイプコードの解釈を使って識別された該マ
    ーシャルメソッドが該引数と関連タイプコードとをパス
    される請求項29に記載のコンピュータ読取り可能プロ
    グラムコードを備えたコンピュータプログラムプロダク
    ト。
  31. 【請求項31】該マーシャルメソッドの一つにパスされ
    た各引数が、該引数を格納するメモリ場所を定めるアド
    レスの形をとる請求項30に記載のコンピュータ読取り
    可能プログラムコードを備えたコンピュータプログラム
    プロダクト。
  32. 【請求項32】該リクエストを該選択されたトランスポ
    ートを介して、サーバープロセスに関連する識別された
    エンドポイントまで伝送するステップ、および回答を該
    サーバープロセスから受け取るステップを更に含む請求
    項29〜31のいずれかに記載のコンピュータ読取り可
    能プログラムコードを備えたコンピュータプログラムプ
    ロダクト。
  33. 【請求項33】該サーバープロセスから回答を受け取る
    ステップが、更に、該パラメータデスクリプタによって
    識別されたマーシャル機能を使って該マーシャルバッフ
    ァ内で該回答をカプセル化するステップを含む請求項3
    2に記載のコンピュータ読取り可能プログラムコードを
    含むコンピュータプログラムプロダクト。
  34. 【請求項34】回答の一部として受け取られた例外を扱
    うためにコンピュータ読取り可能コードが具体化された
    コンピュータ使用可能媒体を含むコンピュータプログラ
    ムプロダクトであって、該回答が分散オブジェクトコン
    ピュータシステム内でクライアントによってサーバーに
    対して行なわれるリクエストに応じて該サーバーから該
    クライアントによって受け取られ、該コンピュータプロ
    グラムプロダクトが該コンピュータシステム内に、 該クライアントに関連するホストマシン上のマーシャル
    バッファ内で回答を受け取るステップ、 該回答の中の引数が、所定の例外リターンポインタの形
    で該サーバーによって提起された(raised)システム例外
    であるか否かを決定するステップ、 システム例外が例外リターンポインタの形でサーバーに
    よって提起されたときに、該例外リターンポインタの中
    に示された値に一致するキー用の例外デスクリプタ・レ
    ポジトリを探索するステップ、および一致するキーが発
    見されたとき、投入機能コールと共に該マーシャルバッ
    ファにポインタをパスして、該一致したキーに関連する
    投入機能をコールするステップをもたらすためのコンピ
    ュータ読取り可能プログラムコードを含む該コンピュー
    タプログラムプロダクト。
  35. 【請求項35】分散クライアント/サーバー・ベースの
    コンピューティングシステム内でサーバーオブジェクト
    の実行を呼び出す場合に使用されるコンピュータ装置で
    あって、 中央処理ユニット、 該中央処理ユニットに連結された入/出力装置、 請求項1〜5のいずれかに記載のデータ構造を含む、該
    中央処理ユニットと通信するランダムアクセスメモリ、
    および該中央処理ユニットと通信する大量記憶装置、を
    含むコンピュータ装置。
JP9170765A 1996-06-26 1997-06-26 タイプコードで解釈されコンパイル(編集)されたマーシャリングを可能にするトランスポートから独立した呼出しとサーバントインターフェイス Pending JPH1063506A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/673,181 US6032199A (en) 1996-06-26 1996-06-26 Transport independent invocation and servant interfaces that permit both typecode interpreted and compiled marshaling
US08/673181 1996-06-26

Publications (1)

Publication Number Publication Date
JPH1063506A true JPH1063506A (ja) 1998-03-06

Family

ID=24701602

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9170765A Pending JPH1063506A (ja) 1996-06-26 1997-06-26 タイプコードで解釈されコンパイル(編集)されたマーシャリングを可能にするトランスポートから独立した呼出しとサーバントインターフェイス

Country Status (4)

Country Link
US (3) US6032199A (ja)
EP (1) EP0817027B1 (ja)
JP (1) JPH1063506A (ja)
DE (1) DE69734175T2 (ja)

Families Citing this family (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5991535A (en) * 1996-07-03 1999-11-23 Sun Microsystems, Inc. Visual composition tool for constructing application programs using distributed objects on a distributed object network
US6496865B1 (en) * 1997-03-12 2002-12-17 Novell, Inc. System and method for providing interpreter applications access to server resources in a distributed network
JP3817823B2 (ja) * 1997-04-10 2006-09-06 ソニー株式会社 データ通信方法
US6405264B1 (en) * 1997-12-18 2002-06-11 Sun Microsystems, Inc. Marshaling and unmarshaling framework for supporting filters in a distributed object system
US6298391B1 (en) 1998-03-13 2001-10-02 Microsoft Corporation Remote procedure calling with marshaling and unmarshaling of arbitrary non-conformant pointer sizes
US8650320B1 (en) * 1998-03-23 2014-02-11 Software Ag Integration server supporting multiple receiving channels
US9066695B2 (en) 1998-04-30 2015-06-30 Abbott Diabetes Care Inc. Analyte monitoring device and methods of use
US6949816B2 (en) 2003-04-21 2005-09-27 Motorola, Inc. Semiconductor component having first surface area for electrically coupling to a semiconductor chip and second surface area for electrically coupling to a substrate, and method of manufacturing same
US8480580B2 (en) 1998-04-30 2013-07-09 Abbott Diabetes Care Inc. Analyte monitoring device and methods of use
US6175752B1 (en) 1998-04-30 2001-01-16 Therasense, Inc. Analyte monitoring device and methods of use
US8688188B2 (en) 1998-04-30 2014-04-01 Abbott Diabetes Care Inc. Analyte monitoring device and methods of use
US8465425B2 (en) 1998-04-30 2013-06-18 Abbott Diabetes Care Inc. Analyte monitoring device and methods of use
US8974386B2 (en) 1998-04-30 2015-03-10 Abbott Diabetes Care Inc. Analyte monitoring device and methods of use
US8346337B2 (en) 1998-04-30 2013-01-01 Abbott Diabetes Care Inc. Analyte monitoring device and methods of use
US6195685B1 (en) * 1998-05-22 2001-02-27 International Business Machines Corporation Flexible event sharing, batching, and state consistency mechanisms for interactive applications
US6222916B1 (en) * 1998-05-22 2001-04-24 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for introducing and modifying telecommunications services
US6353837B1 (en) * 1998-06-30 2002-03-05 Emc Corporation Method and apparatus providing mass storage access from systems using different meta-data formats
US20060241943A1 (en) * 2005-02-16 2006-10-26 Anuthep Benja-Athon Medical vocabulary templates in speech recognition
US6907609B1 (en) * 1999-02-01 2005-06-14 Iona Technologies Plc. Object request dispatch using matching of a segmented object key
US6711629B1 (en) * 1999-10-18 2004-03-23 Fisher-Rosemount Systems, Inc. Transparent support of remote I/O in a process control system
US6658660B1 (en) * 1999-12-31 2003-12-02 Nortel Networks Limited System and method of automatically modifying source code for marshaling, unmarshaling and marking modified data objects
FI20001617A (fi) * 2000-07-06 2002-01-07 Nokia Mobile Phones Ltd Tiedonsiirtomenetelmõ ja -jõrjestely
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
US6560471B1 (en) 2001-01-02 2003-05-06 Therasense, Inc. Analyte monitoring device and methods of use
US7041468B2 (en) 2001-04-02 2006-05-09 Therasense, Inc. Blood glucose tracking apparatus and methods
FI20011239A (fi) 2001-06-12 2002-12-13 Nokia Corp Tiedonsiirtomenetelmä ja -järjestely
US7032230B2 (en) * 2001-08-27 2006-04-18 International Business Machines Corporation Efficient virtual function calls for compiled/interpreted environments
US20030192038A1 (en) * 2002-04-09 2003-10-09 Thomas Hagmann Linking data objects to a project development system
WO2004023300A2 (en) * 2002-09-06 2004-03-18 Eftia Oss Solutions Inc. System-to-system inter-operation interface
US7811231B2 (en) 2002-12-31 2010-10-12 Abbott Diabetes Care Inc. Continuous glucose monitoring system and methods of use
US7587287B2 (en) * 2003-04-04 2009-09-08 Abbott Diabetes Care Inc. Method and system for transferring analyte test data
US8066639B2 (en) * 2003-06-10 2011-11-29 Abbott Diabetes Care Inc. Glucose measuring device for use in personal area network
EP1718198A4 (en) 2004-02-17 2008-06-04 Therasense Inc METHOD AND SYSTEM FOR PROVIDING DATA COMMUNICATION IN A CONTINUOUS BLOOD SUGAR MONITORING AND MANAGEMENT SYSTEM
US8312473B2 (en) * 2004-04-26 2012-11-13 Sony Computer Entertainment Inc. Specifying parameters for selective return to an invoker
US7921216B2 (en) * 2005-02-01 2011-04-05 Microsoft Corporation System and method for building and using communication binding objects
US20060247504A1 (en) * 2005-04-29 2006-11-02 Honeywell International, Inc. Residential monitoring system for selected parameters
US8112240B2 (en) 2005-04-29 2012-02-07 Abbott Diabetes Care Inc. Method and apparatus for providing leak detection in data monitoring and management systems
US7881939B2 (en) * 2005-05-31 2011-02-01 Honeywell International Inc. Monitoring system with speech recognition
US7405653B2 (en) * 2005-06-13 2008-07-29 Honeywell International Inc. System for monitoring activities and location
US9060681B2 (en) * 2005-06-30 2015-06-23 Honeywell International Inc. Trend monitoring system with multiple access levels
US20070024439A1 (en) * 2005-07-26 2007-02-01 Tice Lee D Monitoring system for a residence
CA2618004A1 (en) * 2005-08-08 2007-02-15 Guardian Industries Corp. Transparent articles with anti-reflective coating and methods of making the same
US8117045B2 (en) 2005-09-12 2012-02-14 Mymedicalrecords.Com, Inc. Method and system for providing online medical records
US8121855B2 (en) * 2005-09-12 2012-02-21 Mymedicalrecords.Com, Inc. Method and system for providing online medical records
US7511623B2 (en) * 2005-09-14 2009-03-31 Honeywell International Inc. In-residence monitoring system incorporating voice output
US7766829B2 (en) 2005-11-04 2010-08-03 Abbott Diabetes Care Inc. Method and system for providing basal profile modification in analyte monitoring and management systems
US7620438B2 (en) 2006-03-31 2009-11-17 Abbott Diabetes Care Inc. Method and system for powering an electronic device
US8226891B2 (en) 2006-03-31 2012-07-24 Abbott Diabetes Care Inc. Analyte monitoring devices and methods therefor
US20080071158A1 (en) 2006-06-07 2008-03-20 Abbott Diabetes Care, Inc. Analyte monitoring system and method
US8732188B2 (en) 2007-02-18 2014-05-20 Abbott Diabetes Care Inc. Method and system for providing contextual based medication dosage determination
US8930203B2 (en) 2007-02-18 2015-01-06 Abbott Diabetes Care Inc. Multi-function analyte test device and methods therefor
US8123686B2 (en) 2007-03-01 2012-02-28 Abbott Diabetes Care Inc. Method and apparatus for providing rolling data in communication systems
US20080249805A1 (en) * 2007-04-04 2008-10-09 Amit Kumar Singh Smart clinical data clipboard
US8665091B2 (en) 2007-05-08 2014-03-04 Abbott Diabetes Care Inc. Method and device for determining elapsed sensor life
US7928850B2 (en) 2007-05-08 2011-04-19 Abbott Diabetes Care Inc. Analyte monitoring system and methods
US8461985B2 (en) 2007-05-08 2013-06-11 Abbott Diabetes Care Inc. Analyte monitoring system and methods
US8456301B2 (en) 2007-05-08 2013-06-04 Abbott Diabetes Care Inc. Analyte monitoring system and methods
US8103456B2 (en) 2009-01-29 2012-01-24 Abbott Diabetes Care Inc. Method and device for early signal attenuation detection using blood glucose measurements
WO2010127050A1 (en) 2009-04-28 2010-11-04 Abbott Diabetes Care Inc. Error detection in critical repeating data in a wireless sensor system
WO2010138856A1 (en) 2009-05-29 2010-12-02 Abbott Diabetes Care Inc. Medical device antenna systems having external antenna configurations
WO2011026148A1 (en) 2009-08-31 2011-03-03 Abbott Diabetes Care Inc. Analyte monitoring system and methods for managing power and noise
WO2011026147A1 (en) 2009-08-31 2011-03-03 Abbott Diabetes Care Inc. Analyte signal processing device and methods
EP2482720A4 (en) 2009-09-29 2014-04-23 Abbott Diabetes Care Inc METHOD AND APPARATUS FOR PROVIDING NOTIFICATION FUNCTION IN SUBSTANCE MONITORING SYSTEMS
US20110314256A1 (en) * 2010-06-18 2011-12-22 Microsoft Corporation Data Parallel Programming Model
US8589867B2 (en) 2010-06-18 2013-11-19 Microsoft Corporation Compiler-generated invocation stubs for data parallel programming model
US9980669B2 (en) 2011-11-07 2018-05-29 Abbott Diabetes Care Inc. Analyte monitoring device and methods
US9968306B2 (en) 2012-09-17 2018-05-15 Abbott Diabetes Care Inc. Methods and apparatuses for providing adverse condition notification with enhanced wireless communication range in analyte monitoring systems
CN103093142B (zh) * 2012-12-26 2015-07-22 飞天诚信科技股份有限公司 一种Java卡对象访问的控制方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0604010B1 (en) * 1992-12-21 1999-12-29 Sun Microsystems, Inc. Method and apparatus for subcontracts in distributed processing systems
EP0643349B1 (en) * 1993-09-10 2000-10-18 Sun Microsystems, Inc. Client-side stub interpreter
US5737607A (en) * 1995-09-28 1998-04-07 Sun Microsystems, Inc. Method and apparatus for allowing generic stubs to marshal and unmarshal data in object reference specific data formats
US5815708A (en) * 1995-10-06 1998-09-29 Sun Microsystems, Inc. Method and apparatus for dynamically loading method call exception code in response to a software method exception generated in a client/server computer system
US5758186A (en) * 1995-10-06 1998-05-26 Sun Microsystems, Inc. Method and apparatus for generically handling diverse protocol method calls in a client/server computer system

Also Published As

Publication number Publication date
DE69734175T2 (de) 2006-05-04
US6389484B1 (en) 2002-05-14
DE69734175D1 (de) 2005-10-20
US6167458A (en) 2000-12-26
EP0817027B1 (en) 2005-09-14
US6032199A (en) 2000-02-29
EP0817027A2 (en) 1998-01-07
EP0817027A3 (en) 1999-03-31

Similar Documents

Publication Publication Date Title
JPH1063506A (ja) タイプコードで解釈されコンパイル(編集)されたマーシャリングを可能にするトランスポートから独立した呼出しとサーバントインターフェイス
US6272557B1 (en) Framework for marshaling and unmarshaling argument object references
US6718550B1 (en) Method and apparatus for improving the performance of object invocation
US6044224A (en) Mechanism for dynamically associating a service dependent representation with objects at run time
US6260078B1 (en) Using a distributed object system to find and download java-based applications
US5991823A (en) Low overhead object adaptor
US6976261B2 (en) Method and apparatus for fast, local CORBA object references
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
US5737607A (en) Method and apparatus for allowing generic stubs to marshal and unmarshal data in object reference specific data formats
US6185609B1 (en) Method, apparatus and program to provide client access to a management information service residing on a server in a computer network system
US6272559B1 (en) Deferred reconstruction of objects and remote loading for event notification in a distributed system
JP3072709B2 (ja) 要求伝達方法
US8307380B2 (en) Proxy object creation and use
US7634777B2 (en) Queued component interface passing for results outflow from queued method invocations
US6205491B1 (en) Method and apparatus for deferred throwing of exceptions in C++
US6189048B1 (en) Mechanism for dispatching requests in a distributed object system
US6516354B2 (en) Method and apparatus for efficient representation of variable length identifiers in a distributed object system
US20020178141A1 (en) Method and apparatus for remote inter-language method calling
Zhang A comparative study of DCOM/CORBA and. NET/J2EE