JPH1078881A - オブジェクト呼出の性能を改善するためのメソッドと装置 - Google Patents

オブジェクト呼出の性能を改善するためのメソッドと装置

Info

Publication number
JPH1078881A
JPH1078881A JP9170755A JP17075597A JPH1078881A JP H1078881 A JPH1078881 A JP H1078881A JP 9170755 A JP9170755 A JP 9170755A JP 17075597 A JP17075597 A JP 17075597A JP H1078881 A JPH1078881 A JP H1078881A
Authority
JP
Japan
Prior art keywords
client
local
servant
request
object reference
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
JP9170755A
Other languages
English (en)
Inventor
Swee Boon Lim
ブーン リム スウィー
Peter B Kessler
ビー. ケスラー ピーター
Sanjay R Radia
アール. ラディア サンジェイ
Graham Hamilton
ハミルトン グラハム
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 JPH1078881A publication Critical patent/JPH1078881A/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)
  • Multi Processors (AREA)

Abstract

(57)【要約】 【課題】分散クライアント/サーバー・ベースのコンピ
ューティングシステムにおいて同一プロセスおよび異な
るプロセス呼出用の異なる呼出経路を利用することによ
ってコンピューティングオーバーヘッドを削減するデー
タ構造、メソッド、および装置を開示する。 【解決手段】発明の一側面では、リクエストするクライ
アントと同一プロセスを共有しないサーバントへのコー
ルはトランスポート層を介して伝送され、またリクエス
トするクライアントと同一プロセスを共有するサーバン
トへのコールは当該サーバントに直接にパスされること
によってトランスポート層をバイパスする。発明の別の
側面では、リクエストの知的な伝送を容易にするため
に、異なるリモートおよびローカルメソッドテーブルが
提供される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、概して、分散オブ
ジェクト指向コンピューティングシステムに関する。よ
り詳細には、分散オブジェクトシステムにおけるオブジ
ェクトの呼出の性能を改善するために構成されたメソッ
ド、データ構造および装置を開示する。
【0002】
【従来の技術】ネットワークで連結された異なるコンピ
ュータ上にオブジェクトが配置されたコンピューティン
グ環境は、通常、クライアント−サーバーコンピューテ
ィング環境と呼ばれている。コンピュータの中には、他
のコンピュータに対するサービスや機能の提供者として
働くものがある。サービスや機能の提供者は「サーバ
ー」として知られ、サービスや機能の消費者は「クライ
アント」と呼ばれている。クライアント−サーバーモデ
ルは、同一コンピュータ上で動作する異なるプログラム
が、或る保護されたメカニズムを介して互いに通信して
おり、かつサービスや機能の提供者および消費者として
働いているケースに一般化することもできる。
【0003】
【発明が解決しようとする課題】そのような分散システ
ムを提供する試みは、従来、クライアント−サーバーモ
デル(そこではサーバーオブジェクトが当該オブジェク
トにリクエストするクライアントオブジェクトにインタ
ーフェイスを提供する)に基づくオブジェクト指向メソ
ッド論を使って行なわれている。通常、そのような分散
システムでは、サーバーは、データと関連メソッドから
成るオブジェクトである。クライアントオブジェクト
は、サーバーオブジェクトをコール(当該分散システム
によって媒介される)することによって、そのサーバー
オブジェクトの機能に対するアクセスを獲得する。サー
バーオブジェクトがコールを受け取ると、それは適切な
メソッドを実行して、結果をクライアントオブジェクト
に送り返す。クライアントオブジェクトとサーバーオブ
ジェクトは、各種分散オブジェクトを配置すると共にオ
ブジェクト間の通信を確立するために使用されるオブジ
ェクトリクエストブローカー(ORB)を介して通信す
る。分散オブジェクトは、ネットワーク内の任意の場
所、例えばクライアントのアドレス空間やクライアント
マシン上の多重アドレス空間やネットワーク全体の多重
マシンの中に存在することができる。
【0004】ソフトウェア産業は、これまで、オブジェ
クト管理グループ(OMG)を形成することによって分
散オブジェクトテクノロジーに対するニーズに対応して
きた。OMGの目標は、オブジェクト管理アーキテクチ
ャ(OMA)を定義することで、それは4つの大きなコ
ンポーネント、すなわちオブジェクトリクエストブロー
カー(ORB)、オブジェクトサービス、共通ファシリ
ティ、およびアプリケーションオブジェクトを持つ。オ
ブジェクトリクエストブローカーは、基本的なオブジェ
クト通信と管理サービスとを提供し、それによって分散
オブジェクトシステムの基礎を形成する。オブジェクト
リクエストブローカーの規格は共通オブジェクトリクエ
ストブローカーアーキテクチャ(CORBA)仕様の中
に含まれる。
【0005】典型的なクライアント−サーバーシステ
ム、つまり分散オブジェクトシステムでは、そのアーキ
テクチャは、クライアントとサーバーの相対位置に関係
なく、所定の呼出経路を使用してクライアントからのリ
クエストをサーバーに伝達するように構成されている。
すなわち、リクエストは、クライアントとサーバーが同
一または異なるプロセスに存在するか否かにかかわら
ず、システムの実質的に同じ層を介して伝えられる。ロ
ーカルコール、すなわち同一プロセスに位置するサーバ
ーへのコールと、リモートコール、すなわち異なるプロ
セスに位置するサーバーへのコールの両者に対するこの
ような同一経路を使用することは、非効率的である。特
に、クライアントとサーバーが同一プロセスにあるとき
は、クライアントからサーバーへの転送のリクエストを
マーシャルした後、そのリクエストにアンマーシャルす
るトランスポートレベル関数は必要がなく、コンピュー
ティングオーバーヘッドの非効率な使用であることが分
かる。従って、クライアントとサーバーが同一プロセス
に位置するか異なるプロセスにあるかによって選ばれる
異なる呼出経路を利用することによってコンピューティ
ングオーバーヘッドを削減するメソッドが、オブジェク
ト呼出の総合的性能を改善するために望ましいであろ
う。
【0006】
【課題を解決するための手段】前記およびその他の目的
を達成するために、また本発明の目的に従って、分散ク
ライアント/サーバー・ベースのコンピューティングシ
ステムにおいて異なる呼出経路を利用してコンピューテ
ィングオーバーヘッドを削減するためのメソッドと装置
が開示される。発明の一側面では、リクエストするクラ
イアントと同一プロセスを共有しないサーバントへのコ
ールはトランスポート層を介して伝えられ、リクエスト
するクライアントと同一プロセスを共有するサーバント
へのコールはサーバントに直接にパスされることによっ
てトランスポート層をバイパスする。
【0007】発明の別の側面では、複数のクライアント
表示、リモートメソッドテーブル、およびローカルメソ
ッドテーブルを含む分散クライアント/サーバー・ベー
スのコンピューティングシステムは、独特なメソッドで
関連オブジェクトを識別するオブジェクトレファレンス
を利用するように構成される。各オブジェクトレファレ
ンスは関連クライアント表示を有する一方、選択された
クライアント表示は複数の異なるオブジェクトレファレ
ンスに関連することができる。リモートメソッドテーブ
ルは、第1セットのクライアント表示に関連するリモー
トディスパッチメソッドを識別するように構成される。
リモートディスパッチメソッドは、呼出リクエストがト
ランスポート層を介して伝えられるように構成される。
対照的に、ローカルメソッドテーブルは、第2セットの
クライアント表示に関連するローカルディスパッチメソ
ッドを識別するように構成される。
【0008】本発明は、その更なる目的と利点と共に、
添付の図面に関する下記説明を参照することによって最
もよく理解されるであろう。
【0009】
【発明の実施の形態】本発明は分散オブジェクトシステ
ムに関し、添付の図面に示すいくつかの好ましい実施例
について説明する。本発明は、CORBAによって定義
されたもの、または他の任意の適切な仕様を含め、任意
の適切な分散オブジェクトシステムとの関連において実
行することができる。しかしながら、説明の目的のた
め、本発明は、主として、1995年7月付のOMGか
らのCORBA仕様、改訂版2.0、に基づいて実装さ
れたオブジェクトリクエストブローカー(ORB)の関
連において記述される。図1は、本発明の実施に適した
代表的な分散オブジェクトシステムの全体的アーキテク
チャを概略説明する。図2は、或るクライアントからサ
ーバントオブジェクトへのリクエストが、3つのレベル
のディスパッチメカニズムを含むようなアーキテクチャ
内で取り得るいくつかの可能な流れ経路を概略説明す
る。図3は、サーバントオブジェクトを参照するために
クライアントが使用できるオブジェクトレファレンスデ
ータ構造の一つを示す。
【0010】分散オブジェクトシステム10は、図1に
象徴的に示すように、通常、オブジェクトリクエストブ
ローカー(ORB)11を含む。ORB11は、クライ
アントからのコールをサーバント(目標オブジェクト)
に伝達してそのクライアントに応答を返すのに必要な場
所と輸送メカニズムと設備のすべてを提供するが、これ
については図2に関して以下に説明する。クライアント
とサーバントは、同一プロセス内、同一マシン上の異な
るプロセス内、または全く異なるマシン上に配置でき
る。この検討の目的のためには、クライアント20は、
分散オブジェクト上のオペレーションを呼び出す任意の
コードでよいので、分散オブジェクトやプロセスの形を
取っても、取らなくてもよい。正常なオブジェクトイン
プリメンテーション14は、C++等の従来のオブジェ
クトプログラミング言語で定義されるオブジェクトタイ
プの表示である。様々な表示が可能である。例として、
オブジェクトインプリメンテーション14は、アプリケ
ーションディベロッパによって提供される単純なC++
オブジェクトタイプでもよい。そのほか、オブジェクト
タイプのためのインプリメンテーションは、視覚アプリ
ケーションビルダー15内で開発することもできる。こ
の視覚アプリケーションビルダーによって、開発者は既
存のオブジェクトタイプをカタログからビジュアルに選
択して、オブジェクトタイプ用の新しいインプリメンテ
ーションを作成するために、あるオブジェクトによって
提供されたサービスを別のオブジェクト(属性、引数
等)によって必要とされるサービスに図式的に接続する
ことが可能となる。
【0011】オブジェクト開発ファシリティ16は、分
散オブジェクトの作成とインストレーションを簡略化す
るために使用できる。それを使って、ディベロッパオブ
ジェクトを分散オブジェクトコードの中に「ラップ」す
るか、カプセル化する。このように、オブジェクト開発
ファシリティ16は、ディベロッパオブジェクトをOR
Bオブジェクトインプリメンテーション14に変換する
ために使用できる。この例ではORBオブジェクトイン
プリメンテーション14は、図中のその場所で示される
ように、サーバーとして提示される。ディベロッパはイ
ンタフェース定義言語を使ってORBオブジェクト用イ
ンタフェースを定義し、そのオブジェクトの挙動を実装
するオブジェクトインプリメンテーションをディベロッ
パに提供した後、そのオブジェクトの開発ファシリティ
を使ってORBオブジェクトインプリメンテーション1
4を作成する。動作時には、このORBオブジェクトイ
ンプリメンテーション14を利用する、このORBオブ
ジェクト(サーバントオブジェクト)のインスタンスが
作成される。オブジェクト開発ファシリティも、或る時
点でクライアントの役割を担うオブジェクトの作成のた
めに使用できることを理解しなければならない。
【0012】クライアント20は、スタブ21、メソッ
ドテーブルディスパッチ24、サブコントラクト層3
6、可能性としてフィルタ40、およびトランスポート
層38を介してサーバントと通信する。スタブ21はサ
ロゲート22、メソッドテーブル24、およおびスタブ
関数25を含む。クライアント20は、最初、クライア
ントにはサーバーオブジェクトに見えるサロゲート22
と通信する。そのほかに、クライアント20は、サロゲ
ート22、メソッドテーブル24、およびスタブ関数2
5の代わりに、動的呼出インタフェース(DII)を介
してサーバーオブジェクトと直接に通信してもよい。動
的呼出インタフェース26を使用して、クライアント、
例えばクライアント20は動的リクエストを構築でき
る。上記の層を利用してクライアントがサーバントにコ
ールする一つの手順を、図2に関して以下により詳しく
説明する。
【0013】サブコントラクト層36は、サブコントラ
クトを利用して特定のサブコントラクトによって指名(n
amed) された各種サービス(または特徴やオブジェクト
メカニズム)を実施するために、オブジェクトによって
要求された機能を提供するが、これについては上記の1
995年11月7日申請の米国特許出願第08/55
4,794号に更に詳しく記載されている。サブコント
ラクトは、個々のオブジェクトによって利用される分散
オブジェクトシステムによって提供されるサービスの質
を識別する。例えば、サブコントラクトは、特定のオブ
ジェクトのために安全性の特徴が使用されることを識別
するだろう。フィルタ40が使用される場合、それは圧
縮、暗号化、トレース、またはデバッグ等の、オブジェ
クトに出入りする通信に適用すべき様々なタスクを実行
するだろう。
【0014】トランスポート層38は、通常はクライア
ントと同一プロセスを共有しないサーバントに出入りす
る情報を、マーシャル、アンマーシャル、および物理的
に輸送するために動作する。
【0015】標準インプリメンテーションスイート28
(またはオブジェクトアダプタ)は、同一の方式でOR
Bオブジェクト14と相互作用する例えばオブジェクト
キーマネージメントとしてのサブコントラクトの集まり
を表す。当然のことながら、一つのサブコントラクトは
複数のインプリメンテーションスイートに属することが
できる。従って、他のインプリメンテーションスイート
が異なるサブコントラクトを利用することが可能であ
る。スケルトンは、静的スケルトン32や動的スケルト
ン30の形を取り得るが、これは、サーバントオブジェ
クト14によってリクエストされるフォーマットにリク
エストを変換するために使用される。かくして、スケル
トン32、30は適切なサーバントオブジェクト14を
コールする。静的スケルトン32はインタフェース固有
のオブジェクトインプリメンテーション14をコールす
るために使用され、動的スケルトン30は、一般に、イ
ンタフェース固有のオブジェクトが利用できないときに
使用される。ORBインタフェース34は、すべてのO
RBに対して同一であってオブジェクトのインタフェー
スやオブジェクトアダプタに依存しない、直接にORB
に頼るインタフェースである。ORBデーモン46は、
オブジェクトサーバーがクライアントによって呼び出さ
れたときにアクティブである旨保証する責任がある。オ
ブジェクトサーバーを起動する技術は、米国特許出願第
08/408,645号に開示されている。
【0016】安全プロトコル42は、インターネットイ
ンターORBプロトコルを保証して、トランスポート層
38を介して安全なメソッドで情報を伝達するのに役立
つ安全インタオペラビリティプロトコルである。これは
一貫性保護、機密性等を意味するだろう。インターネッ
トインターORBプロトコルは、通常、異なるマシン上
のプロセス間で通信するプロトコルである。しかしなが
ら、場合によって、インターネットインターORBプロ
トコルは同一マシン上のプロセス間で通信することがで
きる。セキュリティサーバー54は、異なるコンピュー
タ上のプロセス間で使用されるサービスを保証するセキ
ュリティアドミニストレーションサーバーである。
【0017】タイプコード/Anyモジュール44はタ
イプコードと「Any」オブジェクトを実装する。タイ
プコードはインタフェース定義言語(IDL)データタ
イプを記述し、クライアントとサーバー間のタイプ記述
の伝達を可能にする。IDLデータタイプのインスタン
スを「Any」オブジェクトによってカプセル化するこ
とができる。Anyオブジェクトは、カプセル化された
データのタイプコードと、データの総称的コード化を参
照する。
【0018】インプリメンテーションレポジトリ50
は、オブジェクトサーバーに関する情報を格納するため
に使用される。具体的には、インプリメンテーションレ
ポジトリ50は、サーバープロセスを開始するのに必要
な情報を格納する。例えば、インプリメンテーションレ
ポジトリ50は、サーバープログラムの場所、プログラ
ムに対する任意の引数、およびプログラムに渡すべき任
意の環境変数等の情報を格納する。
【0019】シンプルパーシステンス56は、追加コー
ドの一部と共に、インタフェース定義言語(IDL)定
義タイプと、IDLコンパイラを介してそのIDLタイ
プを実行する出力形とを使用するので、IDL定義タイ
プをディスクから読み取ったりディスクへ書き込むこと
ができる。ネームサーバー52は、ORBオブジェクト
を名前付け(name)するために使用される。或るクライア
ント、例えばクライアント20は、ネームサーバー52
を使って希望のオブジェクトをネームで発見することが
できる。ネームサーバー52はオブジェクトレファレン
スを返し、次にそのレファレンスを使ってそのオブジェ
クトにリクエストを送ることができる。インタフェース
レポジトリ48(IFR)は、分散オブジェクトシステ
ム内のすべてのオブジェクトに対するすべてのインタフ
ェースについて知識を持つ。
【0020】メソッドテーブル(「m−テーブル」)デ
ィスパッチを使って、クライアントによって行なわれた
リクエストは、図2に概略図示するように、途中、アー
キテクチャの前記の様々な層を通ってサーバントに至
る。リクエストはクライアントによって開始され、任意
の形を取ることができる。リクエストの形は、クライア
ントを作成するために使用されるプログラミング言語の
性質に大きく依存する。例として、クライアントがC+
+言語で書かれている場合、リクエストはC++メソッ
ドコール62の形を取ることができる。コールは、サロ
ゲートの形を取る指定のオブジェクトレファレンスに対
して行なわれる。サロゲートは、オブジェクトのインタ
フェースに適合するメソッドを含む。当業者にはよく理
解されるように、分散オブジェクトシステム内の異なる
ロケーションで使用されるオブジェクトレファレンスは
外観が大きく変わる場合がある。記載の実施例では、ク
ライアント側オブジェクトレファレンスはデュアルポイ
ンタである(本明細書では「ファットポインタ(fat poi
nter」と呼ぶ)。ファットポインタは性質の異なる2つ
のポインタを含む。第1のポインタ、つまり第1の場所
インジケータは、レファレンスドオブジェクトに関連す
るクライアント表示(「クライアントレプ」)を指示す
る。第2のポインタ、つまり第2の場所インジケータ
は、レファレンスドオブジェクトに関連するメソッドテ
ーブルディスパッチ24のメソッドテーブルを指示す
る。ここで用いられる用語「ポインタ」はコンピュータ
ネットワーク内の場所を識別するために使用されるばか
りでなく、用語「ポインタ」は一般的な場所インジケー
タのことを指すためにも使用されることを理解しなけれ
ばならない。クライアント表示は、呼出、ならびにCO
RBAで定義された「疑似」オブジェクトレファレンス
オペレーションを支援するメソッドを持つオブジェクト
である。これらのオペレーションは、これに限定される
ものではないが、デュプリケートメソッド、リリーズメ
ソッド、ナローメソッド、ハッシュメソッド、およびイ
ズ−イクイバレントメソッドを含む。
【0021】クライアントがコールを開始した後、その
コールはメソッドテーブルディスパッチメカニズム24
を使って処理される。かかる技術は米国特許出願第08
/307,929号に開示されている。メソッドテーブ
ルディスパッチメカニズムは、スタブ関数25に対する
ポインタ、つまり場所インジケータ、のリストを含むメ
ソッドテーブルを使用するが、そのポインタの一つは呼
び出すべきメソッドに関連している。スタブ関数25は
クライアントプロセスの「ネイティブ」言語による関数
や手続きコールを受け取った後、サブコントラクト層3
6かネイティブコールのいずれかを使って、結局、対応
するサーバントオブジェクトをコールする。ネイティブ
言語は、任意の適切な言語、例えばC++のような言語
でもよい。
【0022】メソッドテーブルディスパッチ24はその
メソッドコールを処理する適切なスタブ関数25を決定
した後、メソッドコールをその適切なスタブ関数25と
組合せる。メソッドコールを行なったクライアントがサ
ーバントオブジェクトと同一プロセスにある場合、ロー
カルスタブ関数がコールされる。ローカルスタブ関数
は、そのメソッドコールを直接にサーバントオブジェク
ト78に送る。そのほかに、サーバントオブジェクトが
異なるプロセス、すなわちリモートプロセスにある場
合、リモートスタブ関数がコールされる。リモートスタ
ブ関数はクライアント表示を呼び出し、クライアント表
示がその呼出をサーバントオブジェクト78に伝達す
る。
【0023】サブコントラクト層36によって実装され
たサブコントラクトは、分散オブジェクトシステムで重
要なオブジェクトの呼出と引数のパスの基本メカニズム
を制御する論理モジュールである。サブコントラクト層
36によって実装されるサブコントラクトは、オブジェ
クトによって使用されるサービスの固有の質を決定す
る。サブコントラクトはサブコントラクト識別子によっ
て独特なメソッドで識別され、その識別子は、通常、オ
ブジェクトレファレンスに埋め込まれている。サービス
の質とはサービス特性の集まりである。選択可能なサー
ビス特性の中には、サーバーの作動、セキュリティ、ト
ランザクション、フィルタ性、およびクリーンシャット
ダウンに関係する質がある。サブコントラクトは、一定
の質のサービスが利用できるように構成されている。予
め定められたサービスの質によって、個々のサービス特
性の処理に伴うオーバーヘッドが削減される。実施に、
「妥当な」または一般的に使用されるサービス特性の組
合せがサブコントラクトによってサポートされる。しか
しながら、所定の分散オブジェクトシステムの固有の要
件を満たすためにサブコントラクトを作成してもよい。
【0024】サブコントラクト層36内の適切なサブコ
ントラクトの識別は、そのサブコントラクトに独特な望
ましい関数の識別と見做すことができる。例えば、マー
シャル関数やアンマーシャル関数は、各サブコントラク
ト毎に定義される。サブコントラクトマーシャル関数
は、別のアドレス空間や領域に伝送できるようにオブジ
ェクトレファレンスをマーシャルするためにスタブによ
って使用される。オブジェクトレファレンスは、通常、
トランスポート層38内のトランスポートメカニズムに
よって処理される。
【0025】T1、T2等のトランスポートメカニズム
は、トランスポート層38の一部だが、サーバントオブ
ジェクトに出入りする情報をマーシャルして物理的に輸
送するために使用される。情報、すなわちオブジェクト
レファレンスやリクエストは、所定の領域に適したプロ
トコルに転換される。例として、プロトコルは、それに
限定されるわけではないが、イーサーネットプロトコル
とインターネットインタオペラブルプロトコル(IIO
Ps)を含んでもよい。希なケースでは、プロトコル
は、サーバー上で実装されるべき命令を伝送するために
電子メールの使用を必要とすることもある。情報がマー
シャルされた後、そのトランスポートメカニズムはオペ
レーティングシステム、デバイスドライバ、またはネッ
トワーク(これらは、すべて、分散オブジェクトシステ
ムのクライアント側によって使用されるハードウェア7
0の一部)の任意の組合せを介して情報を輸送する。ト
ランスポートメカニズムでは、情報を所定領域に適した
プロトコルに転換する必要があるが、中には異なる領域
に対する情報のコード化を必要としないトランスポート
メカニズムもある。情報の発生場所以外の領域に適した
プロトコルへの情報の転換を必要としないトランスポー
トメカニズムは「ドア」と呼ばれる。ドアは、基本的
に、同一ホスト上の2つの異なるプロセス間のゲートウ
ェイである。ドアを使用することによって、トランスポ
ート層38内の標準インプリメンテーションに情報を転
換するニーズが除去される。というのは、情報が同一ホ
ストに残っているので領域を変更する必要がないため
に、異なるマシンによって使用され得るプロトコルに情
報をコード化する必要がないからである。従って、情報
を単に「平坦化(flattened out) 」するか、あるいは異
なるマシンによる使用のためにコード化されないストリ
ームの中にマーシャルして、ホスト上の2つのプロセス
間でパスすることができる。
【0026】一旦、情報が、クライアント側によって使
用されるハードウェア70を介して輸送されると、その
情報は、次に、分散オブジェクトシステムのサーバー側
のハードウェア70に輸送される。一旦、情報がハード
ウェア70を通って流されると、分散オブジェクトシス
テムのサーバー側は、トランスポート層38の一部であ
るエンドポイントで情報を受け取るために、T1、T2
等のトランスポートメカニズムを呼び出す。万一トラン
スポート層38によってエンドポイントが作成されない
場合、トランスポート層38は、そのエンドポイントが
サブコントラクト層36によって作成されるのに必要な
機能を提供する。例として、ドアエンドポイントは、通
常サブコントラクト層36によって作成され、一方、ネ
ットワークとTCP/IPエンドポイントを含む他のエ
ンドポイントは、通常、トランスポート層38によって
作成される。エンドポイントの作成がサブコントラクト
層36によるかトランスポート層38によるかにかかわ
らず、エンドポイントはトランスポート層38の中に
「住む(live in) 」、つまりその一部である。エンドポ
イントは、基本的に異なる領域から情報を受け取るポー
トである。トランスポート層38内のエンドポイント
が、異なる領域から輸送された情報を受け取った後、そ
のエンドポイントは、次に、その情報をトランスポート
層38からサブコントラクト層36にディスパッチす
る。サブコントラクト層36、より具体的にはその情報
を受け取るサブコントラクト層36内のサブコントラク
トが、次にその情報をスケルトンとサーバントにディス
パッチする。
【0027】サブコントラクト層36は、それが受け取
った情報の少なくとも一部をアンマーシャルするための
機能を提供する。すなわち、サブコントラクト層36は
リクエストの少なくとも一部をアンマーシャルする。次
に、リクエストがスケルトン31にディスパッチされ、
スケルトンがそのリクエストを、サーバントオブジェク
ト78によって要求されるインプリメンテーションの固
有のフォーマットに変換する。スケルトンは、上記のよ
うに、静的スケルトンでも動的スケルトンでもよい。
【0028】一般に、リモートリクエストのルートは、
上記のように、クライアント側とサーバー側を通らなけ
ればならない。メソッドコール62が受け取られると、
メソッドテーブルディスパッチ層24を使って、リクエ
ストをマーシャルしてそれを別の領域に輸送するために
準備するトランスポート層38内のトランスポートメカ
ニズムを選択する前に、適切なサブコントラクトが識別
される。ハードウェア70を介して、マーシャルされた
リクエストがサーバー側に輸送され、そこでそのリクエ
ストがトランスポート層38の一部のエンドポイント上
で受け取られる。適切なエンドポイントがワイヤを伝っ
て輸送された情報を受け取ると共に、情報がトランスポ
ート層38からサブコントラクト層36にディスパッチ
されるので、サブコントラクト層はそれが受け取った情
報を少なくとも部分的にアンマーシャルする機能を提供
する。次に、サブコントラクトは、そのリクエストをス
ケルトン31にディスパッチし、スケルトンはそのリク
エストを、サーバントオブジェクト78によって要求さ
れる固有のフォーマットに変換する。この経路を矢印7
7で示すが、これはリモートリクエストとローカルリク
エストが共に取り得る経路である。
【0029】しかしながら、クライアントとサーバーが
ローカルプロセスにある場合、すなわちクライアントと
サーバーが共に同一プロセスにある場合、上記の矢印7
7で示される経路の使用は必要以上に複雑である。クラ
イアントとサーバーが同一プロセスにあることが分かっ
ていれば、呼出し、つまりサービスのためのリクエスト
の流れ経路を短縮することができる。オブジェクトレフ
ァレンスを作成するときにローカルプロセスが識別され
た場合、クライアントであるものから同一ホスト上のサ
ーバーにリクエストを送るために、短縮された流れ経
路、つまり矢印75、76で示される経路を取ることが
できる。矢印76で示される経路を取る可能性の方が大
きい。というのは、それが適切なサブコントラクトを識
別するためにサブコントラクト層36を使用しているか
らである。しかしながら、適切なサブコントラクトをは
っきり識別する必要のない状況では矢印75で示される
経路を取ることができる。
【0030】ここで、図3を使って、オブジェクトレフ
ァレンスの一実施例を説明する。当業者にはよく知られ
ているように、オブジェクトレファレンスは、それらが
任意の時点で占めているプロセス内の場所によって様々
な形を取ることができる。しかしながら、背景として、
低いオーバーヘッドのオブジェクトアダプタを利用する
システムで使用するための代表的なオブジェクトレファ
レンスを図3に示す。ここで示されるインプリメンテー
ションでは、オブジェクトレファレンス150は、ホス
ト識別子152、ポート指定154、およびオブジェク
トキー156を含む。オブジェクトキー156は、サブ
コントラクト識別子158、サーバー識別子160、イ
ンプリメンテーション識別子162、およびユーザーキ
ー164を含む。ホスト識別子152は、ネットワーク
内の特定のコンピュータを指し、ポート指定154は、
通信用に使用すべき選ばれたコンピュータのポートを識
別する。オブジェクトキー156は、望ましいサーバン
トオブジェクトをホストマシン上に配置するために使用
される更なる識別用情報を提供する。
【0031】サーバー識別子160は、サーバントオブ
ジェクトが常駐する特定のプロセスやプログラムを指示
し、一方、ユーザーキー164は、サーバー識別子16
0によって指示されるプロセス内にサーバントを配置す
るために使用される唯一の数または文字列である。サブ
コントラクト識別子158は、特定サブコントラクトの
プロトコルと、サーバントに対するその関連サービスと
を生成するために使用され、インプリメンテーション識
別子162は、そのサーバントオブジェクトと共に使用
すべきインタフェースのインプリメンテーションを指示
する。
【0032】次に図4を参照して、mテーブルディスパ
ッチメカニズムを更に詳しく説明する。上述のように、
記載の実施例では、呼び出すべきサーバントを識別する
ためにクライアントによって使用されるオブジェクトレ
ファレンスは「デュアル」ポインタまたは「ファットポ
インタ」90と見做すことができる。すなわち、2つの
「正常な」ポインタを含むポインタ構造である。ファッ
トポインタ90はCORBAオブジェクトレファレンス
と見做すこともできる。各ポインタのサイズはシステム
の要件によって支配される。ファットポインタ90の第
1ポインタは、クライアント表示(「クライアントレ
プ」)94を指示するクライアント表示ポインタ90a
である。ファットポインタ90の第2ポインタは、クラ
イアント表示94に関連するmテーブル24を指示する
mテーブルポインタ90bである。上記の説明のよう
に、クライアント表示94は、オブジェクト呼出とCO
RBAで定義された「疑似」オブジェクトレファレンス
オペレーション(デュプリケートおよびナローメソッド
を含む)とをサポートするメソッドを持つオブジェクト
である。クライアント表示94はクライアント上のサー
バントオブジェクトの表示と見做される。かくして、ク
ライアント表示94はサーバントと関連している。各オ
ブジェクトレファレンスは単一の関連クライアント表示
94を持つが、各クライアント表示94は一つ以上の異
なるオブジェクトレファレンスに関連することができ
る。クライアント表示94のサブコントラクトは、クラ
イアント表示94が一つ以上のオブジェクトレファレン
スと関連するか否かを決定する。
【0033】各クライアント表示94は、一般に、関連
するmテーブルを持つ。関連mテーブルはローカルmテ
ーブルでも、リモートmテーブルでもよい。或る実施例
では、多重のローカルまたはリモートmテーブルが利用
される。クライアント表示の中には一つ以上の関連mテ
ーブルを持つものがある。クライアント表示94がロー
カルmテーブルとリモートmテーブルの両者を格納、維
持するか否かは、クライアント表示94が関連するサブ
コントラクトのインプリメンテーションに依存する。一
般に、mテーブル24は、ディスパッチの決定のために
使用されるメソッドへのポインタのアレイを含む。クラ
イアント表示94はスタブ、つまりスタブ関数25にパ
スされる引数であるから、ディスパッチはクライアント
表示94から独立している。スタブ関数25は、先に記
載したように、クライアントプロセスのネイティブ言語
による関数コールを受け取った後、サポートライブラリ
を使って、結局、対応するサーバントオブジェクトをコ
ールする。ディスパッチを決定するために使用されるm
テーブルは希望のオペレーション用のスタブ関数25を
指示することができる。別法として、スタブ関数25を
直接指示するのではなく、mテーブルは、ディスパッチ
を決定するために使用されるスタブ関数25へのポイン
タのアレイを含む他のmテーブルを指示してもよい。
【0034】分散オブジェクトシステムの中の各インタ
フェースは少なくとも一つのmテーブルに関連すること
ができる。しかしながら、インスタンスの中には関連す
るmテーブルを持たないものもあることを理解しなけれ
ばならない。mテーブルは、通常、コンパイルされた、
つまり静的なスタブと共に使用される。従って、コンパ
イルされたスタブが存在しない実施例では、インタフェ
ースは関連mテーブルを持たないかもしれない。通常、
各インタフェースは単一のローカルmテーブルと単一の
リモートmテーブルに関連している。もっとも、或る場
合には、一つのインタフェースが一つ以上のローカルm
テーブルに関連することができる。
【0035】一般に、mテーブルは多くの異なる表示を
持つことができる。例として、或る実施例では、mテー
ブルは「フラット」、つまりmテーブルは直接にスタブ
関数を指示できる。他の実施例では、mテーブルはツリ
ー構造、すなわちmテーブルは、直接にmテーブルによ
って指示されないスタブ関数25を指示し得るデータ構
造を指示するだろう。所定のインタフェースの各メソッ
ドに対するポインタは、そのインタフェースに関連する
mテーブルからアクセス可能であることを理解しなけれ
ばならない。従ってmテーブルがツリー構造の場合、メ
ソッドに関連するポインタを発見するためにmテーブル
のツリー構造をたどる必要があるかもしれない。
【0036】下記に更に詳しく説明するように、提案の
アーキテクチャの一つの利点は、ローカルとリモートの
手続きの間の区別を可能にすることによって、クライア
ントによって受け取られるリクエストの最適な流れ経路
や呼出経路の決定が可能になることである。例として、
クライアントとサーバーが同一プロセスに存在しない場
合、受け取られたリクエストは少なくともクライアント
とサーバーの両者のトランスポート層を介して伝えら
れ、サーバープロセスが異なるホスト上にあるときは、
ハードウェア層も通ることになる。しかしながら、クラ
イアントとサーバーが互いにローカルにある場合、すな
わち、同一プロセスを共有するときは、受け取られたリ
クエストをトランスポート層とハードウェア層とを介し
て送る必要はない。クライアントとサーバーが同一プロ
セスにある場合は、修正された、より短い流れ経路を利
用できるので、受け取られたリクエストはクライアント
側のサブコントラクト層とmテーブルディスパッチ層の
どちらからも適切なサーバントオブジェクトに伝達する
ことができる。不必要なときに、受け取ったリクエスト
をトランスポート層とハードウェア層とを介して送るこ
と(リクエストと回答のマーシャルとアンマーシャルが
必要)は、効率、従ってオブジェクトの呼出性能を損な
うことになる。サーバントがクライアントと同一プロセ
スにあるか否かを効率的に識別できるようにオブジェク
トレファレンスを構成することによって、クライアント
とサーバーが同一プロセスに存在する場合でも、短い流
れ経路の利用が可能となる。従って、オブジェクト呼出
の性能が改善される。
【0037】次ぎに図5を参照して、mテーブルディス
パッチを使用したオブジェクトの呼出に関するステップ
を説明する。最初、ファットポインタを使ってコールが
行なわれる。記載の実施例では、C++コールの形を取
る。もっとも、コールの性質は、勿論、通常はクライア
ントが書かれたプログラム言語の関数になる。ステップ
100では、コールされたメソッドが、ファットポイン
タによって指示されたmテーブルに配置される。コール
されたオブジェクトがローカルなメソッドの場合、ファ
ットポインタによって指示されるmテーブルはローカル
mテーブルになる。同様に、コールされたオブジェクト
がリモートな場合、ファットポインタによって指示され
るmテーブルはリモートmテーブルになる。ステップ1
05では、コールは、ステップ100で指示されたスタ
ブ関数に対して行なわれる。記載の実施例ではC++コ
ールであるコールは、ファットポインタによって識別さ
れたクライアント表示と、コールパラメータとしてパス
された他の引数とを使って行なわれる。或る実施例で
は、追加の引数がパスされる。指示されたスタブ関数が
コールされた後、プロセス制御は、指示されたスタブ関
数がローカルスタブ関数にあるかリモートスタブ関数に
あるかによって、異なる関数に分岐する。指示された関
数がローカルスタブ関数にある場合、プロセス制御はス
テップ110に進み、そこでローカルスタブ関数が実行
される。このローカル呼出は図4に関して以下により詳
しく検討する。ローカルスタブがステップ110で実行
された後、プロセスはステップ120の関数コールから
戻る。ファットポインタによって指示された関数がリモ
ートスタブ関数にある場合、プロセス制御は、ステップ
105からステップ115に進み、そこでリモートスタ
ブが実行される。リモートスタブがステップ115で実
行された後、プロセス制御はその関数コールからの戻り
であるステップ120に進む。
【0038】次に図6を参照して、ローカルスタブを使
用して呼出を実施するための適切なメソッドを説明す
る。すなわち、図5のステップ110の一実施例を更に
詳しく説明する。図2に関して、ローカルスタブを「実
行」するプロセスは、経路75または76を介してサー
バントを呼び出すプロセスと理解されるだろう。或るオ
ペレーション、例えばオペレーションXのためのローカ
ルスタブを実行するプロセスはステップ200で開始さ
れ、ローカルスタブによってパスされたクライアント表
示のローカルフックがアクティブか否か決定される。フ
ックがアクティブか否かの任意の適切な表示が使用でき
る。例として、ローカルフックはその一部であるクライ
アント表示がアクティブか否かを識別する2値のフラグ
でもよい。ローカルフックは、追加コード(例えばオブ
ジェクトディベロッパによってカスタマイズされたコー
ド)がクライアント−サーバーシステム内で実行できる
メカニズムを提供する。すなわち、ローカルフックは、
クライアント−サーバーシステムが追加コードを実行し
なければならないか否かを示すようにセットできる。大
抵の実施例では、この決定は実行時と対立するコンパイ
ル時に行なわれるので、ローカルフックが使用されない
ときは、フック設備の設置による性能の低下はないだろ
う。
【0039】ローカルフックがアクティブでないとき、
それはローカルスタブを実行するプロセス内に含むべき
追加コード、特にサブコントラクト固有のコードが存在
しないことを示し、プロセス制御はステップ216に進
み、そこで、インタフェース定義言語(IDL)で規定
されたネームのエレメントを持つ新しいコンテクストオ
ブジェクトが、オリジナルコールとスタブ関数へのコー
ルからパスされたオリジナルコールリクエストから作成
される。IDLは、オブジェクトのインタフェースを定
義するために使われる言語である。コンテクストオブジ
ェクトは、結合のリスト、例えば「USERNAME=
foo」および「HOSTNAME=foo」の2つの
文字列を含むリストである。更に一般的にはコンテクス
トオブジェクトは、優先情報や分散オブジェクトシステ
ムの構成に関する情報を格納するために使用できる。コ
ンテクストオブジェクトがステップ216で作成された
後、プロセス制御はステップ218に進み、そこで、サ
ーバントがクライアント表示から直接に取得される。ロ
ーカルスタブは使用中なので、クライアントとサーバン
トが同一プロセスを共有することが分かる。従って、サ
ーバントは、当業者には理解されるように、標準技術を
使って容易に取得できる。記載のコンテクストオブジェ
クト作成ステップ216はオプションのステップで、希
望なら除去してもよい。通常、コンテクスト作成ステッ
プ216は、関連メソッドがIDLによるコンテクスト
クローズで規定されないときは削除される。関連メソッ
ドがコンテクストクローズで規定されない場合、コンテ
クスト引数はオリジナルコールまたはスタブ関数へのコ
ールの一部としてパスされないだろう。コンテクストオ
ブジェクト作成ステップ216が省略された場合、プロ
セス制御はステップ200(そこでクライアント表示の
ローカルフックがアクティブでない旨決定された)から
直接にステップ218に進み、そこで、サーバントがク
ライアント表示から直接取得される。
【0040】サーバントがステップ218で取得された
後、ステップ218で識別されたサーバー用のオペレー
ションXに対応するメソッドがステップ220でコール
される。ステップ220でのサーバーコールに対する引
数は、通常、クライアント表示を除いて、スタブ呼出ス
テップ105でローカルスタブにパスされるものと同一
引数である。新しいコンテクストがオプションのステッ
プ216で作成された場合、その新コンテクストもその
コールと共にオリジナルコンテクストの代わりにパスさ
れる。ステップ220が完了した後、結果が返される。
結果が返されたとき、新コンテクストは、それが作成さ
れた場合には、自動的に削除または破壊される。
【0041】クライアント表示のローカルフックがアク
ティブである旨ステップ200で決定された場合、それ
は追加コードを実行しなければならないことを示し、プ
ロセス制御はステップ202に移り、そこで、クライア
ント表示のプレローカルディスパッチメソッドに対する
コールが行なわれる。クライアント表示のローカルフッ
クがアクティブなときは、プレローカルディスパッチメ
ソッドが、ローカルディスパッチ、特にサーバントオブ
ジェクトへのポインタによって要求されるクライアント
表示に固有の情報を収集するために、ローカルディスパ
ッチが起こる前にコールされる。プレローカルディスパ
ッチは、サーバントポインタが確実に取得されることを
確認するために使用される。更に、プレローカルディス
パッチメソッドは、サーバントにコールを受け取るよう
に準備させたり(活性化)、コーラーがサーバントを呼
び出す許可を取るのを保証したり(セキュリティ)、ト
ランザクションを格納したり、ロックを獲得したりする
ために、追加のサブコントラクト処理を実行することが
できる。正確な処理はクライアント表示に関連するサブ
コントラクトに依存することを理解しなければならな
い。プレローカルディスパッチメソッドに対するコール
では、ジェネリックホルダーがパスされる。総称的ホル
ダーは、プレローカルディスパッチメソッドからポスト
ローカルディスパッチメソッドまでのローカルスタブの
実行に関係する希望の情報をパスするために使用でき
る。総称的ホルダーは、サブコントラクトに関係するプ
レ呼出状態を保つための全体的記憶やスレッド固有の記
憶の使用を避けるために用意される。総称的ホルダー
は、そのホルダーにバリューを割り当てるプレローカル
ディスパッチメソッドにパスされる。一般的に、割り当
てられる値はトランザクション識別子を含む構造へのポ
インタや、プレローカルディスパッチで割り当てられた
記憶へのポインタ(通常、次のサーバントコール用ポス
トローカルディスパッチで割当て解除される)でもよ
い。
【0042】ステップ202におけるクライアント表示
のプレローカルディスパッチメソッドに対するコールか
ら、プロセス制御はステップ204に進み、そこで、プ
レローカルディスパッチコールが成功したか否か決定さ
れる。コールが不成功の場合、例外、つまりこの実施例
ではC++例外が起こり、更なる処理は行なわれない。
コールが成功した場合、プロセス制御はステップ206
に進み、そこで、IDLで規定されたネームのエレメン
トを持つ新しいコンテクストオブジェクトが作成され
る。従って、プロセス制御はステップ208に進み、そ
こで、サーバントがクライアント表示から取得される。
サーバントが取得された後、オペレーションXに対応す
るメソッドが、識別されたサーバントに対してステップ
210でコールされる。すなわち、ステップ210では
ローカルディスパッチが起こる。ステップ206〜21
0は上述のステップ216〜220のミラーであること
を理解しなければならない。従って、コンテクストオブ
ジェクト作成ステップ216と同様に、コンテクスト作
成ステップ206はオプションのステップである。
【0043】ローカルディスパッチがステップ210で
実行された後、プロセス制御はステップ212に進み、
そこで、ジェネリックホルダーがプレローカルディスパ
ッチメソッドからパスされた状態で、クライアント表示
のポストローカルディスパッチメソッドがコールされ
る。ポストローカルディスパッチメソッドはジェネリッ
クホルダーに割り当てられた値(通常、ローカルコール
に関連するデータを含む構造へのポインタを含む)を回
復する。ポストローカルディスパッチメソッドは、事実
上、プレローカルディスパッチ用のクロージャであり、
プレローカルディスパッチオペレーションに対応するハ
ウスキーピングオペレーションを実行させるためにコー
ルされる。例として、ポストローカルディスパッチメソ
ッドは、サーバントオブジェクトを非活性化したり、ト
ランザクションを行なったり、ロックを解除することが
できる。一般に、プレローカルディスパッチとポストロ
ーカルディスパッチは、サブコントラクトのローカル呼
出への参加や介入を可能にする。一旦、ローカルディス
パッチプロセスを終了するためにポストローカルディス
パッチメソッドがコールされると、ローカルスタブを実
行するプロセスが完了する。
【0044】ローカルフックがコンパイル時に有効にさ
れると、ステップ202〜212、すなわちプレローカ
ルとポストローカルディスパッチメソッドを利用するメ
ソッドに対するコールが実行されることを理解しなけれ
ばならない。ローカルフックがコンパイル時に有効にさ
れないと、ステップ216〜220、すなわちプレロー
カルとポストローカルディスパッチメソッドを利用しな
いメソッドへのコールが実行される。換言すれば、ステ
ップ200の分岐、すなわちローカルフックがアクティ
ブか否かの決定は、そのブランチがコンパイラによって
予め決定できるので、必要がないかもしれない。従っ
て、所定のブランチに関係するコードのみが生成され
る。
【0045】上述のように、知的なメソッドでオブジェ
クトレファレンスを構築することによって、クライアン
トとサーバーが同一プロセスにある場合に、より短い流
れ経路を利用することが可能になる。知的なメソッドで
オブジェクトレファレンスを構築することは、関係する
オブジェクトレファレンス、すなわち新しいオブジェク
トレファレンスの作成元であるオブジェクトレファレン
スがサーバーに対してローカルであるか否かを決定する
ことを意味する。新オブジェクトレファレンスの作成元
であるオブジェクトレファレンスがサーバーに対してロ
ーカルである場合、ローカルmテーブルを指示するmテ
ーブルポインタを持つファットポインタ、すなわちCO
RBAオブジェクトレファレンスが作成される。新オブ
ジェクトレファレンスの作成元であるオブジェクトレフ
ァレンスがサーバーに対してローカルでない場合、リモ
ートmテーブルを指示するmテーブルポインタを持つフ
ァットポインタが作成される。
【0046】適切なmテーブルを指示するかそれに添付
されたmテーブルポインタを使ってファットポインタ、
つまりCORBAオブジェクトレファレンスを作成する
ために、ファットポインタの作成時に、適切なmテーブ
ルはローカルテーブルかリモートテーブルかに関する決
定を行なわなければならない。オブジェクトレファレン
スの作成のために使用される標準CORBA関数は、ク
リエートメソッド、デュプリケートメソッド、ナローメ
ソッド、アンマーシャルメソッド、およびデストリンジ
ファイ(destringify) メソッドを含む。すなわち、デュ
プリケートメソッド、ナローメソッド、アンマーシャル
メソッド、およびデストリンジファイメソッドは、すべ
て、新オブジェクトレファレンスを構築するために使用
できる。従って、これらの各メソッド(および新オブジ
ェクトレファレンスを作成する他の任意のメソッド)に
おいて、サーバントが、作成されるオブジェクトレファ
レンスと同一プロセスにあるか否かに関する決定がなさ
れるなら、より短い流れ経路でローカルリクエストを処
理することが可能となるだろう。つまり、大抵の場合、
かなりの割合のオブジェクト呼出がローカルになるの
で、短い流れ経路の使用は、先に検討したように、オブ
ジェクト呼出の性能の改善に役立つ。
【0047】次に図7を参照して、本発明の一実施例に
よる、サーバントがローカルかリモート火を決定するオ
ブジェクトレファレンスを複製するプロセスを説明す
る。記載の実施例では、プロセスはステップ250で開
始され、オブジェクトレファレンス、つまりオブジェク
ト「レフ」が関連するクライアント表示のデュプリケー
トメソッドに対するコールが行なわれる。複製されるオ
ブジェクトレファレンスのmテーブルへのポインタは、
クライアント表示のデュプリケートメソッドに対するコ
ールの引数としてパスされる。すなわち、各クライアン
ト表示は、mテーブルを引数と見做すデュプリケートメ
ソッドを持つ。コールされるデュプリケートメソッド
は、通常、オブジェクトレファレンスのクライアント表
示によって識別される。デュプリケートメソッドがステ
ップ250でコールされた後、プロセス制御はクライア
ント表示のレファレンスカンウントが増分されるステッ
プ252か、クライアント表示のコピーが作成されるス
テップ256のいずれかに進むことができる。レファレ
ンスカウントがステップ252で増分されるか、クライ
アント表示のコピーがステップ256で作成されるか
は、クライアント表示のサブコントラクトが参照された
オブジェクトの可測性(accountability)をどのように管
理するかによって決まる。当業者にはよく理解されるよ
うに、様々なメカニズムを使用して特定のクライアント
表示のために存在する顕著なオブジェクトレファレンス
の数をカウントすることができる。例として、レファレ
ンスカウンタを使って同一クライアント表示に関係する
オブジェクトレファレンスの数が追跡される。すなわ
ち、レファレンスカウントは、複製されたオブジェクト
レファレンスがクライアント表示に関連するオブジェク
トレファレンスの数を追跡するためにクライアント表示
に対して作成される毎に増分される。別法として、オブ
ジェクトレファレンスが作成される毎にクライアント表
示の新しいコピーを作ることができる。オブジェクトレ
ファレンスが作成される毎にクライアント表示のコピー
を作成することによって、クライアント表示当たり一つ
しかオブジェクトレファレンスは存在しないので、オブ
ジェクトレファレンスの数を容易にカウントすることが
できる。
【0048】デュプリケートメソッドのための可測性メ
カニズムがレファレンスカウントの増分化を含む場合、
プロセス制御はステップ250のデュプリケートメソッ
ドに対するコールからステップ252のレファレンスカ
ウントの増分化に移る。レファレンスカウントの増分化
によって、ORBは新、すなわち複製されたオブジェク
トレファレンスが作成されようといることを知らされ
る。ステップ254では、クライアント表示へのポイン
タと、デュプリケートメソッドへのコールに対する引数
として受け取られたmテーブルポインタの両者を含む新
オブジェクトレファレンスが作成される。サブコントラ
クトは、レファレンスカウントがステップ252で増分
されたことによって新オブジェクトレファレンスが作成
されたことを知っている。複製用オブジェクトレファレ
ンスがステップ254で作成された後、プロセス制御は
進み、新しく作成されたオブジェクトレファレンスを返
す。レファレンスカウントを増分するステップと、オリ
ジナルのクライアント表示を含むオブジェクトレファレ
ンスを作成するステップとは、オブジェクトレファレン
スを複製するいくつかのメソッドに特有であることを理
解しなければならない。
【0049】デュプリケートメソッドのための可測性メ
カニズムが、クライアント表示のコピーの作成を含む場
合、プロセス制御は、ステップ250のクライアント表
示のデュプリケートメソッドへのコールからステップ2
56のクライアント表示のコピーの作成に移る。クライ
アント表示のコピーが作成された後、プロセス制御はス
テップ258に進み、そこで、クライアント表示のコピ
ーへのポインタと、デュプリケートメソッドへのコール
から受け取られたmテーブルポインタとを含む新しいオ
ブジェクトレファレンスが作成される。新オブジェクト
レファレンスがステップ258で作成された後、プロセ
ス制御は前進して新しく作成されたオブジェクトレファ
レンスを返す。クライアント表示のコピーを作成するス
テップとクライアント表示のコピーへのポインタを含む
オブジェクトレファレンスを作成するステップとは、オ
ブジェクトレファレンスを複製する場合に使用されるい
くつかのメソッドに特有であることを理解しなければな
らない。
【0050】各サブコントラクトは異なるデュプリケー
トメソッドをそのサブコントラクトに関連するクライア
ント表示に結びつけることを理解しなければならない。
例として、上述のように、レファレンスカウントを増分
させるステップと、オリジナルのクライアント表示を含
むオブジェクトレファレンスを作成するステップとは、
上記メソッドの一つの一部であり、クライアント表示の
コピーを作成するステップと、クライアント表示のコピ
ーを含むオブジェクトレファレンスを作成するステップ
とは、別の上記メソッドの一部である。これらのメソッ
ドは、新しいオブジェクトレファレンスが作成されたと
きは常に、サーバントオブジェクトに接触するサブコン
トラクトに関係する追加処理を含むことができる。
【0051】デュプリケートメソッドは、通常、クライ
アント表示に関連する他のオペレーション、またはメソ
ッド、によってコールされる。例として、デュプリケー
トメソッドは、ナローメソッド、アンマーシャルメソッ
ド、およびデストリンジファイメソッド等(すべてクラ
イアント表示に属するメソッド)によってコールでき
る。先に検討したように、これらのメソッドがコールさ
れるときに、サーバントがクライアントに対してローカ
ルプロセスにあるか否かを決定することによって、作成
されたオブジェクトレファレンスをローカルまたはリモ
ートmテーブルのいずれかと関連させることが可能にな
る。それによってローカルプロセスの識別、従ってリク
エストを処理するためのより短い流れ経路の利用が可能
になるので、オブジェクト呼出の性能が改善される。
【0052】次に図8を参照して、本発明の一実施例に
よる、サーバントがローカルかリモートかを決定するオ
ブジェクトレファレンスをナロー化する(narrowing) メ
ソッドを説明する。オブジェクトレファレンスをナロー
化することは、基本的に、オブジェクトレファレンスを
一般タイプから特定、つまり目標タイプに変換すること
である。オブジェクトレファレンスをナロー化すること
は、オブジェクトレファレンスのコピー作成のために使
用される一メソッドである。異なるサブコントラクトは
異なるナローメソッドを持つ異なるクライアント表示を
持ち得ることを理解しなければならない。オブジェクト
レファレンスをナロー化するプロセスはステップ280
で開始され、そこで、クライアント表示のナローメソッ
ドが、関連ローカルまたはリモートmテーブルを目標タ
イプの引数として使用してコールされる。ステップ28
2で、ナロー化が達成されるか否かについて決定が行な
われる。ナロー化が達成できないと決定された場合、プ
ロセス制御はステップ283で失敗状態を返す。しか
し、ナロー化が達成できる旨ステップ282で決定され
た場合、プロセス制御はステップ286に進み、サーバ
ントがローカルプロセスにあるか否かの決定が行なわれ
る。サーバントがローカルプロセスにあるか否かの決定
は、サーバントがローカルプロセスにあるか否かを決定
する目的で特別に書かれた関数、例えば上記のNEO分
散オブジェクトシステムのクライアント表示のイズ_ロ
ーカルメソッドをコールすることによって行なわれる。
クライアント表示のイズ_ローカルメソッドは、各サブ
コントラクトとクライアント表示に特有である。ローカ
ルプロセスが単にローカルマシン上で実行されるプロセ
スを指すだけではないことを理解しなければならない。
そうではなく、サーバントがローカルプロセスにあるか
否かの決定は、サーバントが同一プロセスにあるか否か
の決定なのである。ステップ286の結果が肯定的な場
合、すなわちサーバントがローカルプロセスにある場
合、クライアント表示のデュプリケートメソッドが、ロ
ーカルmテーブルを持つナロー化されたオブジェクトレ
ファレンスを作成するために、ローカルmテーブルを引
数として使用してステップ288でコールされる。ナロ
ーメソッドにパスされたmテーブルは目標インタフェー
ス、つまりナロー化オブジェクトレファレンスが適合す
べきインタフェースに関係するmテーブルであることを
理解しなければならない。クライアント表示のデュプリ
ケートメソッドは、指定のmテーブルポインタを含むオ
ブジェクトレファレンスを作成し、図7に関して先に記
載されたように、作成されたオブジェクトレファレンス
を返すだろう。次に、新オブジェクトレファレンスはナ
ローオペレーションの結果として返される。
【0053】サーバントがローカルプロセスにないとの
決定がステップ286で行われた場合、プロセス制御は
ステップ290に進み、そこで、リモートmテーブルを
引数として使用して、クライアント表示のデュプリケー
トメソッドに対するコールが行われる。これが、リモー
トmテーブルポインタを持つナロー化されたオブジェク
トレファレンスを作成する。再度述べておくが、デュプ
リケートメソッドが、図5に関して先に説明したオブジ
ェクトレファレンスを作成するのである。新オブジェク
トレファレンスは、次に、ナローオペレーションの結果
として返される。
【0054】クライアント表示が一つのリモートmテー
ブルと多数のローカルmテーブルに関連する場合、一
旦、サーバントがローカルプロセスにあるとステップ2
86で決定されると、プロセス制御は、ローカルmテー
ブルを持つナロー化されたオブジェクトレファレンスを
作成するステップのステップ288と同じ一般的な目的
に役立つステップ288aに進む。しかしながら、ステ
ップ288aは、クライアント表示が関連する一つ以上
のローカルmテーブルが存在するときは、ナロー化され
たオブジェクトレファレンスの作成に使用すべき適切な
ローカルmテーブルの識別を含む。全体ステップ288
aはサーバントオブジェクトを実装するための適切なm
テーブルを識別するステップであるステップ292を含
む。適切なmテーブルの識別は、サブコントラクト、す
なわちクライアント表示固有のステップである。例とし
て、サブコントラクトに関連するインプリメンテーショ
ンレポジトリを使用して、クライアント表示によって表
されたサーバントオブジェクトの実装に適したローカル
mテーブルを配置することができる。多数の関連mテー
ブルを持つクライアント表示の場合、ナローメソッドへ
の引数としてパスされるローカルmテーブルは、そのロ
ーカルmテーブルがサーバントオブジェクトの実装に適
したローカルmテーブルであると判明しない限り、通常
使用されない。一旦、適切なローカルmテーブルが識別
されると、クライアント表示のデュプリケートメソッド
が、ローカルmテーブルポインタを持つナロー化オブジ
ェクトレファレンスを作成するために、ローカルmテー
ブルを引数として使用してステップ292でコールされ
る。次に、ナロー化オブジェクトレファレンスがコーラ
ーに返される。
【0055】代表的な分散オブジェクト指向システムで
オブジェクトレファレンスを作成する他のメカニズムも
存在する。そのようなメカニズムの一つは、リクエスト
または回答の中で引用されるオブジェクトレファレンス
のアンマーシャルである。当業者にはよく理解されるよ
うに、ネットワークの通信ラインまたはプロセス内通信
ポートを介して転送される情報は、通常、マーシャルバ
ッファで受け取られる。受信された情報は、選ばれたネ
ットワークまたはプロセス内通信プロトコルに関連する
フォーマットで着信する。アンマーシャルとは、マーシ
ャルバッファで受け取った情報を、非ネットワーク環境
で有意のフォーマットに変換するプロセスのことを指
す。
【0056】分散オブジェクト指向環境では、クライア
ントとサーバー間の大部分の通信は、リクエストや回答
の目標であるオブジェクトの識別を意図するオブジェク
トレファレンスで開始される。リクエストや回答も、通
常、追加情報を含み、その情報は、目標オブジェクトへ
の伝達のためのインタフェースパラメータ、例外パラメ
ータ、データ等の形を取ることができる。時には、リク
エストや回答を伴うデータおよび/またはパラメータ
は、リクエストや回答を伝送するために使用されるのに
反して、目標オブジェクトに伝達されると予想される追
加のオブジェクトレファレンスを含むこともある。アン
マーシャル用のメカニズムは、少なくとも一部分、目標
オブジェクトレファレンスに基づいてリクエストを正し
く伝送するとともに、目標オブジェクトによって使用で
きる形に追加情報を(必要に応じて)変換するように、
構成しなければならない。かくして、オブジェクトレフ
ァレンスが目標オブジェクトに伝達すべきパラメータや
他のデータの一部であるときは、アンマーシャル関数
は、目標プロセスに有意なオブジェクトレファレンスを
効果的に作成しなければならない。これはオブジェクト
レファレンスを作成する別の潜在的メカニズムであるか
ら、「データ」オブジェクトレファレンスが、リクエス
トや回答を受け取っているプロセスに対する「ローカ
ル」オブジェクトを指すのか「リモート」オブジェクト
を指すかを決定することが大切である。
【0057】次に図9を参照して、本発明の一実施例に
よる、リクエストと回答に記載されるデータオブジェク
トレファレンスをアンマーシャルするメソッドを説明す
る。データオブジェクトレファレンスのインタフェース
タイプが分かっている限り、適切なタイプのデータオブ
ジェクトレファレンス用のORB提供のジェネリックア
ンマーシャル用ルーチンに対するコールがステップ30
0で行なわれる。この例の目的では、データオブジェク
トレファレンスに関連するインタフェースを「インタフ
ェースY」と呼ぶ。アンマーシャルメソッドは、インタ
フェースY用マーシャルバッファと共に、インタフェー
スY用リモートmテーブルへのポインタとインタフェー
スY用ローカルmテーブルへのポインタの両者を持つO
RB提供のジェネリックアンマーシャル用ルーチンをコ
ールする。
【0058】ORBによって提供されたジェネリックア
ンマーシャル用ルーチンがコールされた後、データオブ
ジェクトレファレンスに関連するサブコントラクト識別
子、すなわちサブコントラクトIDがステップ303で
取得される。オブジェクトレファレンス内のサブコント
ラクト識別子の場所が分かっているので、「ピーク」メ
ソッドを使用してデータオブジェクトレファレンス内か
らサブコントラクト識別子を取得できる。ピークメソッ
ドは、抽出はしないが、マーシャルバッファの既知の場
所からサブコントラクト識別子を読み取る。一旦、オブ
ジェクトレファレンス用のサブコントラクトIDが分か
ると、オブジェクトレファレンスに対応するアンマーシ
ャル関数が、サブコントラクトIDをキーとして使って
サブコントラクトレジストリで調査される。 ステップ
306で求められたアンマーシャル関数は、インタフェ
ースYに関連する引数、すなわちリモートとローカルの
mテーブル、ならびにマーシャルバッファを使って、ス
テップ309でコールされる。アンマーシャル関数への
コールの後、プロセス制御はステップ312に進み、そ
こで、マーシャルバッファ内の情報からクライアント表
示が作成される。次に、マーシャルバッファポインタが
マーシャルバッファ内の次のアイテムに「加え」れらる
か、移される。ステップ315では、作成されたクライ
アント表示のホスト識別子とサーバー識別子、すなわち
ホストIDとサーバーIDとが、現行プロセスのホスト
IDおよびサーバーIDと同一か否か決定される。それ
に従って、クライアント表示のローカルフラグが、次
に、ステップ315でセットされる。すなわち、オブジ
ェクトレファレンスから抽出されたホストIDおよびサ
ーバーIDが現行プロセスのホストIDおよびサーバー
IDとマッチした場合、ローカルフラグはローカルサー
バントを示す状態にセットされる。さもなければ、ロー
カルフラグはリモートサーバントを示す状態にセットさ
れる。ステップ320では、サーバントがローカルプロ
セスにあるか否か決定される。図8に関して先に説明し
たように、サーバントがローカルプロセスにあるか否か
の決定は、サーバントがローカルプロセスにあるか否か
を決定するために特別に書かれたクライアント表示固有
関数をコールすることによって行なわれる。この場合、
その関数がクライアント表示のローカルフラグをチェッ
クする。サーバントがローカルプロセスにある場合、プ
ロセス制御はステップ323に進み、クライアント表示
のデュプリケートメソッドへのコールが、ローカルmテ
ーブルを持つアンマーシャルされたオブジェクトレファ
レンスを作成するために、ローカルmテーブルを引数と
して使用して行なわれる。次に、新しく作成されたアン
マーシャルされたオブジェクトレファレンスが返され
る。
【0059】クライアント表示が、一つのリモートmテ
ーブルと多数のローカルmテーブルに関連する場合、一
旦、サーバントがローカルプロセスにある旨ステップ3
20で決定されると、プロセス制御はステップ323a
に進む。ステップ323aは、ローカルmテーブルを持
つアンマーシャルされたオブジェクトレファレンスを作
成するステップであるステップ323と同じ全体的な目
的に役立つ。しかしながら、ステップ323aは、クラ
イアント表示が関連する一つ以上のローカルmテーブル
が存在するときは、ナロー化されたオブジェクトレファ
レンスの作成に使用するための適切なローカルmテーブ
ルの識別を含む。全体ステップ323aは、サーバント
オブジェクトの実装用の適切なmテーブルを識別するス
テップのステップ324を含む。適切なmテーブルの識
別は、サブコントラクト、すなわちクライアント表示固
有ステップである。複数の関連mテーブルを持つクライ
アント表示のケースでは、アンマーシャルメソッドへの
引数としてパスされるローカルmテーブルは、ローカル
mテーブルがサーバントオブジェクトの実装用の適切な
ローカルmテーブルであると判明しない限り、通常、使
用されない。一旦、適切なローカルmテーブルが識別さ
れると、クライアント表示のデュプリケートメソッド
が、ローカルmテーブルポインタを持つアンマーシャル
されたオブジェクトレファレンスを作成するために、ロ
ーカルmテーブルを引数として使用してステップ325
でコールされる。次の、そのアンマーシャルされたオブ
ジェクトレファレンスがコーラーに返される。
【0060】サーバントがローカルプロセスにない旨ス
テップ320で決定された場合、プロセス制御はステッ
プ320からステップ326に進み、そこで、リモート
mテーブルを持つアンマーシャルされたオブジェクトレ
ファレンスを作成するために、クライアント表示のデュ
プリケートメソッドがリモートmテーブルを引数として
使ってコールされる。ステップ326が完了すると、ア
ンマーシャルされたオブジェクトレファレンスが返され
る。クライアント表示のデュプリケートメソッドに対す
るコールは図5に関して上記で説明されている。
【0061】次に図10を参照して、マーシャルバッフ
ァの情報からクライアント表示を作成する別のメソッド
を、既知のタイプのインタフェース用のオブジェクトレ
ファレンスをアンマーシャルする関連において説明す
る。この実施例では、オブジェクトレファレンスをアン
マーシャルするプロセスは、クライアント表示を作成す
るステップまでは図9に記載のプロセスと同一である。
クライアント表示の作成はステップ330で開始され、
そこで、オブジェクトレファレンスに関係する情報がマ
ーシャルバッファから抽出される。ステップ330は枠
321aの一部であり、適切なマーシャル関数を調べる
ステップの、図7のステップ306から直接に続く。オ
ブジェクトレファレンスに関係する情報がステップ33
0でマーシャルバッファから抽出された後、ステップ3
32で、参照されたサーバントオブジェクトレファレン
ス用のクライアント表示がすでの存在しているか否かの
決定が行なわれる。決定の結果が否定的な場合、プロセ
ス制御はステップ334に進み、そこで、クライアント
表示が、ステップ330で先に抽出されたオブジェクト
レファレンスに関係する情報を使って作成される。次
に、ステップ315aで、新しく作成されたクライアン
ト表示の中のホストIDとサーバーIDとが現行プロセ
スのホストIDおよびサーバーIDと同一か否かについ
ての決定が行なわれる。一旦、決定が行なわれると、ク
ライアント表示のローカルフラグがそれに従ってセット
される。サーバントが同一プロセスにあるか否かを決定
するために使用されるメカニズムには、違いがあること
を理解しなければならない。例として、ホスト内コール
がサポートされない実施例では、ホストIDは使用され
ないだろう。一旦、ローカルフラグがセットされると、
次にプロセス制御はステップ320に進む。このステッ
プは、図9に関して上記に説明したように、適当なサー
バントがローカルプロセスにあるか否かを決定するステ
ップである。オブジェクトレファレンスのためのクライ
アント表示がすでに存在している旨ステップ332で決
定された場合、プロセス制御はステップ332から直接
にステップ320に進み、適切なサーバントがローカル
プロセスにあるか否かの決定が行なわれる。一旦、プロ
セス制御が、適切なサーバントはローカルプロセスにあ
るか否かを決定するステップ、すなわちステップ320
に到達すると、既知のタイプを持つインタフェース用の
オブジェクトレファレンスをアンマーシャルするステッ
プの残りは、図9に関して先に説明したものと同一ステ
ップである。
【0062】図11を参照して、本発明の一実施例によ
る、サーバントがローカルかリモートかを決定するオブ
ジェクトレファレンスをデストリンジファイ(destringi
fying)するメソッドを説明する。オブジェクトレファレ
ンスを「デストリンジファイ」するとは、ASCII文
字列を受取用プロセスによって理解可能なオブジェクト
レファレンスに変換することを意味する。すなわち、オ
ブジェクトレファレンスのデストリンジファイは、AS
CII文字列の「ディヘクシファイ(dehexifying) 」を
必要とする。デストリンジファイのプロセスは新オブジ
ェクトレファレンスの作成をもたらし、記載の実施例で
はステップ350で開始され、そこで、ストリンジファ
イされたオブジェクトレファレンスであるASCII文
字列が、マーシャルバッファによってデコードするのに
適した文字列に変換される。記載の実施例では、文字列
はマーシャルバッファによってデコードするのに適した
オクテットの二進ストリング、つまりストリームであ
る。ASCII文字列は、通常、文字列の初めにヘッダ
ーを含むことに注意しなければならない。ASCII文
字列がオクテットの二進ストリームに変換されると、ヘ
ッダーは無視、すなわち完全にマスクされる。オクテッ
トの二進ストリームが形成された後、プロセス制御はス
テップ352に進み、そこで、オクテットの二進ストリ
ームのためのマーシャルバッファが作成される。次にス
テップ354で、アンマーシャルメソッドのCORBA
オブジェクト版がコールされる。すなわち、図7に関し
て上述したアンマーシャルメソッドが、インタフェース
Y用のオブジェクトレファレンスをアンマーシャルする
ためにコールされる。この場合、既知のタイプのインタ
フェース、すなわちインタフェースYは、CORBAオ
ブジェクト、すなわちY=CORBA::Object
である。アンマーシャルメソッドがコールされた後、デ
ストリンジファイされたオブジェクトレファレンスが返
される。
【0063】上記に説明したメソッド、すなわちナロ
ー、アンマーシャル、およびデストリンジファイメソッ
ドも、オブジェクトレファレンスを作成するために使用
できる。これらのメソッドにはクライアント表示のデュ
プリケートメソッドをコールできるものもあれば、でき
ないものもある。一般に、ORBに固有のインプリメン
テーション定義、インタフェース定義、およびユーザー
によって提供されるレファレンスデータが分かっている
か与えられると、オブジェクトレファレンスをサーバン
トから作成することができる。インプリメンテーション
定義は現行プロセスのホストIDとサーバーIDとを含
む。インプリメンテーション定義、インタフェース定
義、およびレファレンスデータが分かっていれば、オブ
ジェクトレファレンスを作成するために明白なオブジェ
クトアダプタを必要としない。しかしながら、レファレ
ンスデータを明白に規定する必要がある場合は、オブジ
ェクトレファレンスを作成するためにオブジェクトアダ
プタが必要である。
【0064】次に図12を参照して、本発明の一実施例
による、サーバントがローカルかリモートかを決定する
オブジェクトレファレンスを作成するメソッドを、オブ
ジェクトアダプタ(OA)を使用してオブジェクトレフ
ァレンスの作成に関連して説明する。OAは引数として
インプリメンテーション定義(例えばNEO分散オブジ
ェクトシステムにおけるIMPL_DEF)、インタフ
ェース定義(例えばINTF_DEF)、およびレファ
レンスデータ(例えばREF_DATA)を使用して、
ローカルプロセスのオブジェクトレファレンスインタフ
ェースを作成する。この実施例では、INTF_DEF
の使用はオプションである。プロセスはステップ402
で開始され、そこで、引数IMPL_DEFを使って、
作成すべきオブジェクトレファレンスに関連するサブコ
ントラクトが決定される。IMPL_DEFは、どのサ
ブコントラクトが適切であるかを決定することによっ
て、使用すべきサブコントラクトを識別する。ステップ
404では、IMPL_DEFによって識別されたサブ
コントラクトに適したクライアント表示が、「クリエー
ト」引数、すなわちクライアント表示の作成に必要な情
報を規定する引数で提供された情報を使って作成され
る。適切なクライアント表示が作成された後、プロセス
の流れはステップ406に進み、そこで、作成されたク
ライアント表示の中のホストIDとサーバーIDが、現
行プロセスのホストIDおよびサーバーIDと同一か否
かの決定が行なわれる。一旦、決定が行なわれると、そ
れに従ってクライアント表示のローカルフラグがセット
される。プロセス制御は、次に、ステップ408に進
み、作成されたクライアント表示が現行プロセスに対し
てローカルか否かを示すためにローカルフラグをセット
するか否かの決定が行なわれる。すなわち、ステップ4
08では、ローカルフラグが正しくセットされているか
否かを決定する。決定が肯定的な場合、すなわち、ロー
カルフラグが正しくセットされている旨決定された場
合、ステップ410で、クライアント表示のデュプリケ
ートメソッドへのコールがCORBAオブジェクトロー
カルmテーブルへのポインタを使って行なわれる。次い
で、結果が返される。
【0065】クライアント表示が2つ以上の関連ローカ
ルmテーブルを持つ場合、一旦、ローカルフラグが正し
くセットされると、プロセスの流れはステップ410a
に移る。ステップ410aは、クライアント表示が関連
する2つ以上のローカルmテーブルが存在するときは、
ナロー化オブジェクトレファレンスを作成する場合に使
用すべき適切なローカルmテーブルの識別を含む。全体
ステップ410aは、サーバントオブジェクトの実装の
ための適切なmテーブルを識別するステップであるステ
ップ411を含む。適切なmテーブルの識別は、サブコ
ントラクト、すなわちクライアント表示固有のステップ
である。多数の関連mテーブルを持つクライアント表示
の場合には、ローカルmテーブルがサーバントオブジェ
クトの実装用の適切なローカルmテーブルであると判明
しない限り、ナローメソッドに対する引数としてパスさ
れるローカルmテーブルは、通常、使用されない。一
旦、適切なローカルmテーブルが識別されると、識別さ
れたCORBAオブジェクトローカルmテーブルへのポ
インタを使って、ステップ413で、クライアント表示
のデュプリケートメソッドに対するコールが行なわれ
る。デュプリケートメソッドへのコールの後、コールの
結果が返される。
【0066】ローカルフラグがセットされていないか、
間違ってセットされている旨ステップ408で決定され
た場合、プロセス制御はステップ412に進み、そこ
で、クライアント表示デュプリケートメソッドに対する
コールが、CORBAオブジェクトのリモートmテーブ
ルへのポインタを使って行なわれる。CORBAオブジ
ェクトリモートmテーブルによるクライアント表示のデ
ュプリケートメソッドに対するコールが完了すると、コ
ールの結果が返される。
【0067】先に記載したように、インプリメンテーシ
ョン定義、インタフェース定義、およびレファレンスデ
ータが提供されると、オブジェクトレファレンスのサー
バントベースの作成が、通常、可能である。レファレン
スデータが提供されず、それを規定しなければならない
場合、図12に関して説明したように、オブジェクトレ
ファレンスを作成するためにオブジェクトアダプタが必
要である。しかしながら、レファレンスデータが提供さ
れた場合、オブジェクトレファレンスを作成するための
ナロー、アンマーシャル、またはデストリンジファイメ
ソッドの使用に代わるものとして、オブジェクトレファ
レンスを作成するためのサーバー表示の使用がある。サ
ーバー表示は、サーバントと同一のプロセスにあるが、
オブジェクトレファレンスを作成するために使用でき
る。サーバー表示がオブジェクトレファレンスを作成す
るので、作成されたオブジェクトレファレンスはサーバ
ントと同一プロセスにある。
【0068】次に図13を参照して、サーバー表示を使
ってオブジェクトレファレンスを作成するプロセスを説
明する。用語のサーバー表示、つまりサーバー「レプ」
と、サーバント表示、つまりサーバント「レプ」とは、
互換性をもって使用できることを理解しなければならな
い。リモートとローカルmテーブルを引数として、サー
バントに付されたサーバー表示によってオブジェクトレ
ファレンスが作成される。ステップ450では、サーバ
ー表示に対応するクライアント表示が作成される。関連
するサブコントラクトに適したクライアント表示の作成
に必要な引数は、サーバー表示の中で発見することがで
きる。クライアント表示が作成された後、プロセス制御
はステップ452に進み、そこで、クライアント表示と
ローカルmテーブルへのポインタとを含むオブジェク
ト、つまりオブジェクトレファレンスが作成される。次
に、ステップ454で、新たに作成されたオブジェクト
レファレンスが返される前にサーバーと同一プロセスの
クライアント表示が作成されたことを示すために、ロー
カルフラグを正しくセットすることができる。ローカル
フラグを正しくセットすることは、クライアント表示、
すなわちオブジェクトレファレンスが、サーバントと同
一プロセスにあることを示す。
【0069】本発明は、上記のように、コンピュータシ
ステムに格納されるデータを伴う様々なプロセスステッ
プを使用する。これらのステップは物理量の物理的操作
を必要とするステップである。通常、必ずしもそうでは
ないが、これらの量は格納、転送、結合、比較、その他
の操作が可能な電気的または磁気的信号の形を取る。主
として一般的慣行の理由で、これらの信号をビット、バ
リュー、エレメント、変数、キャラクタ、データ構造等
と呼ぶと便利な場合がある。しかしながら、これらの用
語や類似の用語は、すべて、適切な物理量に関連される
べきであり、また、これらの量に付される単なる便利な
ラベルに過ぎないことを忘れてはならない。
【0070】更に、実行される操作は識別、実行、また
は比較等の用語で呼ばれることが多い。本発明の一部を
形成する、本明細書に記載のオペレーションでは、これ
らのオペレーションはマシンオペレーションである。本
発明のオペレーションを実行するために便利なマシン
は、汎用ディジタルコンピュータやその他類似の装置を
含む。いずれにしても、コンピュータを操作する場合の
オペレーションのメソッドと、計算自体のメソッドとの
相違を忘れてはならない。本発明は、電気的またはその
他の物理的信号を処理して他の望ましい物理信号を発生
させる場合の、コンピュータを操作するためのメソッド
ステップに関する。
【0071】本発明は、これらのオペレーションを実行
する装置にも関係する。この装置は、要求される目的の
ために特別に製造してもよいし、また、それはコンピュ
ータに格納されたコンピュータプログラムによって選択
的に作動されるか再構成される汎用コンピュータでもよ
い。本明細書で提示されるプロセスは、特定のコンピュ
ータやその他装置に固有の関係を持つものではない。特
に本明細書の教示に従って書かれたプログラムを使って
様々な汎用マシンを使用できるし、また、要求されるメ
ソッドステップを実行するためにより特殊化された装置
を製造する方が便利な場合もある。これらの様々なマシ
ンに必要な構造は上記の説明から明らかであろう。
【0072】また、本発明は、更に、様々なコンピュー
タ実装オペレーションを実行するためのプログラム命令
を含むコンピュータ読取り可能メディアに関係する。メ
ディアとプログラム命令は、本発明の目的のために特別
に設計、製造されたものでよいし、また、コンピュータ
ソフトウェア技術の専門家に周知の利用可能な類のもの
でもよい。コンピュータ読取り可能メディアの例は、こ
れに限定されるわけではないが、ハードディスク、フロ
ッピーディスク、および磁気テープ等の磁気メディア;
CD−ROMディスク等の光学メディア;オプティカル
ディスク等の磁気光学的メディア;およびプログラム命
令を格納、実行するために特別に構成されたハードウェ
アディバイス、例えばリードオンリーメモリ(ROM)
およびランダムアクセスメモリ(RAM)を含む。プロ
グラム命令の例は、コンパイラによって製作されたマシ
ンコードと、インタプリタを使ってコンピュータによっ
て実行されるハイレベルのコードを含むファイルの両者
を含む。
【0073】図14は、本発明による典型的なコンピュ
ータシステムを示す。コンピュータシステム500は、
主記憶装置504(通常、リードオンリーメモリ、また
はROMと呼ぶ)、および主記憶装置506(通常、ラ
ンダムアクセスメモリ、またはRAMと呼ぶ)を含む記
憶装置に連結された任意の数のプロセッサ502(中央
処理装置、つまりCPUとも呼ぶ)を含む。当業者には
周知のように、ROM504は、データと命令をCPU
に一方向的に転送する働きがあり、RAM506は、通
常、データと命令を双方向的に転送するために使用され
る。主記憶装置504、506は、共に、上記のように
任意の適切なコンピュータ読取り可能媒体を含むことが
できる。大容量記憶装置508もCPU502に双方向
的に連結されて、追加のデータ記憶容量を提供する。大
容量記憶装置508はプログラム、データ等を格納する
ために使用され、通常、主記憶装置504、506より
も遅いハードディスク等の二次記憶媒体である。大容量
記憶装置508は、磁気または紙テープリーダーやその
他の周知の装置の形を取ることができる。大容量記憶装
置508内に保持される情報は、適切な場合に、バーチ
ュアルメモリとして、RAM506の一部として標準的
に組み込まれることはよく理解されるだろう。CD−R
OM514等の特定の大容量記憶装置もデータを一方向
的にCPUに送る。
【0074】CPU502も、これに限定されるわけで
はないが、ビデオモニタ、トラックボール、マウス、キ
ーボード、マイクロホン、タッチセンシティブディスプ
レイ、トランスデューサカードリーダ、磁気または紙テ
ープレコーダ、タブレット、スタイラス、音声や手書き
の認識装置、その他の周知の入力装置、例えば、勿論、
他のコンピュータ等の、一つ以上の入出力装置510に
連結される。最後に、CPU502は、オプションとし
て、512で概略的に示されるネットワーク接続を使用
してコンピュータや通信ネットワークに連結することが
できる。上記のネットワーク接続によって、CPUは、
上記のメソッドステップを実行する中でネットワークか
らの情報を受け取ったり、ネットワークに情報を出力す
るものと予想される。上記の装置と材料は、コンピュー
タハードウェアとソフトウェア技術の専門家には周知の
ものであろう。
【0075】本発明の実施例を一つだけ説明したが、本
発明は、その精神と範囲から逸脱することなく、他の多
くの形式で具体化し得ることは言うまでもない。特に、
本発明に関して記載されたmテーブルは多くの異なる形
を取ることができる。例として、これらの形は、これに
限定されるわけではないが、従来のC++vテーブルに
似た構造を持つフラットmテーブル、およびツリー構造
のmテーブルを含む。従って、記載の実施例は説明のた
めであって、限定のためではないと見做すべきであり、
本発明は下記クレームならびにそれらに相当する仕様に
よって定義されるものとする。
【図面の簡単な説明】
【図1】分散オブジェクトシステムの象徴的な概要図で
ある。
【図2】クライアントによるリクエストが、分散オブジ
ェクトシステムのクライアント側とサーバー側のアーキ
テクチャ、および分散オブジェクトシステムのクライア
ント側とサーバー側の間のインターフェースを介してど
のように流れるかを示す概略説明図である。
【図3】オブジェクトレファレンスの概略表示図であ
る。
【図4】ファットポインタ、クライアント表示、および
分散オブジェクトレファレンスに関連するメソッドの間
のインタフェースの概略説明図である。
【図5】本発明の一実施例による、オブジェクトの呼出
に係わるステップを説明するプロセス流れ図である。
【図6】本発明の一実施例による、ローカルスタブの処
理に係わるステップを説明するプロセス流れ図である。
【図7】本発明の一実施例による、オブジェクトレファ
レンスを複製する(duplicating) 処理に係わるステップ
を説明するプロセス流れ図である。
【図8】本発明の一実施例による、オブジェクトレファ
レンスをナロー化する(narrowing) 処理に係わるステッ
プを説明するプロセス流れ図である。
【図9】本発明の一実施例による、オブジェクトレファ
レンスをアンマーシャル(unmarshaling)する処理に係わ
るステップを説明するプロセス流れ図である。
【図10】本発明の一実施例による、図7に示すオブジ
ェクトレファレンスをアンマーシャルする処理において
マーシャルバッファの情報からクライアント表示を作成
するステップのための代替メソッドを説明するプロセス
流れ図である。
【図11】本発明の一実施例による、オブジェクトレフ
ァレンスをデストリンジファイする(destringifying)処
理に係わるステップを説明するプロセス流れ図である。
【図12】本発明の一実施例による、オブジェクトレフ
ァレンスを作成するためのオブジェクトアダプタの使用
に係わるステップを説明するプロセス流れ図である。
【図13】本発明の一実施例による、オブジェクトレフ
ァレンスを作成するためのサーバー表示の使用に係わる
ステップを説明するプロセス流れ図である。
【図14】本発明による代表的なコンピュータシステム
の説明図である。
フロントページの続き (72)発明者 ピーター ビー. ケスラー アメリカ合衆国, カリフォルニア州, パロ アルト, ヴァードサ ドライヴ 4121 (72)発明者 サンジェイ アール. ラディア アメリカ合衆国, カリフォルニア州, フリーモント, ボアー サークル 883 (72)発明者 グラハム ハミルトン アメリカ合衆国, カリフォルニア州, パロ アルト, デイヴィッド コート 3143

Claims (30)

    【特許請求の範囲】
  1. 【請求項1】トランスポート層と、該トランスポート層
    の上にあるクライアント側の、複数のローカルメソッド
    テーブルと複数のリモートメソッドテーブルとを含むメ
    ソッドテーブルディスパッチ層、とを含む、クライアン
    トオブジェクトからサーバントオブジェクトへコールを
    ディスパッチするためのディスパッチメカニズムを有す
    る分散クライアント/サーバー・ベースのコンピューテ
    ィングシステムにおいて、第1セットの選択されたクラ
    イアント表示がローカルメソッドテーブルと関連すると
    共に第2セットの選択されたクライアント表示がリモー
    トメソッドテーブルと関連し、クライアントからサーバ
    ントへコールを伝送するメソッドが、 該クライアントとサーバントが同一プロセスを共有しな
    いときは、リモートメソッドテーブルと該トランスポー
    ト層を使って該コールを伝送するステップ、および
    該クライアントとサーバントが同一プロセスを共有す
    るときは、ローカルメソッドテーブルを使い、かつ該ト
    ランスポート層をバイパスすることによって該コールを
    伝送するステップ、を含むメソッド。
  2. 【請求項2】関連オブジェクトを独特なメソッドで識別
    するオブジェクトレファレンスを利用するように構成さ
    れた分散クライアント/サーバー・べースのコンピュー
    ティングシステムにおいて、 サービスのためのリクエストを示す複数のクライアント
    表示であって、各オブジェクトレファレンスは関連する
    クライアント表示を有し、選択されたクライアント表示
    は複数の異なるオブジェクトレファレンスと関連し得る
    ように成したクライアント表示、 呼び出しリクエストがトランスポート層を介して伝送さ
    れるように構成された、第1セットの該クライアント表
    示に関連したリモートディスパッチメソッド、を識別す
    るように構成されたリモートメソッドテーブル、および
    呼び出しリクエストがトランスポート層を介して伝送さ
    れることなくサーバントにパスするように構成された、
    第2セットの該クライアント表示に関連したローカルデ
    ィスパッチメソッド、を識別するように構成されたロー
    カルメソッドテーブル、を含む構成。
  3. 【請求項3】該オブジェクトレファレンスがそれぞれ関
    連クライアント表示を識別するように構成された第1ポ
    インタと、該メソッドテーブルの中の関連する一つを識
    別するように構成された第2ポインタとを含むように成
    した、請求項2に記載の構成。
  4. 【請求項4】各メソッドテーブルは関連スタブを識別す
    るように構成された複数のポインタを含み、かつ該メソ
    ッドテーブルの中の選択された一つへのポインタを含む
    各オブジェクトレファレンスが、該選択されたメソッド
    テーブルによって指示された関連スタブを有するように
    成した請求項2または3に記載の構成。
  5. 【請求項5】複数のリモートメソッドテーブルが、該第
    1セットのクライアント表示に関連するリモートディス
    パッチメソッドを識別するように構成されると共に、複
    数のローカルメソッドテーブルが、該第2セットのクラ
    イアント表示に関連するローカルディスパッチメソッド
    を識別するように構成された請求項2、3または4に記
    載の構成。
  6. 【請求項6】該複数のクライアントの少なくとも一部
    が、関連リモートメソッドテーブルと関連ローカルメソ
    ッドテーブルの両者を有するように成した請求項2〜5
    のいずれかに記載の構成。
  7. 【請求項7】クライアント表示に関連するリモートメソ
    ッドテーブルとローカルメソッドテーブルの少なくとも
    一方を有する複数のクライアント表示を持つ分散クライ
    アント/サーバー・ベースのコンピューティングシステ
    ムにおいて、 サーバントオブジェクトを識別するオブジェクトレファ
    レンスをナロー化するための、クライアントプロセス内
    で受け取られるリクエスト、を受け取るステップ、 該リクエストによって識別される該サーバントオブジェ
    クトが該クライアントプロセスにあるか否かを決定する
    プロセス、および該リクエストによって識別された該サ
    ーバントオブジェクトが該クライアントプロセスにある
    時は、ローカルメソッドテーブルを識別するナロー化さ
    れたオブジェクトレファレンスを作成するステップ、を
    含む、オブジェクトレファレンスをナロー化するメソッ
    ド。
  8. 【請求項8】該リクエストによって識別された該サーバ
    ントオブジェクトが該クライアントプロセスにないと決
    定されたときに、リモートメソッドテーブルを識別する
    ナロー化されたオブジェクトレファレンスを作成するよ
    うに成した請求項7に記載のメソッド。
  9. 【請求項9】クライアント表示に関連するローカルmテ
    ーブルとリモートmテーブルの一方を有する複数のクラ
    イアント表示を持つ分散クライアント/サーバー・ベー
    スのコンピューティングシステムにおいて、 サーバントオブジェクトを識別するオブジェクトレファ
    レンスをアンマーシャルするための、クライアントプロ
    セス内で受け取られるアンマーシャル用リクエストを受
    け取るステップ、 該リクエストによって識別された該サーバントオブジェ
    クトが該クライアントプロセスにあるか否かを決定する
    ステップ、 該リクエストによって識別された該サーバントオブジェ
    クトが該クライアントプロセスにあると決定されたとき
    は、ローカルメソッドテーブルを識別するアンマーシャ
    ルされたオブジェクトレファレンスを作成するステッ
    プ、および該リクエストによって識別された該サーバン
    トオブジェクトが該クライアントプロセスにないと決定
    されたときは、リモートメソッドテーブルを識別するア
    ンマーシャルされたオブジェクトレファレンスを作成す
    るステップ、を含む、オブジェクトレファレンスをアン
    マーシャルするメソッド。
  10. 【請求項10】オブジェクトレファレンスをアンマーシ
    ャルするための該リクエストが、クライアント表示に関
    連する該ローカルメソッドテーブルと該リモートメソッ
    ドテーブルの一方を使ってクライアント表示のアンマー
    シャル関数をコールするステップを備えるように成した
    請求項9に記載のメソッド。
  11. 【請求項11】該クライアント表示がそれに関連する複
    数の異なるローカルメソッドテーブルを有する、クレー
    ム9または10に記載のメソッドであって、更に、該ク
    ライアント表示に関連するローカルメソッドテーブルの
    中の特定の一つを選択するステップを含み、また該アン
    マーシャル関数への該コールが該選択されたローカルメ
    ソッドテーブルによって行なわれるように成した、メソ
    ッド。
  12. 【請求項12】クライアント表示に関連するローカルス
    タブとリモートスタブの一方を有する複数のクライアン
    ト表示を持つ分散クライアント/サーバー・ベースのコ
    ンピューティングシステムにおいて、 該ストリンジファイされた(stringified) オブジェクト
    レファレンスを、マーシャルバッファによるデコードに
    適した二進ストリングに変換するステップ、 該二進ストリングをカプセル化するためにマーシャルバ
    ッファを取得するステップ、および該マーシャルバッフ
    ァの内容をアンマーシャルするメソッドを呼び出すステ
    ップであって、該アンマーシャルは請求項9、10また
    は11のいずれか一つのメソッドを利用することによっ
    て達成されるように成した呼出ステップ、を含む、スト
    リンジファイされたオブジェクトレファレンスをデスト
    リンジファイするメソッド。
  13. 【請求項13】該ストリンジファイされたオブジェクト
    はASCIIストリンジファイドオブジェクトである請
    求項12に記載のメソッド。
  14. 【請求項14】分散クライアント/サーバー・ベースの
    コンピューティングシステムにおいて、 その関数が該クライアント/サーバー・ベースのオブジ
    ェクト指向オペレーティングシステムによって実行され
    るべき追加コードを含むか否かを示すように構成された
    ローカルフックを含む、該クライアントに関連するクラ
    イアント表示、によって指示された関数をコールするス
    テップ、 該クライアント表示によって指示された該関数が、該ク
    ライアントに対してローカルプロセスにあるスタブ関数
    であるローカルスタブ関数か否かを決定するステップ、
    および該クライアント表示によって指示された該関数が
    該ローカルスタブ関数であると決定されたときは、該ロ
    ーカルスタブ関数を実行するステップ、を含む、サーバ
    ントをクライアントから呼び出すメソッド。
  15. 【請求項15】該ローカルスタブ関数を実行するステッ
    プは、更に、下記のステップを備えるように成した、請
    求項14に記載のメソッド:追加コードを実行すべきこ
    とを該クライアント表示の該ローカルフックが示すか否
    かを決定するステップ、 該クライアント表示の該ローカルフックがアクティブで
    あると決定されたときに、該クライアント表示に関する
    情報を収集するように構成された、該クライアント表示
    のプレローカルディスパッチメソッド、をコールするス
    テップ、 該クライアント表示から該サーバントを取得するステッ
    プ、 該サーバントにおいて識別された、ローカルディスパッ
    チメソッドであるメソッド、をコールするステップ、お
    よび該プレローカルディスパッチメソッドに関連した、
    該クライアント表示のポストローカルディスパッチメソ
    ッド、をコールするステップ。
  16. 【請求項16】該プレローカルディスパッチメソッドと
    該ポストローカルディスパッチメソッドの間で情報をパ
    スするように構成された総称的ホルダーが該プレローカ
    ルディスパッチメソッドの該コールにパスされるように
    成した請求項15に記載のメソッド。
  17. 【請求項17】該プレローカルディスパッチメソッドが
    該クライアントからコールを受け取るための該サーバン
    トを準備するように成した請求項15または16に記載
    のメソッド。
  18. 【請求項18】該ポストローカルディスパッチメソッド
    が該サーバントを非活性化するように成した請求項1
    5、16、または17に記載のメソッド。
  19. 【請求項19】分散オブジェクトコンピューティングシ
    ステム内の分散サーバーオブジェクト上で定義されたオ
    ブジェクトメソッドを呼び出すためにコンピュータ読取
    り可能コードが具体化されているコンピュータ使用可能
    媒体を備えたコンピュータプログラムプロダクトであっ
    て、該分散オブジェクトコンピューティングシステムは
    関連オブジェクトを独特のメソッドで識別するオブジェ
    クトレファレンスを利用するように構成され、該コンピ
    ュータプログラムプロダクトは、 サービスのためのリクエストを示す複数のクライアント
    表示であって、各オブジェクトレファレンスは関連する
    クライアント表示を有し、選択されたクライアント表示
    が複数の異なるオブジェクトレファレンスと関連し得る
    ようなクライアント表示、 第1セットの該クライアント表示に関連する、呼出リク
    エストがトランスポート層を介して伝送されるように構
    成されたリモートディスパッチメソッド、を識別するよ
    うに構成されたリモートメソッドテーブル、および第2
    セットの該クライアント表示に関連する、呼出リクエス
    トがトランスポート層を介して伝送されることなくサー
    バントにパスするように構成されたローカルディスパッ
    チメソッド、を識別するように構成されたローカルメソ
    ッドテーブル、を備えた、構成用のコンピュータ読取り
    可能プログラムコードを備えたコンピュータプログラム
    プロダクト。
  20. 【請求項20】該オブジェクトレファレンスが、それぞ
    れ、関連するクライアント表示を識別するように構成さ
    れた第1ポインタと、該メソッドテーブルの中の関連す
    る一つを識別するように構成された第2ポインタとを含
    むように成した、請求項19に記載の、構成用のコンピ
    ュータ読取り可能プログラムコードを備えたコンピュー
    タプログラムプロダクト。
  21. 【請求項21】各メソッドテーブルが、関連スタブを識
    別するように構成された複数のポインタを含み、該メソ
    ッドテーブルの中の選択された一つへのポインタを含む
    各オブジェクトレファレンスが、該選択されたメソッド
    テーブルによって指示される関連スタブを有するように
    成した請求項19または20に記載の、構成用のコンピ
    ュータ読取り可能プログラムコードを備えたコンピュー
    タプログラムプロダクト。
  22. 【請求項22】該複数のクライアント表示の少なくとも
    一部が、関連リモートメソッドテーブルと関連ローカル
    メソッドテーブルの両者を有するように成した請求項1
    9、20、または21のいずれかに記載の、構成用のコ
    ンピュータ読取り可能プログラムコードを備えたコンピ
    ュータプログラムプロダクト。
  23. 【請求項23】分散オブジェクトコンピューティングシ
    ステム内の分散サーバントオブジェクト上で定義された
    オブジェクトメソッドを呼び出すためにコンピュータ読
    取り可能コードが具体化されているコンピュータ使用可
    能媒体を備えたコンピュータプログラムプロダクトであ
    って、該分散オブジェクトコンピューティングシステム
    は、クライアント表示に関連するリモートメソッドテー
    ブルとローカルメソッドテーブルの少なくとも一方を有
    する複数のクライアント表示を持ち、該コンピュータプ
    ログラムプロダクトは該コンピュータシステム内に下記
    ステップをもたらすためのコンピュータ読取り可能プロ
    グラムコードを備えたプロダクト:該サーバントオブジ
    ェクトを識別するオブジェクトレファレンスを処理する
    ためのリクエストを受け取るステップであって、該ナロ
    ー化リクエストはクライアントプロセス内で受け取ら
    れ、処理用の該リクエストは、該オブジェクトレファレ
    ンスをナロー化するためのリクエストと、該オブジェク
    トレファレンスをアンマーシャルするためのリクエスト
    の一方であるステップ、 該リクエストによって識別された該サーバントオブジェ
    クトがクライアントプロセスにあるか否かを決定するス
    テップ、 該リクエストによって識別された該サーバントオブジェ
    クトが該クライアントプロセスにあると決定されたとき
    は、ローカルメソッドテーブルを識別する処理されたオ
    ブジェクトレファレンスを作成するステップ、および該
    リクエストによって識別された該サーバントオブジェク
    トが該クライアントプロセスにないと決定されたとき
    は、リモートメソッドテーブルを識別する処理されたオ
    ブジェクトレファレンスを作成するステップ。
  24. 【請求項24】オブジェクトレファレンスをナロー化す
    るための該リクエストが、それに関連する該ローカルメ
    ソッドテーブルと該リモートメソッドテーブルの一方に
    よってクライアント表示のナロー関数をコールするステ
    ップを備えた、請求項23に記載の、コンピュータ読取
    り可能プログラムコードを備えたコンピュータプログラ
    ムプロダクト。
  25. 【請求項25】該クライアント表示が、それに関連する
    複数の異なるローカルメソッドテーブルを有する、請求
    項23または24に記載の、コンピュータ読取り可能プ
    ログラムコードを備えたコンピュータプログラムプロダ
    クトであって、該メソッドは、更に、該クライアント表
    示に関連する該ローカルメソッドテーブルの中の特定の
    一つを選択するステップを備え、かつ該デュプリケート
    関数へのコールは、該選択されたローカルメソッドテー
    ブルによって行なわれるように成した、コンピュータプ
    ログラムプロダクト。
  26. 【請求項26】オブジェクトレファレンスをアンマーシ
    ャルするための該リクエストが、関連する該ローカルメ
    ソッドテーブルと該リモートメソッドテーブルの一方に
    よってクライアント表示のアンマーシャル関数をコール
    するステップを備えた、請求項23に記載の、コンピュ
    ータ読取り可能プログラムコードを備えたコンピュータ
    プログラムプロダクト。
  27. 【請求項27】該クライアント表示がそれに関連する複
    数の異なるローカルメソッドテーブルを有する、請求項
    23または26に記載の、コンピュータ読取り可能プロ
    グラムコードを備えたコンピュータプログラムプロダク
    トであって、該メソッドは、更に、該クライアント表示
    に関連する該ローカルメソッドテーブルの中の特定の一
    つを選択するステップを備え、かつ該アンマーシャル関
    数への該コールが該選択されたローカルメソッドテーブ
    ルによって行なわれるように成した、コンピュータプロ
    グラムプロダクト。
  28. 【請求項28】分散オブジェクトコンピューティングシ
    ステム内の分散サーバーオブジェクト上で定義されたオ
    ブジェクトメソッドを呼び出すためにコンピュータ読取
    り可能コードが具体化されているコンピュータ使用可能
    媒体を備えたコンピュータプログラムプロダクトであっ
    て、該コンピュータシステム内に下記のステップをもた
    らすためのコンピュータ読取り可能プログラムコートを
    備えたコンピュータプログラムプロダクト:その関数が
    該クライアント/サーバー・ベースの分散オブジェクト
    コンピューティングシステムによって実行されるべき追
    加コードを含むか否かを示すように構成されたローカル
    フックを含む、該クライアントに関連するクライアント
    表示、によって指示された関数をコールするステップ、 該クライアント表示によって指示された関数が、該クラ
    イアントに対してローカルプロセスにあるスタブ関数で
    あるローカルスタブ関数であるか否か、を決定するステ
    ップ、および該クライアント表示によって指示された該
    関数が該ローカルスタブ関数であると決定されたとき
    に、該ローカルスタブ関数を実行するステップ。
  29. 【請求項29】該ローカルスタブ関数を実行するステッ
    プが、更に、下記のステップを備えるように成した、請
    求項28に記載の、コンピュータ読取り可能プログラム
    コードを備えたコンピュータプログラムプロダクト:追
    加コードを実行すべきことを該クライアント表示の該ロ
    ーカルフックが示すか否か、を決定するステップ、 該クライアント表示の該ローカルフックがアクティブで
    あると決定されたときに、該クライアント表示に関係す
    る情報を収集するように構成された、該クライアント表
    示のプレローカルディスパッチメソッド、をコールする
    ステップ、 該クライアント表示から該サーバントを取得するステッ
    プ、 ローカルディスパッチメソッドである、該サーバントの
    中で識別されたメソッド、をコールするステップ、およ
    び該プレローカルディスパッチメソッドに関連する、該
    クライアント表示のポストローカルディスパッチメソッ
    ド、をコールするステップ。
  30. 【請求項30】該プレローカルディスパッチメソッドと
    該ポストローカルディスパッチメソッドの間で情報をパ
    スするように構成された総称的ホルダーが、該プレロー
    カルディスパッチメソッドにパスされるように成した、
    請求項29に記載の、コンピュータ読取り可能プログラ
    ムコードを備えたコンピュータプログラムプロダクト。
JP9170755A 1996-06-26 1997-06-26 オブジェクト呼出の性能を改善するためのメソッドと装置 Pending JPH1078881A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/670684 1996-06-26
US08/670,684 US6718550B1 (en) 1996-06-26 1996-06-26 Method and apparatus for improving the performance of object invocation

Publications (1)

Publication Number Publication Date
JPH1078881A true JPH1078881A (ja) 1998-03-24

Family

ID=24691429

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9170755A Pending JPH1078881A (ja) 1996-06-26 1997-06-26 オブジェクト呼出の性能を改善するためのメソッドと装置

Country Status (3)

Country Link
US (1) US6718550B1 (ja)
EP (1) EP0817024A3 (ja)
JP (1) JPH1078881A (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003177930A (ja) * 2001-09-04 2003-06-27 Samsung Electronics Co Ltd プロセス間通信方法及び装置
JP2006072978A (ja) * 2004-08-06 2006-03-16 Ricoh Co Ltd サービス要求装置、サービス提供装置、サービス要求方法、サービス提供方法、サービス要求プログラム、サービス提供プログラム及び記録媒体
JP2006294022A (ja) * 2005-03-28 2006-10-26 Nvidia Corp ユニバーサルストレージバスアダプタ
US7263701B2 (en) 2001-09-04 2007-08-28 Samsung Electronics Co., Ltd. Interprocess communication method and apparatus
US7451193B1 (en) * 1997-07-31 2008-11-11 Cisco Technology, Inc. Method and apparatus for reducing overhead on a proxied connection
JP2011513835A (ja) * 2008-02-25 2011-04-28 マイクロソフト コーポレーション 一貫性を有するシグナリング状態の変化

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6782538B1 (en) * 1995-12-14 2004-08-24 International Business Machines Corporation Object oriented information handling system including an extensible instance manager
US6438616B1 (en) * 1997-12-18 2002-08-20 Sun Microsystems, Inc. Method and apparatus for fast, local corba object references
US6185695B1 (en) 1998-04-09 2001-02-06 Sun Microsystems, Inc. Method and apparatus for transparent server failover for highly available objects
DE69901327T2 (de) * 1998-05-29 2002-10-31 Sun Microsystems Inc Schnelle Aufrufe von lokalen hochverfügbaren Objekten
US7058727B2 (en) * 1998-09-28 2006-06-06 International Business Machines Corporation Method and apparatus load balancing server daemons within a server
US6438594B1 (en) * 1999-08-31 2002-08-20 Accenture Llp Delivering service to a client via a locally addressable interface
EP1234234B1 (en) * 1999-11-30 2009-09-09 Sun Microsystems, Inc. Apparatus and methods for communicating between resource domains
US7779089B2 (en) * 2000-09-15 2010-08-17 Invensys Systems, Inc. Method and system for remote configuration of process data access servers
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
US20030192038A1 (en) * 2002-04-09 2003-10-09 Thomas Hagmann Linking data objects to a project development system
US7707594B1 (en) 2002-08-20 2010-04-27 At&T Intellectual Property I, L.P. System and method for providing a routing service in distributed computing environment
US7673053B1 (en) * 2002-08-30 2010-03-02 At&T Intellectual Property I, L.P. System and method for providing a communications service in distributed computing environment
US7424723B2 (en) * 2003-10-30 2008-09-09 Microsoft Corporation System and method for executing an arbitrary function from an external process
US20060059246A1 (en) * 2004-09-10 2006-03-16 Grove Adam J System and method for connection optimization
US7554682B2 (en) * 2004-12-28 2009-06-30 Microsoft Corporation Printer filter configuration
US20070027877A1 (en) * 2005-07-29 2007-02-01 Droshev Mladen I System and method for improving the efficiency of remote method invocations within a multi-tiered enterprise network
US9606846B2 (en) * 2005-07-29 2017-03-28 Sap Se System and method for dynamic proxy generation
US7954108B2 (en) * 2005-11-21 2011-05-31 Prismtech Corporation Method and apparatus for accelerating generic inter-ORB protocol for a CORBA ORB
US20070168509A1 (en) * 2005-12-30 2007-07-19 Droshev Mladen I System and method for remote loading of classes
CN102012805B (zh) * 2009-09-04 2013-10-23 腾讯科技(深圳)有限公司 一种自定义光标的实现方法及装置
US8438220B2 (en) 2010-06-30 2013-05-07 International Business Machines Corporation Method for optimizing remote object implementations
US9619247B2 (en) * 2011-07-15 2017-04-11 Microsoft Technology Licensing, Llc Enabling fast string acquisition in an operating system for efficient interoperations with various language projections

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4823310A (en) 1987-08-10 1989-04-18 Wang Laboratories, Inc. Device for enabling concurrent access of indexed sequential data files
US5218699A (en) * 1989-08-24 1993-06-08 International Business Machines Corporation Remote procedure calls in heterogeneous systems
AU639802B2 (en) * 1990-08-14 1993-08-05 Oracle International Corporation Methods and apparatus for providing dynamic invocation of applications in a distributed heterogeneous environment
US5263160A (en) 1991-01-31 1993-11-16 Digital Equipment Corporation Augmented doubly-linked list search and management method for a system having data stored in a list of data elements in memory
JPH06103075A (ja) * 1992-07-06 1994-04-15 Internatl Business Mach Corp <Ibm> オブジェクト指向適用業務
DE69327448T2 (de) 1992-12-21 2004-03-04 Sun Microsystems, Inc., Mountain View Verfahren und Vorrichtung für Teilaufgaben in verteiltem Verarbeitungssystem
US5566302A (en) 1992-12-21 1996-10-15 Sun Microsystems, Inc. Method for executing operation call from client application using shared memory region and establishing shared memory region when the shared memory region does not exist
US5455951A (en) 1993-07-19 1995-10-03 Taligent, Inc. Method and apparatus for running an object-oriented program on a host computer with a procedural operating system
US5379432A (en) 1993-07-19 1995-01-03 Taligent, Inc. Object-oriented interface for a procedural operating system
US5734903A (en) 1994-05-13 1998-03-31 Apple Computer, Inc. System and method for object oriented message filtering
US5758342A (en) 1995-01-23 1998-05-26 International Business Machines Corporation Client server based multi-processor file system wherein client files written to by a client processor are invisible to the server
US5790848A (en) 1995-02-03 1998-08-04 Dex Information Systems, Inc. Method and apparatus for data access and update in a shared file environment
US5819093A (en) 1995-03-03 1998-10-06 Sun Microsystems, Inc. System and method for a distributed debugger for debugging distributed application programs
US5787447A (en) 1995-05-08 1998-07-28 Sun Microsystems, Inc. Memory allocation maintaining ordering across multiple heaps
US5748963A (en) 1995-05-12 1998-05-05 Design Intelligence, Inc. Adaptive binding
US5881315A (en) 1995-08-18 1999-03-09 International Business Machines Corporation Queue management for distributed computing environment to deliver events to interested consumers even when events are generated faster than consumers can receive
US5682534A (en) * 1995-09-12 1997-10-28 International Business Machines Corporation Transparent local RPC optimization
JP3426428B2 (ja) 1995-10-27 2003-07-14 富士通株式会社 トランザクションのトレース装置
JP3097525B2 (ja) 1995-11-10 2000-10-10 株式会社日立製作所 情報フィルタリング処理を行うデータ伝送方法
US5761670A (en) 1995-12-08 1998-06-02 Sun Microsystems, Inc. System and method for space efficient object locking using global and local locks
US5848236A (en) 1996-03-22 1998-12-08 Sun Microsystems, Inc. Object-oriented development framework for distributed hardware simulation
US5928323A (en) 1996-05-30 1999-07-27 Sun Microsystems, Inc. Apparatus and method for dynamically generating information with server-side software objects
US5815703A (en) 1996-06-28 1998-09-29 Microsoft Corporation Computer-based uniform data interface (UDI) method and system using an application programming interface (API)
US5809507A (en) 1996-07-01 1998-09-15 Sun Microsystems, Inc. Method and apparatus for storing persistent objects on a distributed object network using a marshaling framework
US5835906A (en) 1996-07-01 1998-11-10 Sun Microsystems, Inc. Methods and apparatus for sharing stored data objects in a computer system
US5915252A (en) 1996-09-30 1999-06-22 International Business Machines Corporation Object oriented framework mechanism for data transfer between a data source and a data target
US5873116A (en) 1996-11-22 1999-02-16 International Business Machines Corp. Method and apparatus for controlling access to data structures without the use of locks
US5913038A (en) 1996-12-13 1999-06-15 Microsoft Corporation System and method for processing multimedia data streams using filter graphs
US5864866A (en) 1997-03-26 1999-01-26 International Business Machines Corporation Apparatus and method for providing externalization in an object-oriented environment
US5978940A (en) 1997-08-20 1999-11-02 Mci Communications Corporation System method and article of manufacture for test operations
US5926775A (en) 1997-10-08 1999-07-20 National Instruments Corporation Mini driver software architecture for a data acquisition system

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7451193B1 (en) * 1997-07-31 2008-11-11 Cisco Technology, Inc. Method and apparatus for reducing overhead on a proxied connection
JP2003177930A (ja) * 2001-09-04 2003-06-27 Samsung Electronics Co Ltd プロセス間通信方法及び装置
US7263701B2 (en) 2001-09-04 2007-08-28 Samsung Electronics Co., Ltd. Interprocess communication method and apparatus
JP2006072978A (ja) * 2004-08-06 2006-03-16 Ricoh Co Ltd サービス要求装置、サービス提供装置、サービス要求方法、サービス提供方法、サービス要求プログラム、サービス提供プログラム及び記録媒体
JP4681968B2 (ja) * 2004-08-06 2011-05-11 株式会社リコー サービス要求装置、サービス要求方法、サービス要求プログラム、及び記録媒体
JP2006294022A (ja) * 2005-03-28 2006-10-26 Nvidia Corp ユニバーサルストレージバスアダプタ
JP2011513835A (ja) * 2008-02-25 2011-04-28 マイクロソフト コーポレーション 一貫性を有するシグナリング状態の変化

Also Published As

Publication number Publication date
EP0817024A3 (en) 2003-09-17
EP0817024A2 (en) 1998-01-07
US6718550B1 (en) 2004-04-06

Similar Documents

Publication Publication Date Title
JPH1078881A (ja) オブジェクト呼出の性能を改善するためのメソッドと装置
US6438616B1 (en) Method and apparatus for fast, local corba object references
US6272557B1 (en) Framework for marshaling and unmarshaling argument object references
US6044224A (en) Mechanism for dynamically associating a service dependent representation with objects at run time
US6389484B1 (en) Transport independent invocation and servant interfaces that permit both typecode interpreted and compiled marshaling
US6260078B1 (en) Using a distributed object system to find and download java-based applications
US7213049B2 (en) System and method for transaction processing with transaction property feature
US6185609B1 (en) Method, apparatus and program to provide client access to a management information service residing on a server in a computer network system
US6260077B1 (en) Method, apparatus and program product for interfacing a multi-threaded, client-based API to a single-threaded, server-based API
US7546606B2 (en) System and method using a connector architecture for application integration
JP3072709B2 (ja) 要求伝達方法
US6083277A (en) Filtering an object interface definition to determine services needed and provided
US6189046B1 (en) Mechanism and method for merging cached location information in a distributed object environment
US6195685B1 (en) Flexible event sharing, batching, and state consistency mechanisms for interactive applications
US5787251A (en) Method and apparatus for subcontracts in distributed processing systems
US7634777B2 (en) Queued component interface passing for results outflow from queued method invocations
EP0816968A2 (en) Mechanism for locating objects in a secure fashion
US20130283292A1 (en) Method and Apparatus for Composite User Interface Generation
US5974420A (en) Information exchange operator for a tuplespace
US6205491B1 (en) Method and apparatus for deferred throwing of exceptions in C++
WO2003034183A2 (en) System and method using a connector architecture for application integration
WO2000010084A2 (en) Object load balancing
EP0817028A2 (en) Mechanism for dispatching requests in a distributed object system
US20180032358A1 (en) Cross-address space offloading of multiple class work items