JPH08504975A - 分散型コンピュータシステムにおける遠隔手続き呼出しを実行するための方法およびシステム - Google Patents
分散型コンピュータシステムにおける遠隔手続き呼出しを実行するための方法およびシステムInfo
- Publication number
- JPH08504975A JPH08504975A JP6507249A JP50724993A JPH08504975A JP H08504975 A JPH08504975 A JP H08504975A JP 6507249 A JP6507249 A JP 6507249A JP 50724993 A JP50724993 A JP 50724993A JP H08504975 A JPH08504975 A JP H08504975A
- Authority
- JP
- Japan
- Prior art keywords
- class
- remote procedure
- computer
- procedure call
- server
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/133—Protocols for remote procedure calls [RPC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
Abstract
(57)【要約】
分散型コンピュータシステムにおいて遠隔手続き呼出しを実行するためのシステムおよび方法は、すべての分散オブジェクトが派生可能な基礎オブジェクトクラス(図1(1)および図1(2))を提供する。前記基礎クラスから派生するすべてのクラスを抽出するプログラムは、ルートクラスから基礎クラスへのダウンキャストを可能にし、遠隔手続き呼出しの参加者の間において高レベル構造を伝送することを可能にするための継承の木(図3a)を提供する。UNIXスクリプトは、クライアント・サーバー型通信処理を実行するためのスタブルーチン(図7aおよび図7b)を提供する。
Description
【発明の詳細な説明】
分散型コンピュータシステムにおける
遠隔手続き呼出しを実行するための方法およびシステム
発明の背景
1.発明の分野
この発明は、分散型コンピュータシステムに関し、特に、分散型コンピュータ
システムにおける遠隔手続き呼出しメカニズムの使用に関する。
2.関連技術の説明
分散型コンピュータシステムにおいては、該システムにおける多数のコンピュ
ータ間で資源(例えばファイルシステム)を共用することによって効率を高める
ことが可能である。さらに、このようなシステムにおいては、多数のコンピュー
タを、共通のタスクを実行するために相互に共働するよう使用可能である。これ
らのコンピュータが共働する、または、資源を共用するようにするネットワーク
を構成するための通信技術が多数開発されてきた。これらの通信技術の一例とし
ては、“クライアント・サーバーモデル”がある。該クライアント・サーバーモ
デルにおいて、1つまたは複数のコンピュータ(“サーバー”)は、該サーバー
にメッセージを送ることによって、または、遠隔手続き呼出しを実行することに
よって当該分散型コンピュータシステムの他のコンピュータ(“クライアント”
)が要求するサービスを提供するよう指令される。また、このクライアント・サ
ーバーモデルにおいて、前記クライアントはサービス要求を出し、前記サーバー
はこのサービス要求に応答する。
遠隔手続き呼出しは、1つのコンピュータの処理スペースで実行されるプログ
ラムによって、他のコンピュータ(遠隔コンピュータ)の処理スペースで手続き
が実行されるようにするためのメカニズムである。前記クライアント・サーバー
技術の1つの実施例においては、クライアント処理によって、サーバー処理で前
記要求されたサービスを始動させるための遠隔手続き呼出しを実行する。前記サ
ーバー処理の便利な実施例は、デーモン(daemon)処理である。このデーモン処
理は、他の処理からメッセージを受け取り、一端スタートしたならば、“キル(
kill)”メッセージを他の処理から受け取り、タイマが休止するまで、または、
すべての予期されるメッセージを受け取るまで、該コンピュータに滞在するコン
ピュータ処理である。このようなデーモン処理は、共用資源を管理するために使
用される。例えば、印刷待ち行列のためのデーモン処理は、前記印刷待ち行列に
係る1つまたは複数のプリンタの使用を必要とする処理からメッセージを受け取
る。印刷処理を実行する際、要求処理が前記デーモン処理に対して印刷要求を送
り、該デーモン処理は、前記印刷要求が適切である場合、該印刷要求を満たすた
めに、必要な印刷処理の準備を行い、そのスケジュールを作成する。プリンタご
との情報を必要とするタスクは前記デーモン処理に割り当てられ、前記要求処理
からアンロードされるので、前記デーモン処理は効率を高める。該デーモン処理
は、要求処理からのメッセージを待っている間“睡眠中(sleeping)”であると
言われ、割り当てられたタスクを実行している時には“目覚めている(awaken)
”と言われる。
現在のソフトウエアは、モジュール化およびデータ抽象化の利点を利用するよ
う設計されている。モジュール化は、定義された機能上のインターフェースにお
いて、複雑なシステムを相互に関連したサブシステムに区分する。このようにし
て、各サブシステムの実行上の複雑さは、他のサブシステムから隠され(見えな
いようにされ)、従って、他のサブシステムとは独立に、大いに開発、変更され
ることができる。
また、データ抽象化は、そのデータが示すオブジェクトについての論理的また
は概念的な表示である高レベルデータ構造を使用することによって、プログラミ
ングタスクを簡略化する。こうして、データ抽象化によって、プログラマは、デ
ータを原始的なデータ型の集まりとして処理する代りに、概念的なレベルで処理
することができる。
理想的には、適当なモジュール化によって、適用業務プログラマは、どのよう
にサービスが提供されるのか、または、サービス提供者がどこに位置しているの
かについての複雑な知識無しに、印刷ジョブのステータスを要求するなどの、オ
ペレーティングシステムのサービスを実行することができる。さらに、応用プロ
グラムの高レベルデータ構造をより低い原始データ構造に分解することなしに、
該応用プログラムが他のプログラムに干渉することができるようにするためには
、高レベルデータ構造サポート手段を設ける必要がある。
分散型コンピュータは広く使用されているが、データ抽象化およびモジュール
化の目的に反して、遠隔手続き呼出しは言語独立型のフレームワークで実施され
る。その結果、比較的低レベルのデータ構造を、遠隔手続き呼出しに関与するコ
ンピュータ処理の間で伝送することができ、これにより、適用業務プログラマが
、特別に、分散されたオブジェクトを処理することが必要になる。このような必
要性は、モジュール化を挫折させる。
さらに、高レベルデータ構造の通信を行うための適当なメカニズムが入手不能
であるので、マシーンの境界を越えてデータ通信を行うのに必要な低レベルデー
タ構造を作成するために、応用プログラムのデータ構造は、しばしば、該応用プ
ログラムにおいて明確に分解される。従って、このような応用プログラムの軽便
性および確実性に影響が出る。
以上のような理由により、応用プログラムを遠隔手続き呼出しのために準備す
る必要性から絶縁するには、高いレベルの抽象化が望まれる。例えば、遠隔手続
き呼出しは、適用業務プログラマに見えないようにする必要がある。すなわち、
前記メカニズムは、応用プログラムの特定のデータ構造が遠隔のマシーンによっ
て制御される資源に基づいて実施されまたは該資源に依存すべきという認識また
は必要性無しに、前記応用プログラムが書込まれるのを可能にする。
発明の概要
この発明に従うと、高レベルデータ構造をサポートする遠隔手続き呼出し構造
および方法は、共通のデータ構造すなわちクラス(“基礎(base)”クラス)の
使用によって提供される。分散オブジェクトまたは共用オブジェクトを得るため
に共用データ構造を使用することによって、遠隔手続き呼出しのためのクライア
ントスタブルーチンおよびサーバースタブルーチンの両方を自動的に発生するた
めプリプロセッサを構築することができる。サーバールーチンを呼出す応用プロ
グラムは、同じデータ構造をローカルルーチンに送るのと同様に、サーバールー
チンの高レベルデータに送られることができる。
この発明の一実施例において、前記サーバーは、システム初期化時にデーモン
処理として創造される。該サーバーは、1つまたは複数の遠隔手続き呼出しクラ
イアントオブジェクト(“RpcClients”)を受入れ可能な遠隔手続き呼出しサー
バーオブジェクト(“RpcServer”)を作り出す。前記クライアントにおいて作
り出されるRpcClientは、前記サーバー側のRpcServerと前記クライアントとの間
の通信チャンネルを提供する。さらに、RpcC1ientは、前記サーバー側と前記ク
ライアントとの間の非同期通信を提供するために、前記サーバー側に作り出され
る。
RpcClientオブジェクトが前記クライアントにおいて作り出されると、“マニ
フェスト(伝送目録)”がRpcServerに送られ、該RpcServerは、前記RpcClient
に対して自分自身のマニフェストを送ることによってこれに応答する。前記マニ
フェストは、対応するサーバーまたはクライアント内の各クラスのクラスメタ情
報を含んでいる。このような各クラスごとのクラスメタ情報は、(i)そのクラ
スを示す“型(type)コード”、(ii)そのクラスの名前、(iii)基礎クラス
の数、および、(iv)もし存在すれば、そのクラスの派生源であるすべてのクラ
スの名前を含むものである。さらに、前記マニフェストは、各共用オブジェクト
ごとに、(i)前記共用オブジェクトの型コード、および、前記マニフェスト送
り側の環境における共用オブジェクトのリストへのインデックスを提供する。前
記リストは、各共用オブジェクトごとに、該共用オブジェクトへのポインタを提
供する。
分散オブジェクトまたは共用オブジェクトは、サーバーで実行されるマスター
オブジェクト(“マスター”)と、クライアントで実行される1つまたは2つ以
上のスレイブオブジェクト(“スレイブ”)との組合わせによって実現される。
前記マスターとスレイブとは、同一の共通基礎クラスから派生する。前記マスタ
ーと各スレイブとは異なるメモリスペースに存在するので、前記マスターと各ス
レイブとの通信を維持するために、前記マスターには、遠隔手続き呼出しがスレ
イブのメモリスペース内の前記スレイブへのポインタを得ることができるように
するキーが与えられ、各スレイブには、マスターメモリスペース内の前記マスタ
ーへのキーが与えられる。このようにして、遠隔手続き呼出しは、遠隔オブジェ
クトが該遠隔オブジェクトへのキーだけを送った時に、動作可能になる。
この発明は、スレイブが前記遠隔手続き呼出しの返りに応答することを要求す
ることによって、ローカル手続き呼出しの意味(semantics:セマンティクス)を
保存する。また、ローカル手続き呼出しの意味は、(i)例外(異常)を前記サ
ーバーメモリスペースにトラップし、(ii)前記異常をクライアントに戻すエラ
ー処理メカニズムによっても保存され、こうして、(iii)前記クライアントは
、前記異常をソフトウエアの適切なレベルに戻して処理する。前記応用プログラ
ムにおいて、前記遠隔の異常は、ローカルに実行される手続きによって発生する
異常とは全く異ならないように見える。
1つの実施例において、RpcClientsは、サーバーがマスターオブジェクトのス
レイブと通信できるよう、前記サーバーにおいても作り出される。該実施例にお
いて、メッセージを前記スレイブに送るためのメッセージデーモンは、前記サー
バーによって作り出される。各スレイブは、マスターに対して、前記サーバーの
RpcClientsを介して前記クライアントに与えられ該スレイブへのポインタに翻訳
されるキーを提供する。前記スレイブへのポインタは、前記スレイブが前記メッ
セージデーモンからのメッセージを受け取るためのメソッドを呼出すために使用
可能である。
さらに、この発明によると、自動プログラムは、分散オブジェクト内のメソッ
ドを呼出すためにクライアントスタブルーチンおよびサーバースタブルーチンを
発生する。
この発明は、C++クラスのような比較的高いレベルのデータ構造のコンテキ
スト内の分散オブジェクトに対するサポートを提供し、ローカル呼出しの意味を
保存するので、分散オブジェクトは、適用業務プログラマに見えない方法で実行
可能であり、これにより、前記分散オブジェクトの頑強性および保存性を向上さ
せる。また、この発明は、分散型コンピュータシステムを制御するために使用さ
れる応用プログラムを簡略化する。
この発明は、下記の詳細な説明および添付図面を考察することによって、より
明確に理解されるであろう。
図面の簡単な説明
図1は、この発明の一実施例におけるクラスShareThang、ShareThangIdおよび
RemoteIdの宣言を示す図。
図2は、この発明の一実施例におけるサーバー処理およびクライアント処理の
処理スペースを示すブロック図。
図3aは、マクロ命令GIFTS_DECLARおよびプログラムGenTYPEを使用して継承
の木を作成するステップを示ブロック図。
図3bは、この発明に従って継承の木を提供するために使用されるプログラム
GenTypeから_magic_を抽出するスクリプトファイルchomp.cppのリストを示す
図。
図4aは、デーモン処理Sectdを実行するプログラムを示すブロック図。
図4bは、この実施例のサーバー処理Sectdにおいて実行されるプムグラムセ
グメントSectd.Cのリストを示す図。
図4cは、Sectdの手続きを呼出すために遠隔手続き呼出しメカニズム(RP
C)204によって呼出されるルーチンSectdProg_1のリストを示す図。
図5は、この実施例におけるSectd処理とそのクライアントとの間における通
信を行うために使用されるクラスRpcServerのオブジェクトの作成を示すブロッ
ク図。
図6aおよび図6bは、それぞれ、クラスSectC1ientControllerのオブジェク
トを実行するプログラムコードのブロック図、および、前記プログラムコードの
リストを示す図。
図7aおよび図7bは、SectClientControllerおよびSectdにおいて分散オブ
ジェクトSectControllerを実行するマスタオブジェクトおよびスレイブオブジェ
クトのためのozスクリプトによって発生されるスタブルーチンSectController::
startTesterおよびrStartTesterのブロック図。
図8は、SectにおいてクラスSectControllerを実際に実行するためのファイル
SectController.Cにおけるソースコードを示す図。
図9aおよび図9bは、それぞれ、図7aおよび図7bのブロック図に示すよ
うに、クラスStartTesterに応じてozスクリプトによって発生されるスタブルー
チンセグメントSectController::startTesterおよびrStartTesterを示す図。
図10は、この発明に従って、クライアント処理およびサーバー処理用のスタ
ブルーチンを発生するためのスクリプトファイルozを示すブロック図。
図11は、図10のozスクリプトに入力される仕様ファイルの一例を示す図。
付録Cは、プログラムGenTypeのリストを示す図。
付録Dは、スクリプトファイルozのリストを示す図である。
好ましい実施例の詳細な説明
本発明は任意のプログラム言語を使用する任意の分散型コンピュータシステム
に使用可能であるが、この詳細な説明においては、“C++”プログラム言語を
使用する実施例について説明する。C++プログラム言語については、Addison
and Welsley社によって1990年によって発行されたEllisおよびStroustrup著
、“An Annotated C++ Reference Manual”を参照されたし。また、この実施例
において、UNIXオペレーティングシステムで実行される周知のテキスト処理プロ
グラムである“awk”を使用してプログラムセグメントを発生する。前記awkおよ
びその他の同様なテキスト処理プログラムは、当業者によく知られている。前記
awkについての説明は、カルフォルニア州、Mountain Viewに在るSun Microsyste
msから入手可能な、1990年発行の“SunOS Reference Manual Release 4.1”のSe
ction1になされている。
以下の記載および添付した図面においては、多重定義された関数および演算子
の名前に関するC++プログラム言語での名前は、これらに対応する、いわゆる
“ネーム・マングリング・ルール”に従うCプログラム言語の署名コード化ネー
ム(“マングル化された(mangled)名前”)と相互交換可能に使用される。当
業者はマングル化された名前とマングル化されていない名前(unmangled name)
との間の対応関係を理解すると思うので、ネーム・マングリングについての詳細
説明を省略する。前記ネーム・マングリング・ルールについての説明は、上記An
Annotated C++ Reference Manualにも見られる。
この発明は、遠隔手続き呼出しをサポートするすべての分散型コンピュータシ
ステムに適用可能である。このようなシステムの一例は、上記カルフォルニア州
、
Mountain ViewのSun Microsystemsから入手可能なNFS(ネットワーク・ファイル
・システム)におけるコンピュータネットワークである。この発明の1つの用途
は、カルフォルニア州、Cupertinoに在るTandem Computers Inc.のGiftsプロダ
クトに見られる。このGiftsの下において、遠隔のマシーンのハードウエアコン
ポーネントを制御し、診断し、構成するために、応用プログラムが使用される。
フォールトトレラント(耐故障性)環境において、この発明は、物理的なアクセ
スおよびサービスの中断無しに、前記Giftsプロダクトがハードウエアを制御し
、ハードウエアコンポーネントの付加およびサービスからの除去、ならびに、ハ
ードウエアの再構成を制御するのを可能にするものである。
以下の記載において、“オブジェクト”とは、典型的には、“属性”および“
メソッド”からなるデータ構造である。前記属性は、オブジェクトに関連するデ
ータ構造と言える。このようなデータ構造の一例は、ある値(例えば、整数)の
アレイ、または、オブジェクトのステート情報を表すのに有用なステート変数で
ある。前記メソッドは、オブジェクトに関連する意味ある行為を実行するのに有
用な1つまたは複数の命令からなる。手続き型プログラミング言語で実行される
場合、前記メソッドは、典型的には、演算子または手続きによって表される。
さらに、各オブジェクトは、1つまたは複数のクラスに属する。1つのクラス
内のすべてのオブジェクトは、同一の属性およびメソッドの組を有するという点
で、互いに似たものである。オブジェクトの各クラスは、他のクラスのオブジェ
クトを定義するために使用可能である。派生クラスは、“親”クラスから該親ク
ラスの属性およびメソッドを継承したものであり、さらに、該派生クラスのため
に定義された、または、親クラスのものを変更した属性およびメソッドを含む。
この階層において、1つまたは複数の他のクラスの派生源となるクラスを、“基
礎”クラスという。
この発明の一実施例は、すべての分散オブジェクトの派生源となる基礎クラス
ShareThangを提供する。このShareThangのクラス定義およびその実行は、付録A
のファイルShareThang.CおよびShareThang.hに見られる。前記クラスShareThang
は、(i)クラスShareThangIdのオブジェクトへのポインタである属性stid、お
よび、(ii)クラスClassInfoのオブジェクトへのポインタである属性commonTyp
eを有する。前記属性stidは、現在の処理スペースにおけるすべての共用オブジ
ェクトのリスト(“shared object list”)にアクセスするオブジェクトShareT
hangIdを示す。各共用オブジェクトに関し、該共用オブジェクトがマスタである
場合、そのShareThangIdは、前記共用オブジェクトのスレイブ(“slave”)の
リストを維持する。一方、前記共用オブジェクトがスレイブである場合、ShareT
hangIdは、前記共用オブジェクトのマスタ(“master”)のリストを維持する。
ClassInfoオブジェクトは、(i)そのクラス(“インスタンスクラス”(inst
ance class))を特定する“型コード”であるtype、(ii)インスタンスクラス
を特定する文字列であるname、(iii)もし存在する場合には、インスタンスク
ラスの継承源である基礎クラスの数であるnbases、(iv)インスタンスクラスの
基礎クラスの1つに対応する、クラスClassInfoの1つのオブジェクトを示すポ
インタのアレイであるbases、および、(v)クラスXdrBufferのデータバッファ
によるコンピュータ間の送信に適した中立的なデータフォーマットに対して、イ
ンスタンスクラスのオブジェクトをエンコードまたはデコードするために提供さ
れるポインタであるxdr、からなる属性を有する。
さらに、クラスClassInfoは、(i)1つのオブジェクトのポインタを、同じル
ートクラスに含まれる他のオブジェクトのポインタに交換するために使用可能な
メソッドCastDown、(ii)1つのオブジェクトのクラスに対応するClassInfoを
返すメソッドtypeまたはget、(iii)そのオブジェクトのクラスの名前を戻すメ
ソッドnameof、および、(iv)継承の木(下記を参照)におけるすべてのノード
を訪問するメソッドtraverseを含む。ClassInfoのクラス定義およびその実行は
、付録Bに含まれるClassInfo.hおよびClassInfo.Cに見られる。この実施例にお
いて、クラスClasslnfoのオブジェクトは、(i)各サポートされたデータ型(例
えば、整数、実数等)、(ii)各宣言されたクラス、および、(iii)各宣言さ
れたクラスに関連するポインタタイプ、ごとに創造される。
ShareThangIdにおいて、slaveおよびmasterの各々は、クラスRemoteIdのオブ
ジェクトによって表される。各RemoteIdは、遠隔環境における共用オブジェクト
の対応物(つまり、“ツイン(twin)”)を特定する。例えば、サーバー(すな
わち、マスタ)における共用オブジェクトのツインは、RemoteIdオブジェクトの
リストslaveを有し、各RemoteIdオブジェクトはマスタのスレイブの1つに対応
する。逆に、クライアント(すなわち、スレイブ)における共用オブジェクトの
ツインは、前記スレイブのマスタに対応するRemoteIdオブジェクトmasterを有す
る。各RemoteIdオブジェクトは、クラスRpcClientのオブジェクトへのポインタ
と、ShareThangIdの共用オブジェクトのリストへのポインタを有する。前記サー
バーおよびクライアントのShareThangIdは異なる共用オブジェクトリストを有す
るので、同一の共用オブジェクトは、前記サーバーおよびクライアントの共用オ
ブジェクトリストにおいて異なるインデックスを有する。後で詳述するように、
RpcClientは、マスタとスレイブとの間の通信チャンネルを特定する。
図1は、クラスShareThang、 ShareThangIdおよびRemoteIdの宣言を示す。ク
ラスShareThangは、(i)前記属性stidを返すメソッドid()、(ii)ShareThang
のマスタのRemoteIdを返すメソッドmasterid()、(iii)ClassInfoのクラスのオ
ブジェクトであるcommonTypeを返すgetCommonType()を提供する。また、クラスS
hareThangIdは、スレイブに対応するRemoteIdをマスタのリストSlaveに付加する
ため、および、マスタに対応するRemoteIdをスレイブに付加するための、メソッ
ドaddClientおよびaddMasterを提供する。
この実施例において、遠隔手続き呼出しは、遠隔手続き呼出しメカニズムにメ
ッセージおよび手続き番号を与える遠隔手続き呼出し関数executeを実行するこ
とによって行われる。前記手続き番号は通信プログラム間の接続を特定し、前記
メッセージはクラスXdrBufferのバッファ(“message”)に含まれている。XdrB
ufferの定義および実行は、付録BにリストされたファイルXdrBuffer.hおよびXd
rBuffer.Cに含まれている。クラスThang(ShareThangの派生源)から派生したオ
ブジェクトをメッセージにエンコードし、メッセージからデコードするために、
前記オブジェクトのクラスのClassInfoオブジェクトにおけるメソッドxdrが、ク
ラスインプリメンタ(クラス作成者)によって提供される。
この実施例のメッセージにおいて、エンコードされたオブジェクトは、フィー
ルドとして、(i)該エンコードされたオブジェクトのサイズをバイトで示すbyt
e_countと、(ii)subrecordのリストを有する。また、各subrecordは、フィー
ルドとして、(i)内句されたオブジェクトの型コードであるtype_tag、(ii)s
ubrecordのサイズをバイトで示すbyte_count、(iii)原始データ構造のリスト
であるprimitive、および、(iv)subrecordのリストを有する。
図2は、この発明の一実施例におけるサーバーマシーンおよびクライアントマ
シーンの処理スペースを示す。サーバーマシーン200において、遠隔手続き呼
出し(RPC)メカニズム204は、他の応用プログラムのために、該サーバー
マシーン200のカーネル250における低レベル、マシーン内通信サービスに
アクセスするための遠隔手続き呼出しインターフェイスを提供する通常の応用プ
ログラムである。同様に、遠隔手続き呼出しメカニズム203は、他の応用プロ
グラムがカーネル251のマシーン内通信サービスにアクセスするための通常の
応用プログラムである。典型的には、遠隔手続き呼出しメカニズム203、20
4などの遠隔手続き呼出しのヘッダファイルは、通常の応用プログラムインター
フェイスを提供するための応用プログラムによってコンパイルされる。カーネル
250、251は、相互接続されたコンピュータ間の、ネットワークまたはバス
プロトコルのような基礎的な物理的接続を制御する。この実施例において、相互
接続されたコンピュータは、極めて多様なアーキテクチャからなるものとするこ
とができる。
この実施例において実行される各々の分散オブジェクトに関し、該分散オブジ
ェクトの“マスタ”は、実際のローカル手続き呼出しを呼出すため、サーバー2
06で示すサーバー処理において作成される。マスタオブジェクトのメソッドに
アクセスするためには、前記サーバー206の共用オブジェクトのリスト(すな
わち、サーバー206のすべてのSharedThangのリスト)へのインデックスであ
るキーを、サーバー206のメモリスペース内のマスタオブジェクトへのポイン
タと交換することが必要である。共用オブジェクトのリスト内のポインタはマス
タの内包オブジェクト(クラスSharedThang)へのポインタであるので、前記マ
スタの他の内包オブジェクト(例えば、クラスSharedThangから発生するクラス
foo)のメンバ関数を実行することが必要である場合、前記共用オブジェクトの
リストからのSharedThangへのポインタが、前記内包fooオブジェクトへのポイン
タに交換されなければならない。“ダウンキャスティング(down casting)”と
呼ばれるこの処理は、クラスClassInfoのメンバ関数CastDownによって実行され
る。
このCastDownを実行するには、すべての共用オブジェクトのクラスの派生経過を
有することが必要である。この実施例において、この派生経過は、(i)共用オ
ブジェクトの各クラスの宣言を修正するためにマクロGIFTS_DECLAREを使用し、
(ii)プリプロセッサcppによって発生されたコードから、共用オブジェクトの
クラスのリストを抽出し、(iii)このようなリストをスタンドアローンプログ
ラムGenTypeに提供して、実行時継承の木を形成するためにコンパイル可能なC
言語でのコードを発生する、ことによって提供される。この処理は、図3aのブ
ロック図に示されている。
図3aに示すように、マクロGIFTS_DECLAREは、ステップ301において提供
され、クラスThangから派生したすべてのクラス(“インスタントクラス”)の
宣言に、(i)メンバ関数_typeof()、(ii)各々が、文字列“_magic_”の連
鎖およびインスタントクラスの派生源である基礎クラスの名前からなる多数の記
号、ならびに、(iii)インスタントクラスの名前が割り当てられた文字列_nam
eofの宣言を挿入する。前記マクロGIFTS_DECLAREの結果、これらの付加的な宣言
のコンパイルは、各クラスの記号テーブルに、接頭辞文字列“_magic_”が付
いた多数の記号を含むことになる。この発明において、これらの記号は、クラス
Thangから派生した各クラスの派生可能性をエンコードするために使用される。
前記マクロGIFTS_DECLAREは、付録Bに含まれるmacros.hにリストされている。
ステップ302において、“スクリプト”ファイルchomp.cppは、テキスト処
理ユーティリティegrepを使用して、コンパイルされたオブジェクトファイルの
記号テーブルから、前記接頭辞文字列“_magic_”が付いた前記挿入された記
号を抽出する。そして、これらの記号は、コマンドラインインタプリタすなわち
“shell”によりUNIXで実行されるスタンドアローンプログラムGenTypeに供給さ
れる。これらの記号により、GenTypeが、Thangから派生したすべてのクラスのオ
ブジェクトに関する継承の木を構築することが可能になる。chomp.cppは図3b
にリストされている。前記継承の木は、(i)すべてのクラス、これらクラスへ
のポインタ、および、サポートされる原始データタイプに対応するClassInfo構
造を含む配列であるアレイリスト、および、(ii)共用オブジェクトの各クラス
(“インスタントクラス”)ごとに、各々の配列要素が該インスタントクラスの
派生源である基礎クラスを示すものである、ClassInfoへのポインタのアレイか
らなる。
GenTypeは、ステップ303において構築された継承の木をCコードで出力す
るものであり、前記サーバーアドレススペースおよびクライアントアドレススペ
ースの各々における静的データ構造として前記継承の木を作成するためにコンパ
イルされる。さらに、GenTypeは、各クラスごとの_typeof()メンバ関数を実行
するためのコードを発生する。前記_typeof()関数は、1つのオブジェクトの型
コードを読み出すためにリストデータ構造にアクセスする。GenTypeのためのソ
ースコードは、付録CのGenType.Cとして提供される。
上述のように、より大きなオブジェクトに内包されるThangオブジェクトへの
ポインタが与えられると、ClassInfoのメンバ関数CastDownの目的は、前記より
大きなオブジェクトのその他の内包オブジェクト、または、前記より大きなオブ
ジェクト自体へのポインタを読み出すことである。ダウンキャスティングのため
に意図されたクラスが、CastDownに提供される。より大きなオブジェクトへのポ
インタを得るために、関数rootが呼出され、前記より大きなオブジェクトのポイ
ンタ“root”を返す。前記ダウンキャスティングが前記より大きなオブジェクト
に内包されたオブジェクトへのダウンキャスティングである場合、前記意図され
たクラスに到達するために、CastDownが、ClassInfoのメンバ関数getから返され
た“root”のClassInfoからの継承の木を探索する。前記意図されたクラスの名
前と一致するクラスに到達すると、CastDownは、その派生パスに介在する各クラ
スのデストラクタ関数とthisポインタとの間のオフセットを使用して、前記より
大きなオブジェクトへのポインタを算出する。(C++プログミング言語におい
て、各オブジェクトには、該オブジェクト自体を示すポインタthisが与えられて
いる)。このようにして算出された前記より大きなオブジェクトへのポインタが
rootから返されたポインタと一致する場合、ダウンキャスティングは成功であり
、前記意図されたクラスに内包されたオブジェクトへのポインタが返される。一
致しない場合、前記意図されたクラスに到達する他の継承パスを求めて、前記継
承の木がさらに探索される。C++プログミング言語は多数の継承パスを許容す
るので、この手続きが必要になる。
サーバー206は、通常、デーモンとして実行される。図4aは、デーモンSe
ctd(system Exercise and Confidence Test Daemon)を実現するプログラムの
ブロック図である。デーモンSectdは、マスターオブジェクトSectContro1lerを
収容している。SectdおよびSectControllerは、それぞれ、図4bおよび図8に
リストされているプログラムセグメントSectd.CおよびSectController.Cによっ
て実行される。図4aに示すように、Sectdは、Giftsユーザインターフェイスを
用いて、応用プログラムとしてスタートされる(ステップ401)。そして、Se
ctdは、“サーバー”側コンストラクタルーチンを呼出すことによって、分散オ
ブジェクトSectControllerのマスタを作り出す(ステップ402)。図8のプロ
グラムセグメントSectController.Cに示すように、メソッドStartTesterは、Sec
tdにおいて実行されるクラスSectControllerの唯一のメソッドである。
SectControllerのためのコンストラクタルーチンは、作り出されたSectContro
llerのためのポインタを返す(ステップ403)。そのクライアントと通信する
ために、Sectdは、通信サーバーオブジェクトRpcServerを作り出す(ステップ4
04)。RpcServerは、遠隔手続き呼出しメカニズム204とSectdとの間の通信
をフィルタするために使用される。図5は、RpcServerの実行を示すブロック図
である。RpcServerは、付録Aにリストされた2つのプログラムセグメントRpcSe
rver.hおよびRpcServer.Cによって実行される。RpcServerを作り出した後、Sect
dは、クライアントマシーン251のクライアント207のような、クライアン
トオブジェクトからのサービスリクエストを待つスリープモードに進む。遠隔手
続き呼出しメカニズム204は、クライアントオブジェクトから受けたハンドル
に従ってSectd内のルーチンを呼出すルーチンSectdProg_1(図4cにリストされ
ている)を呼出す。
図5に示すように、Sectdは、ステップ501においてRpcServerのコンストラ
クタルーチンを呼出すことによって、RpcServerを作り出す。このコンストラク
タルーチンは、(i)システムルーチンsvc_registerを呼出すことによって、遠
隔手続き呼出しメカニズム204とSectdとの間の通信を行うための移送レベル
サービスを作り出し(ステップ502)、(ii)前記RpcServerをネットワーク
のレジスタサービスに登録する(ステップ503)。前記ネットワークのレジス
タサービスは、プログラムを探し出すための該ネットワークの探索サービスを提
供する。前記ネットワークのレジスタは、ホストマシーンの名前、前記プログラ
ムの名前およびバージョンを受け取り、リクエストされたプログラムへのハンド
ルを返す。前記ネットワークのレジスタサービスへの登録により、遠隔プログラ
ムは、遠隔手続き呼出しのプログラム番号を使用して、前記RpcServerにアクセ
スすることができる。
分散オブジェクトの各メソッドごとに、Sectd、および、クライアント207
のようなその各クライアントにおいて、スタブルーチンが提供される。このよう
にして、図2に示すように、SectControllerのメソッドStartTesterのための遠
隔手続き呼出しの準備を行うために、“スタブ”ルーチン202、201が提供
され、それぞれ、Sectd処理スペースおよびクライアント207の処理スペース
で実行される。典型的には、前記スタブルーチン202、201は、“配列(ma
rshalling)”および“解列(unmarshalling)”と呼ばれる処理を実行する。前
記配列(marshalling)は、1つのマシーンのメソッド呼出し(例えば、アレイ
へのポインタ)の仮パラメータからのマシーン依存型のデータ構造を、他のマシ
ーンの潜在的に異なる環境に送られることが可能な“中立”型データ構造にマッ
プする。前記解列(unmarshalling)は、環境間で交換される中立フォーマット
をマシーン依存型のデータ構造にマップする。例えば、応用プログラム205が
マシーン依存型のデータ構造における引数リストを持つクライアントスタブルー
チン201を呼出すと、前記クライアントスタブルーチン201は、前記配列(
marshalling)を実行し、遠隔手続き呼出しメカニズム203に対して、通常は
インタープロセスメッセージからなる配列された引数を送る。遠隔手続き呼出し
メカニズム203、および、これに対応する遠隔手続き呼出しメカニズム204
は、カーネル251に対して、マシーンの境界を超えて通信を行うためのシステ
ムサービス(例えば、ポートおよびプロトコル)を要求する。遠隔手続き呼出し
メカニズム203によって送られる前記配列された引数は、遠隔手続き呼出しメ
カニズム204によって受け取られ、該呼出しメカニズム204は、前記配列さ
れた引数をSectdに送る。デーモン処理であるSectdは、受け取った前記Sectdを
解列するためにスタブルーチン202を呼出す。そして、スタブルーチンは、メ
ソッドStartTesterの実際にリクエストされたサービスを実行するローカル手続
き205(例えば、“startTester_14SectControllerFRUiRC5Twine”)*1に対し
て、前記解列された引数を送る。もし存在するならば、その結果は、ローカル手
続き205から、該結果をクライアント207に返すために整列させるスタブル
ーチン202に返される。Sectdからクライアント207への結果の返却は、前
記整列された引数の送路を逆方向に辿るものである。スタブルーチン201は前
記結果を解列し、しかる後、該結果は応用プログラム208に返される。Sectd
がサービスすることができるクライアント207のようなクライアントの数には
、制限がない。
図6bのSectClientController.cにリストされ、図6aのブロック図に要約さ
れたSectClientControllerのプログラムセグメントは、遠隔手続き呼出しを行う
クライアント207のようなクライアント処理の一部分の一例である。
遠隔手続き呼出しを行う前に、SectClientControllerは、それ自身とSectdと
の間に通信チャンネルを形成するするために、クラスRpcClientのオブジェクト
を作り出す(ステップ601)。前記クラスRpcClientは、クラスSharedThangか
らも派生する。前記RpcClientのオブジェクトおよび関連メソッドの実行は、マ
イクロフィッシュ付録Aに含まれるファイルであるRpcClient.h、RpcClient.c、
RpcUtil.h、RpcUtil.h、Wrapper.hおよびWrapper.cに見られる。
図6aに示すように、SectClientControllerがRpcClientオブジェクトを作り
出すと、RpcClientコンストラクタルーチン(SectClientController側)は、シ
ステムサービスに対して、移送レベルサービスを開始するためのバージョンナン
バが与えられる一時プログラムナンバを要求するようリクエストする(ステップ
602)。この移送レベルサービスは、後述されるSectdのRpcClientオブジェク
トからのメッセージを受け取る、SectClientControllerのサーバーとして使用さ
れる。(SectdのRpcClientは、SectdにおけるマスターオブジェクトのSectdクラ
イアントステート情報に通信するためのパスを提供する)。こうして、Sectdか
ら受け取られたメッセージに関して、SectClientControllerはサーバーとして作
用する。この移送レベルサービスは、SectdからのメッセージがSectClientContr
ollerに到達するのを可能にするネットワークレジスタサービスによって登録さ
れる(ステップ603)。そして、RpcClientのコンストラクタルーチンは、Sec
tdにおけるrct_9RpcClientFPCcU1U1R8ManifestU1PC9RpcHandlePC7timeinterval
(“rct”)遠隔ルーチンに対して、遠隔手続き呼出しを行う(図4cに示したS
ectdProg_1)(ステップ604)。rctへの遠隔手続き呼出しは、Sectdに対して
、(i)前記移送レベルサービスの一時プログラムナンバおよびバージョンナン
バ、(ii) SectClientControllerのホストマシーンの名前、(iii)(後述の)
SectClientControllerの“マニフェスト”(下記参照)、および、(iv)SectCl
ientControllerの共用オブジェクトリストにおけるRpcClientオブジェクトのイ
ンデックスを送る。こうして、付録AのWrapper.Cのプログラムセグメントで実
行されるrctへの遠隔手続き呼出しは、ステップ605において、RpcClientが(
i)受け取ったマニフェストを翻訳し、ii)コールバック目的で、SectdのrpcCli
entのマスタとして、オブジェクトSectdClientControllerのRpcC1ientのSectdリ
ストにおけるインデックスを割り当てる、ようRcpClientのためのコンストラク
タルーチン(サーバー側)に要求する。また、Sectdは、メッセージデーモンozm
sgdを作り出す(ステップ606)。前記rctへの遠隔手続き呼出しは、Sectdで
実行されるすべてのクラスに対する情報を含むマニフェストを返す。前記メッセ
ージデーモンozmsgdは、(i)マスターにおける非同期的なステート変化、また
は、(ii)Sectdにおける新たな共用オブジェクトの作成、または、(iii)Sect
dにおける新たな共用オブジェクトの破壊をスレイブに知らせるために、Sectdの
マ
スタのスレイブを“コールバック(call-back)”する機能として意図されてい
る。
通常のサーバークライアントモデルにおいて、クライアントは、サーバーに対
してメッセージを送ることによって、サーバーにサービスを要求する。こうして
、前記サーバーは、前記要求されたサービスを実行した後、その結果を返す。こ
の通常モデルにおいて、前記サーバーは、前記クライアントとの通信を開始しな
い。しかし、この実施例において、分散オブジェクトのマスタは1つまたは2つ
以上のクライアントにサービスするので、前記分散オブジェクトのマスタがマス
ターオブジェクトのステート変化を非同期的に伝えることが必要になることがあ
る。この目的のために、上述のように、マスターオブジェクトのステート変化、
および、共用オブジェクトの作成または破壊を伝えるため、デーモンozmsgdであ
るこの場合のクライアントとして機能することは、SectClientControllerおよび
Sectdのすべての同様なクライアントを呼出す。
この実施例において、マニフェストは、各々の既知のクラスごとに、クラス“
メタ情報”を含む。スレイブオブジェクトとマスタオブジェクトとが適当に一致
するよう、前記マニフェストは、各クラスごとに、(i)該クラスを特定する型
コード、(ii)該クラスの名前、(iii)もし存在するならば、該クラスの派生
源である基礎クラスの数、および、(iv)前記基礎クラスの名前を含むものであ
る。さらに、マニフェストは、該マニフェストを提供する処理における各共用オ
ブジェクトごとに、型コードと、送り処理の共用オブジェクトへの共用オブジェ
クトのインデックスを含む。前記マニフェストは、上述したGenTypeによって作
り出された継承の木の一部である構造リストから作られる。前記クラスマニフェ
ストの定義および実行は、付録Bに含まれるファイルmanifest.cおよびmanifest
.hにおいて与えられる。
この実施例において、システム設計者は、使用すべき応用プログラムのための
すべてのシステムオブジェクトを提供する。これらのシステムオブジェクトはロ
ーカルに分散されるが、その実行は前記応用プログラムから隠される。先ずSect
ClientControllerクラスが例示されるとき、前記SectClientControllerのコンス
トラクタルーチンは、前記SectClientControllerから受け取ったマニフェストか
ら作り出されたマスタの共用オブジェクトリストから、マスタSectClientContro
llerを捜し出す(ステップ607)。この例によって示されるように、マスタと
スレイブとの間の接続は、前記マスタとスレイブオブジェクトとが同一クラスで
あることを必要としない。この実施例において、SectClientControllerはSectCo
ntrollerから派生したクラスであるので、互換性が実現される。こうして、Sect
dにおける同一のSectControllerを使用して、前記SectControllerから派生した
クラスに属する多数のデバイスを制御できる。前記接続を実現するために、Sect
ClientControllerは、関数joinWithMasterに対する呼出しを行い、該joinWithMa
sterに対して、(i)SectClientControllerへのポインタ、(ii)joinWithMaste
rに対するルーチンjoinWithSlaveを呼出せよとの命令を示すハンドルJoin-With_
Slave_1、(iii)SectClientControllerのRpcC1ientへのポインタ、(iv)基礎
クラス“SectController”の名前、および、Sectdの共用オブジェクトリストへ
のインデックスmaster(該masterはSectdにおけるSectControllerに対応する)
を送ることによって、Sectdにおける前記マスタオブジェクトSectControllerと
の“結合(join)”を要求する。joinWithMasterおよびjoinWithSlaveの両方は
、付録Aに含まれるファイルRpcUtil.hおよびRpcUtil.Cのプログラムセグメント
にリストされている。
joinWithMasterは、クラスSectControllerに対応するClassInfoオブジエクト
を得る。前記ClassInfoオブジェクトは、名前“SectController”にTypeofメソ
ッドを適用することによって返される。そして、前記インデックスmasterおよび
RpcClientは、SharedThangIdのメンバ関数addMasterによって、SectClientContr
ollerに関連付けられる。その後、ハンドルJoin_With_Slave_1を使用する遠隔手
続き呼出し(ステップ609)は、SectdProg_1を介して、Sectdにおける関数rj
oinWithSlav_FP11SharedThangP9RpcClientuUi (“rjoin”)を呼出し、Sectdに
対して、SectClientControllerの共用オブジェクトリストへのインデックスを提
供する。
rjoinへの遠隔手続き呼出しは、Sectdに対して、(i)SharedThangのSectdの
リストにおけるSectControllerを特定するインデックスmaster、および、(ii)
SectClientControllerの共用オブジェクトリストへのRpcClientおよびSectClien
tControllerのインデックスを送る。Sectにおける対応するRpcClientと調和させ
るため、RpcClientのインデックスは、クラスSharedThangの対応するRpcClient
に組込まれたオブジェクトへのポインタと交換される。このSharedThangのポイ
ンタは、上記Sectdによって作り出されたRpcClientオブジェクトへのポインタに
ダウンキャストされる。そして、rjoinは、SectdのSectControllerを、(i)Sec
tClientControllerの送られたインデックスおよび(ii)Sectdの対応するRpcCli
entオブジェクトによって形成されたRemoteldと関連づけるために、ローカルル
ーチンJoinWithSlaveを呼出す。このRemoteldオブジェクトは、SharedThangIdの
addClientメンバ関数を使用して、前記SectControllerのslaveリストに挿入され
る。
上記の実行が適用業務プログラマに見えないようにするために、この発明は、
遠隔手続き呼出しのために“ローカル手続き呼出しセマンティクス”を保存する
メカニズムを提供する。このローカル手続き呼出しセマンティクスにより、前記
クライアントプロセスは、該クライアントプロセスのメモリスペースにおける手
続きと同様に、前記手続き呼出しがリターンするのを待つ。さらに、通常の遠隔
手続き呼出しにおいて言語独立エラー処理メカニズムを実現する困難のために、
遠隔環境において発生するエラーは、しばしば、ローカル環境にリターンされな
い。その代りに、予期される結果が得られないとき、ある時間の後に、前記呼出
し手続きは、タイムアウトメッセージを返す。しかしながら、遠隔手続き呼出し
のためのエラー処理メカニズムもが、ローカル手続き呼出しのためのエラー処理
メカニズムとは区別できないものとされたときにのみ、ローカル手続き呼出しセ
マンティクスが保存可能になる。
遠隔手続き呼出しの従来型の実行においては、明確な“待機”命令が実行され
るまで、クライアントはその処理スペースにおける順次の実行を続行するように
なっている。そのような実行は、応用プログラムは遠隔実行および遠隔イベント
との同期について知る必要があるので、望ましくない。
遠隔手続き呼出しは、図2に関して上述したように、スタブルーチン201の
ようなスタブルーチンをSectClientControllerで呼出すことによって、実現可能
である。この実施例において、スタブルーチン201,202は、“スクリプト
”
ファイル(“oz”スクリプト)によって実行されるスタブルーチンジェネレータ
を使用することによって、同時に発生される。スクリプトファイルは、UNIXコマ
ンドラインインタプリタ(UNIXの用語では“シェル(shell)”と呼ばれる)に
よって実行可能なプログラムである。
図7aおよび7bは、それぞれ、SectControllerおよびSectdにおいて分散ク
ラスを実行するマスタオブジェクトおよびスレイブオブジェクトのための前記oz
スクリプトによつて発生される、スタブルーチンSectController::startTester
およびrstartTester_14SectControllerFRUiRC5Twine(“rstartTester”)のブ
ロック図である。図8は、コンストラクタおよびデストラクタ関数に加えて1つ
の関数SectController::startTesterを有する、SectdにおけるクラスSectContro
llerを実際に実行するためのファイルSectController.Cにおけるソースコードで
ある。StartTesterはSectdに存在するので、StartTesterに対するSectClientCon
trollerのアクセスは、前記ozスクリプトによって発生されるスタブルーチンに
よって行われる。前記ozスクリプトは、svc_SectController.Cおよびclnt_SectC
ontroller.CファイルにおけるSectControllerのための2つのスタブルーチンを
発生する。SectClientControllerをコンパイルする目的で、SectClientControll
er.Cは、clnt_SectController.Cファイルを含む。また、サーバ−206をコン
パイルする目的で、SectClientController.Cは、svc_SectController.Cを含む。
前記メンバ関数StartTesterはSectdにおいてのみ実際に実行されるので、メンバ
関数SectControlle::startTesterの本体は、前記Sectdでのコンパイルのためだ
けに含まれる。Sectdにおいて前記ozスクリプトによって発生されるスタブルー
チンは、実際のSectController::startTesterコードと区別できるよう、文字“
r”によって示される。このため、図8に示すように、SectdのSectController.
Cバージョン(すなわち、svc_SectController)への包含が所望の場合、別のコ
ンパイル指令“♯if defined(server)”が使用され、SectClientControllerの
SectController.C(すなわち、SectController::startTesterスタブ)への包含
が所望の場合、別のコンパイル指令“♯if defined(oz)”が使用される。コン
パイルの結果、SectController.Cの各バージョンごとに、オブジェクトファイル
SectController.oが得られ、対応するクライアントまたはサーバーと結び付け
られる。クライアントのSectController.oバージョンと結び付けられる応用プロ
グラムは、SectControllerが分散オブジェクトであることを知る必要がない。
図7aに示すように、SectController::startTesterは、SectControllerのイ
ンデックスmasterid(すなわち、Sectdの共用オブジェクトリスト)を得る(ス
テップ701)。そして、前記メンバ関数の名前を前記ハンドルにマップするRp
cClientのメンバ関数rwhichによって、呼出しのための前記メンバ関数をエンコ
ードする符号無しの整数ハンドルが読み出される(ステップ702)。その後、
メンバ関数parm1およびparm2への引き数、前記マスタのアドレスmasterid、およ
び、RpcClientオブジェクトrid.idが、前記遠隔手続き呼出し203,204に
よってサポートされる前記クラスXdrBufferのバッファ構造において提供される
(ステップ703)。前記遠隔関数のバッファおよびハンドルは、前記遠隔手続
き呼出しメカニズムによって、Sectdに送られる(ステップ704)。図9aは
、SectClientControllerのための前記ozスクリプトによって発生される図7aの
スタブルーチンのソースコードである。
図7bは、前記クラスSectControllerの1つのオブジェクトのSectdのためのo
zスクリプトによって発生されるスタブルーチンrStartTesterのブロック図であ
る。図7bに示すように、Sectdの共用オブジェクトリストへの前記マスタのRpc
Clientオブジェクトのインデックスは、SectClientControllerから受け取られる
メッセージから抽出される(ステップ750)。そして、前記RpcClientオブジ
ェクトのインデックスは、前記ShareThang::get(id)メンバ関数を使用して、S
ectdのメモリスペースにおけるポインタを前記RpcClientのShareThang内包オブ
ジェクトに取り込むために使用される(ステップ751)。こうして、前記ポイ
ンタは、前記クラスRpcClientの1つのオブジェクトーのポインタとなるようダ
ウンキャストされる(ステップ752)。その後、前記XdrBufferの残りのパラ
メータは、Sectdの共用オブジェクトリストにおけるSectControllerのインデッ
クスid、および、前記starTesterのパラメータparm1、parm2を得るために使用さ
れる(ステップ753)。前記インデックスidは、SectControllerの包含ShareT
hangオブジェクトに対応するポインタを読み出すために使用される。そして、こ
のポインタは、前記クラスSectControllerの1つのオブジェクトへのポインタに
ダ
ウンキャストされる(ステップ754)。そして、rstarTesterは、前記クラスS
ectControllerのメンバ関数として、実際のローカル手続きStartTesterを呼出す
(ステップ755)。前記ローカル手続き呼出しにエラーが発生しなかった場合
、変数parm1の返却値およびエラーコードLPC_Successが返される(ステップ75
6)。そうでない場合、2つのcatchステートメントのうちの1つによって例外
が捕らえられ、前記エラーコードが返される。こうして、SectClientController
におけるスタブルーチンに、例外が送り返される。このように、この発明は、遠
隔手続き呼出しにおいてローカル呼出しセマンティクスを保存する。図9bは、
前記Sectdのためのozスクリプトによって発生される図7bのスタブルーチンrSt
artTesterのソースコードである。
図10は、前記ozスクリプトの作用を示すブロック図である。様々な変更例を
使用して前記スタブルーチンを提供することができる、ということが当業者に理
解されるであろう。このような変更例は、シェル以外によって実行可能なプログ
ラムの使用、または、awk以外のテキスト処理ユーティリティの使用を含んでよ
いが、これらに限られるものではない。この実施例の前記ozスクリプトは、仕様
ファイルを入力し、任意のコマンドライン引き数を受入れる。これらのコマンド
ライン引き数は、(i)前記仕様ファイルにおける名前を“マングル化されてい
ない”必要があるか否か(-rawオプション)、(ii)クライアントスタブルーチ
ンファイルを発生すべきか否か(-cオプション)、(iii)サーバースタブルー
チンファイルを発生すべきか否か(-sオプション)、(iv)前記サーバースタブ
ルーチンファイルまたはクライアントスタブルーチンファイルの選択的な包含の
ためのコンパイラ指示を、分散オブジェクトを実施する前記.cファイルの本体に
付加すべきか否か(-mオプション)、および、(v)例えばrstartTesterのよう
な遠隔関数へのハンドルを、前記サーバー側の遠隔手続き呼出しメカニズムによ
って呼出される例えばSectProg_1のようなプログラムに包含させるために発生す
べきか否か(-hオプション)、を明記する。
図11は、図7aおよび7bに示されたSectControllerのためのスタブルーチ
ンを発生するために前記ozスクリプトによって使用される仕様ファイルである。
上記のスタブルーチンの発生を説明するためには、前記仕様ファイルの第1行だ
けを考慮するだけで十分である。
図10に示すように、ozスクリプトは、コマンドラインを分析し、該コマンド
ラインから該ozスクリプトの内部ステートを設定するための引き数を抽出する(
ステップ1001)。前記-rawオプションが設定されているか否かに応じて、前
記使用ファイルについてネームマングリング処理が実行される(ステップ100
2)。このマングリング処理は、C++関数の名前を、その関数のパラメータリ
ストのコード化を含む独特な名前に変換するものである。前記仕様ファイルをネ
ームマングリング処理した結果は、新たなファイルinput(“input(入力)”フ
ァイル)に記憶される。この実施例において、その他のシェルスクリプト“mang
le”がネームマングリング処理を実行するために使用された。しかし、上記参考
文献に記載されたネームマングリング規則と略一致する他のシェルスクリプトも
、適用可能である。前記rawオプションが設定されていない場合、前記仕様ファ
イルは、前記ネームマングリング処理を迂回して、前記入力ファイルに直接にコ
ピーされる(ステップ1003)。さらに、前記-mオプションが設定されていな
い場合、前記分散クラスのソースコードに、他のコンパイル指令が付加される(
ステップ1004)。そして、前記入力ファイルは、前記接続された名前から、
該入力ファイルで示された基礎クラスのリストを抽出するために分析される(ス
テップ1005)。例えば、図11の仕様ファイルから得られた入力ファイルに
おいては、2つの基礎クラス“SectTester”および“SectController”が前記入
力ファイルから引出される。前記引出された基礎クラスのリストは、“基礎リス
ト”ファイルに格納される。
次のステップ1006および1007では、awkコマンドファイルsvc.awkおよ
びclnt.awkが作成される。前記コマンドファイルsvc.awkは、(i)遠隔手続き呼
出しファシリティおよび例えばSharedThangIdのような他のデータ構造の宣言に
対して、必要なヘッダファイルを提供し、(ii)メンバ関数呼出しために入力一
時ファイルを調べ、(iii)前記分散の実際の実行に対して入力型パラメータを
送るため解列命令を提供し、且つ、(iv)他の入力/出力型のパラメータ値を返
すために配列命令を提供する。また、コマンドファイルsvc.awkは、ShareThang
オブジェクトを前記入力一時ファイルに明記された基礎クラスにダウンキャスト
するために、出力サーバーオブジェクトにおいて命令を提供する。
また、コマンドファイルclnt.awkは、遠隔手続き呼出し機能、および、データ
構造の宣言にインターフェイスを提供する。さらに、clnt.awkは、入力パラメー
タを使用して遠隔手続き呼出しを形成するために、入力型パラメータを配列し、
その値が前記遠隔手続き呼出しから返される出力または二方向パラメータに関し
て、解列命令を与える。
ステップ1008では、前記基礎リストファイルを使用して、各基礎クラスご
とに、出力一時ファイルに格納すべき前記入力ファイルからのメンバ関数呼出し
を抽出いる。その後、この一時ファイルは、ステップ1009において、出力ス
タブルーチンファイルsvc_〈base〉.Cおよびclnt_〈base〉.Cを発生するために
、両前記コマンドファイルclnt.awkおよびsvc.awkによって使用される(ここで
、〈ba ステップ1010では、前記クラスSectControllerのメンバ関数が、フ
ァイルSectdProg.cに包含されるハンドルにコード化される。該SectdProg.cは、
前記遠隔手続き呼出しメカニズムに提供されるハンドルに従って、スイッチステ
ートメントを介して、Sectdの関数を呼出すSectd関数SectdProg_1を含む。
付録Dは、図10においてブロックで示されたozスクリプトのソースリストを
提供する。
上記説明は、この発明の特定の実施例を説明したものであるが、この発明を前
記実施例に限定するものではない。この発明の範囲内において、様々な変更が可
能である。例えば、上記詳細な説明はC++プログラミング言語での実施例を説
明したが、この発明は、その他のオブジェクト指向プログラミング言語にも適用
可能である。この発明の範囲は、次の特許請求の範囲に記載されている。
【手続補正書】特許法第184条の7第1項
【提出日】1994年2月3日
【補正内容】
(1994年2月3日付提出の請求の範囲の翻訳文)
請求の範囲
1.第1のコンピュータと第2のコンピュータとを具備する分散型コンピュータ
システムの応用プログラムにおけるデータオブジェクトを共用するための構造で
あって、
第1の遠隔手続き呼出しメカニズムに対するインターフェースであって、前記
第1のコンピュータに設けられた第1の応用レベルインターフェイスと、
第2の遠隔手続き呼出しメカニズムに対するインターフェースであって、前記
第2のコンピュータに設けられた第2の応用レベルインターフェイスと、
該第1のコンピュータと第2のコンピュータとの間におけるデータの伝送を行
うために、前記第1のコンピュータおよび第2のコンピュータに設けられていて
、前記第1の遠隔手続き呼出しメカニズムと第2の遠隔手続き呼出しメカニズム
とを結合する手段と、
前記第1の応用レベルインターフェイスに結合されていて、共用可能なオブジ
ェクトの基礎クラスを表現するデータ構造を提供するものであり、該各共用可能
なオブジェクトは前記第1のコンピュータおよび第2のコンピュータの処理によ
ってアクセス可能である第1の手段と、
前記第2の応用レベルインターフェイスに結合されていて、前記共用可能なオ
ブジェクトの前記基礎クラスを表現する前記データ構造を提供する第2の手段と
、
前記第1の応用レベルインターフェイスに結合されていて、クラスの階層に従
って前記基礎クラスから派生された共用可能オブジェクトの複数のクラスを夫々
表現するデータ構造を提供するものであり、該共用可能オブジェクトの複数のク
ラスの各々における各共用可能オブジェクトは前記第1のコンピュータおよび第
2のコンピュータの処理によってアクセス可能である第1の手段と、
前記第2の応用レベルインターフェイスに結合されていて、前記共用可能オブ
ジェクトの前記複数のクラスを夫々表現する前記データ構造を提供する第2の手
段と、
前記第1のコンピュータに設けられていて、前記基礎クラスを表現するデータ
構造に根付いた継承の木を構築するものであり、該継承の木は前記クラスの階層
に従って前記共用可能オブジェクトの複数のクラスと前記基礎クラスとの間の関
係を表現するデータ構造を持っている第1の手段と、
前記第2のコンピュータに設けられていて、該第2のコンピュータにおいて前
記継承の木を構築する第2の手段と、
前記第1のコンピュータに設けられていて、該第1のコンピュータにおける或
る第1のオブジェクトと或る第2のオブジェクトとの間の関係を表現するデータ
構造を構築するために前記継承の木を探索するものであり、この第1のオブジェ
クトは前記第1及び第2の遠隔手続き呼出しメカニズムを介して前記第2のコン
ピュータにおける処理によってマシーン独立型フォーマットで特定されるもので
ある第1の手段と、
前記第2のコンピュータに設けられていて、該第2のコンピュータにおける或
る第1のオブジェクトと或る第2のオブジェクトとの間の関係を表現するデータ
構造を構築するために前記継承の木を探索するものであり、この第1のオブジェ
クトは前記第1及び第2の遠隔手続き呼出しメカニズムを介して前記第1のコン
ピュータにおける処理によってマシーン独立型フォーマットで特定されるもので
ある第2の手段と
を具備した構造。
2.第1のコンピュータと第2のコンピュータとを具備する分散型コンピュータ
システムの応用プログラムにおけるデータオブジェクトを共用するための方法で
あって、
前記第1のコンピュータにおいて、該第1のコンピュータの第1の遠隔手続き
呼出しメカニズムに対する第1の応用レベルインターフェイスを提供するステッ
プと、
前記第2のコンピュータにおいて、該第2のコンピュータの第2の遠隔手続き
呼出しメカニズムに対する第2の応用レベルインターフェイスを提供するステッ
プと、
前記第1のコンピュータと第2のコンピュータとの間におけるデータの伝送を
行うため、前記第1及び第2のコンピュータにおける前記第1の遠隔手続き呼出
しメカニズムと第2の遠隔手続き呼出しメカニズムとを結合するステップと、
前記第1及び第2のコンピュータの各々において、該第1及び第2のコンピュ
ータにおける共用可能なオブジェクトの基礎クラスを表現するデータ構造を提供
し、かつ、前記第1及び第2のコンピュータの各々において、前記基礎クラスか
ら派生された共用可能オブジェクトの複数のクラスを夫々表現するデータ構造を
提供するステップと、
前記第1及び第2のコンピュータの各々において、前記基礎クラスを表現する
データ構造に根付いており、かつ、クラスの階層に従って前記共用可能オブジェ
クトの複数のクラスと前記基礎クラスとを関係づけるデータ構造を持っている、
継承の木を提供するステップと、
或る第1のオブジェクトが前記第1及び第2のコンピュータの一方における処
理によって特定され、かつ該第1のオブジェクトが前記第1及び第2のコンピュ
ータの前記遠隔手続き呼出しメカニズムを介して前記第1及び第2のコンピュー
タの他方に供給される毎に、前記第1及び第2のコンピュータの各々において、
前記第1のオブジェクトと或る第2のオブジェクトとの間の関係を表現するデー
タ構造を構築するために前記継承の木を探索するステップと
を具備する方法。
3.前記各共用可能オブジェクトが、前記第1のコンピュータおよび第2のコン
ピュータのうちの選択された一方におけるサーバーオブジェクトと、前記第1の
コンピュータおよび第2のコンピュータのうちの他方におけるクライアントオブ
ジェクトとを具備し、前記サーバーオブジェクトとクライアントオブジェクトと
が、前記第1の応用レベルインターフェイスおよび第2の応用レベルインターフ
ェイスを介して通信する請求の範囲第1項に記載の構造。
4.前記クライアントオブジェクトが、(a)共用可能オブジェクトのサーバー
オブジェクトクラス、または、(b)前記共用可能オブジェクトのサーバーオブ
ジェクトクラスから派生された共用可能オブジェクトの或るクラスに属している
請求の範囲第3項に記載の構造。
5.前記サーバーオブジェクトが、前記選択されたコンピュータにおいて実行さ
れる複数のメソッドを有し、前記クライアントオブジェクトが、前記第1及び第
2の応用レベルインターフェイスによる遠隔手続き呼出しを介して前記メソッド
の各々にアクセスする請求の範囲第3項に記載の構造。
6.前記継承の木に基づき、および、共用されるオブジェクトへのポインタを使
用して、(a)前記共用されるオブジェクトを含む親オブジェクト、または、(
b)前記親オブジェクトの内包オブジェクトへのポインタを求める手段をさらに
具備した請求の範囲第5項に記載の構造。
7.前記サーバーオブジェクトが共用可能オブジェクトのリストを維持し、前記
クライアントオブジェクトが、前記リストへのインデックスを使用して、前記リ
スト内の1つの共用可能オブジェクトのメソッドを特定し、その後、前記サーバ
ーオブジェクトが、前記インデックスを受け取って、前記ポインタを求める手段
を介して前記メソッドへのポインタを求める請求の範囲第6項に記載の構造。
8.前記サーバーオブジェクトが、前記メソッドのいずかれを実行した結果を、
前記第1の応用レベルインターフェイスおよび第2の応用レベルインターフェイ
スを介して前記クライアントオブジェクトに返すものであり、前記クライアント
オブジェクトは、前記結果を受け取るまで、スリープモードで待機する請求の範
囲第5項に記載の構造。
9.前記サーバーオブジェクトが、前記メソッドのいずかれを実行している間に
発生したエラーメッセージを、前記第1の応用レベルインターフェイスおよび第
2の応用レベルインターフェイスを介して前記クライアントオブジェクトに返す
ものである請求の範囲第5項に記載の構造。
10.前記クライアントオブジェクトが、サーバー通信オブジェクトと、前記サ
ーバーオブジェクトに対して該サーバー通信オブジェクトの作成を通知するメッ
セージを作成するものであり、前記サーバーオブジェクトが、前記メッセージに
応答して、前記クライアントオブジェクトにメッセージを送るためのクライアン
ト通信オブジェクトを作成する請求の範囲第3項に記載の構造。
11.前記サーバーオブジェクトが、前記サーバーオブジェクトクラス、および
、該サーバーオブジェクトクラスの派生源であるクラスをリストしたサーバーマ
ニフェストを前記クライアントオブジェクトに送り、前記クライアントオブジェ
クトが、前記クライアントオブジェクトクラス、および、該クライアントオブジ
ェクトクラスの派生源であるクラスをリストしたクライアントマニフェストを前
記サーバーオブジェクトに送る請求の範囲第4項に記載の構造。
12.前記共用可能なオブジェクトの各々を、前記第1のコンピュータおよび第
2のコンピュータのうちの選択された一方においてサーバーオブジェクトとして
実行し、前記第1のコンピュータおよび第2のコンピュータの他方においてクラ
イアントオブジェクトとして実行するステップを更に具備し、前記サーバーオブ
ジェクトとクライアントオブジェクトとが、前記第1の応用レベルインターフェ
イスおよび第2の応用レベルインターフェイスを介して通信する請求の範囲第2
項に記載の方法。
13.前記クライアントオブジェクトに対して、(a)共用可能オブジェクトの
前記サーバーオブジェクトクラス、または、(b)前記共用可能オブジェクトの
サーバーオブジェクトクラスから派生する共用可能オブジェクトの1つのクラス
で、前記クライアントオブジェクトを供給するステップを更に具備する請求の範
囲第12項に記載の方法。
14.前記サーバーオブジェクトに対して、前記選択されたコンピュータで実行
される複数のメソッドを供給するステップと、
前記第1の応用レベルインターフェイスおよび第2の応用レベルインターフェ
イスによる遠隔手続き呼出しを介して、前記クライアントオブジェクトから各前
記メソッドをアクセスするステップと
を更に具備する請求の範囲第13項に記載の方法。
15.前記第1のコンピュータおよび第2のコンピュータの各々において、前記
継承の木に基づき、および、共用されるオブジェクトへのポインタを使用して、
(a)前記共用されるオブジェクトを含む親オブジェクト、または、(b)前記
親オブジェクトの内包オブジェクトへのポインタを求めるステップを更に具備す
る請求の範囲第14項に記載の方法。
16.共用可能オブジェクトのリストを前記サーバーオブジェクト内に維持する
ステップと、
前記リスト内の前記共用可能オブジェクトの1つのいずれかのメソッドにアク
セスする際、前記リストへのインデックスを特定するステップと、
前記インデックスを受け取り、前記ポインタを求めるステップを使用して前記
メソッドへのポインタを求めるステップと
を更に具備する請求の範囲第15項に記載の方法。
17.前記第1の応用レベルインターフェイスおよび第2の応用レベルインター
フェイスを介して、前記サーバーオブジェクトから前記クライアントオブジェク
トに、前記メソッドのいずかれを実行した結果を返すステップと、
前記結果を受け取るまで、前記クライアントオブジェクトがスリープモードで
待機するステップと
を更に具備する請求の範囲第14項に記載の方法。
18.前記メソッドのいずれかを実行している間に発生したエラーメッセージを
、前記第1の応用レベルインターフェイスおよび第2の応用レベルインターフェ
イスを介して前記クライアントオブジェクトに返す請求の範囲第14項に記載の
方法。
19.前記クライアントオブジェクトにおいて、サーバー通信オブジェクトと、
前記サーバーオブジェクトに対して該サーバー通信オブジェクトの作成を通知す
るメッセージとを作成するステップと、
前記サーバーオブジェクトにおいて、前記メッセージに応答して、前記クライ
アントオブジェクトにメッセージを送るためのクライアント通信オブジェクトを
作成するステップと
を更に具備する請求の範囲第12項に記載の方法。
20.前記サーバーオブジェクトクラス、および、該サーバーオブジェクトクラ
スの派生源であるクラスをリストしたサーバーマニフェストを前記クライアント
オブジェクトに送るステップと、
前記クライアントオブジェクトクラス、および、該クライアントオブジェクト
クラスの派生源であるクラスをリストしたクライアントマニフェストを前記サー
バーオブジェクトに送るステップと
を更に具備する請求の範囲第13項に記載の方法。
Claims (1)
- 【特許請求の範囲】 1.分散型コンピュータシステムの応用プログラム用の高レベルデータ構造(“ オブジェクト”)サポートを提供するための構造であって、 第1の遠隔手続き呼出しメカニズムに対する第1の応用レベルインターフェイ スを提供する第1のコンピュータ、および、前記遠隔手続き呼出しメカニズムに 対する第2の応用レベルインターフェイスを提供する第2のコンピュータと、 前記第1のコンピュータと前記第2のコンピュータとの間でデータの伝送を行 うために、前記第1の遠隔手続き呼出しメカニズムと前記遠隔手続き呼出しメカ ニズムと接続する物理的接続部を含む手段と、 前記第1のコンピュータと前記第2のコンピュータとの間で共用可能なオブジ ェクトの基礎クラスを提供する手段と、 各々が前記基礎クラスから派生した共用可能なオブジェクトの複数のクラスを 提供する手段と、 前記複数のクラスの各々を、前記基礎クラス、および、これから派生した前記 複数のクラスの他のものに関連付ける、前記基礎クラスに根付いた継承の木を提 供する手段と、 前記第1の遠隔手続き呼出しメカニズムおよび第2の遠隔手続き呼出しメカニ ズムを介して提供されるクラスを構築するために前記継承の木を探索する手段と を具備した構造。 2.分散型コンピュータシステムの応用プログラム用の高レベルデータ構造(“ オブジェクト”)サポートを提供する方法であって、 第1の遠隔手続き呼出しメカニズムに対する第1の応用レベルインターフェイ スを提供する第1のコンピュータ、および、前記遠隔手続き呼出しメカニズムに 対する第2の応用レベルインターフェイスを提供するステップと、 前記第1のコンピュータと前記第2のコンピュータとの間におけるデータの伝 送を行うために、前記第1の遠隔手続き呼出しメカニズムと前記遠隔手続き呼出 しメカニズムとを結合するステップであって、前記第1及び第2のコンピュータ を物理的に接続することを含むステップと、 前記第1のコンピュータと前記第2のコンピュータとの間で共用可能なオブジ ェクトの基礎クラスを提供するステップと、 各々が前記基礎クラスから派生した共用可能なオブジェクトの複数のクラスを 提供するステップと、 前記複数のクラスの各々を、前記基礎クラス、およびこれから派生した前記複 数のクラスの他のものに関連付ける、前記基礎クラスに根付いた継承の木を提供 するステップと、 前記第1の遠隔手続き呼出しメカニズムおよび第2の遠隔手続き呼出しメカニ ズムを介して提供されるクラスを構築するために前記継承の木を探索するステッ プとを備える方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US938,102 | 1992-08-28 | ||
US07/938,102 US5307490A (en) | 1992-08-28 | 1992-08-28 | Method and system for implementing remote procedure calls in a distributed computer system |
PCT/US1993/007886 WO1994006083A1 (en) | 1992-08-28 | 1993-08-26 | Method and system for implementing remote procedure calls in a distributed computer system |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH08504975A true JPH08504975A (ja) | 1996-05-28 |
Family
ID=25470900
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP6507249A Pending JPH08504975A (ja) | 1992-08-28 | 1993-08-26 | 分散型コンピュータシステムにおける遠隔手続き呼出しを実行するための方法およびシステム |
Country Status (5)
Country | Link |
---|---|
US (1) | US5307490A (ja) |
EP (1) | EP0657047B1 (ja) |
JP (1) | JPH08504975A (ja) |
DE (1) | DE69331440T2 (ja) |
WO (1) | WO1994006083A1 (ja) |
Families Citing this family (238)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5430876A (en) * | 1989-06-27 | 1995-07-04 | Digital Equipment Corporation | Remote procedure callback system and method |
US5526491A (en) * | 1992-09-22 | 1996-06-11 | International Business Machines Corporation | System and method for calling selected service procedure remotely by utilizing conditional construct switch statement to determine the selected service procedure in common stub procedure |
EP0592080A2 (en) * | 1992-09-24 | 1994-04-13 | International Business Machines Corporation | Method and apparatus for interprocess communication in a multicomputer system |
WO1994011810A1 (en) * | 1992-11-13 | 1994-05-26 | Microsoft Corporation | A method and system for marshalling interface pointers for remote procedure calls |
JP3503957B2 (ja) * | 1992-11-25 | 2004-03-08 | 富士通株式会社 | 遠隔データベースの制御方法及び装置 |
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 |
DE69327448T2 (de) * | 1992-12-21 | 2004-03-04 | Sun Microsystems, Inc., Mountain View | Verfahren und Vorrichtung für Teilaufgaben in verteiltem Verarbeitungssystem |
US6157961A (en) * | 1992-12-21 | 2000-12-05 | Sun Microsystems, Inc. | Client-side stub interpreter |
US5390325A (en) * | 1992-12-23 | 1995-02-14 | Taligent, Inc. | Automated testing system |
US5774719A (en) * | 1993-01-08 | 1998-06-30 | Digital Equipment Corporation | Method for comparing data structures that cross address space boundaries |
US5452459A (en) * | 1993-01-08 | 1995-09-19 | Digital Equipment Corporation | Method and apparatus for allocating server access in a distributed computing environment |
WO1994022078A2 (en) * | 1993-03-23 | 1994-09-29 | Apple Computer, Inc. | Apparatus and method for a relocatable file format |
US6718399B1 (en) | 1993-05-21 | 2004-04-06 | Candle Distributed Solutions, Inc. | Communications on a network |
US5848234A (en) * | 1993-05-21 | 1998-12-08 | Candle Distributed Solutions, Inc. | Object procedure messaging facility |
CA2097540C (en) * | 1993-06-01 | 1998-05-12 | William G. O'farrell | Accessing remote data objects in a distributed memory environment |
JP3365576B2 (ja) * | 1993-06-14 | 2003-01-14 | インターナショナル・ビジネス・マシーンズ・コーポレーション | オブジェクトの実行方法および装置 |
US6226690B1 (en) * | 1993-06-14 | 2001-05-01 | International Business Machines Corporation | Method and apparatus for utilizing proxy objects to communicate with target objects |
US6751796B1 (en) | 1993-06-25 | 2004-06-15 | Microsoft Corporation | Integration of systems management services with an underlying system object model |
CA2124720C (en) * | 1993-06-25 | 2002-10-22 | Michael R. C. Seaman | Integration of systems management services with an underlying system object model |
US5603031A (en) * | 1993-07-08 | 1997-02-11 | General Magic, Inc. | System and method for distributed computation based upon the movement, execution, and interaction of processes in a network |
US5586317A (en) * | 1993-07-30 | 1996-12-17 | Apple Computer, Inc. | Method and apparatus for implementing I/O in a frame-based computer system |
GB9316948D0 (en) * | 1993-08-14 | 1993-09-29 | Ibm | Programming aid for distributed computing systems |
US6289390B1 (en) | 1993-08-18 | 2001-09-11 | Microsoft Corporation | System and method for performing remote requests with an on-line service network |
CA2107299C (en) * | 1993-09-29 | 1997-02-25 | Mehrad Yasrebi | High performance machine for switched communications in a heterogenous data processing network gateway |
US5596579A (en) * | 1993-10-01 | 1997-01-21 | International Business Machines Corporation | High performance machine for switched communications in a heterogeneous data processing network gateway |
US5517645A (en) * | 1993-11-05 | 1996-05-14 | Microsoft Corporation | Method and system for interfacing components via aggregate components formed by aggregating the components each with an instance of a component manager |
US5485617A (en) | 1993-12-13 | 1996-01-16 | Microsoft Corporation | Method and system for dynamically generating object connections |
US5548726A (en) * | 1993-12-17 | 1996-08-20 | Taligeni, Inc. | System for activating new service in client server network by reconfiguring the multilayer network protocol stack dynamically within the server node |
US5499343A (en) * | 1993-12-17 | 1996-03-12 | Taligent, Inc. | Object-oriented networking system with dynamically configurable communication links |
FR2714746B1 (fr) * | 1993-12-31 | 1996-02-02 | Bull Sa | Procédé de simulation d'une architecture "serveur" à partir d'une architecture "client". |
US5812129A (en) * | 1994-01-03 | 1998-09-22 | International Business Machines Corp. | Method and system for accessing functions of a user interface environment from processes running outside of the user interface environment |
US6813769B1 (en) * | 1997-10-28 | 2004-11-02 | Microsoft Corporation | Server application components with control over state duration |
US5832219A (en) * | 1994-02-08 | 1998-11-03 | Object Technology Licensing Corp. | Distributed object networking service |
GB2288477A (en) * | 1994-04-05 | 1995-10-18 | Ibm | Communications system for exchanging data between computers in a network. |
US5694546A (en) | 1994-05-31 | 1997-12-02 | Reisman; Richard R. | System for automatic unattended electronic information transport between a server and a client by a vendor provided transport software with a manifest list |
EP0701205B1 (en) * | 1994-07-22 | 2003-05-14 | Sun Microsystems, Inc. | Method and apparatus for space-efficient inter-process communication |
US5778228A (en) * | 1994-08-16 | 1998-07-07 | International Business Machines Corporation | Method and system for transferring remote procedure calls and responses over a network |
CA2153445C (en) * | 1994-09-08 | 2002-05-21 | Ashok Raj Saxena | Video optimized media streamer user interface |
US5684984A (en) * | 1994-09-29 | 1997-11-04 | Apple Computer, Inc. | Synchronization and replication of object databases |
US5625818A (en) * | 1994-09-30 | 1997-04-29 | Apple Computer, Inc. | System for managing local database updates published to different online information services in different formats from a central platform |
JP3361663B2 (ja) * | 1994-10-03 | 2003-01-07 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 通信管理方法 |
US5544310A (en) * | 1994-10-04 | 1996-08-06 | International Business Machines Corporation | System and method for testing distributed systems |
US5870089A (en) * | 1994-10-27 | 1999-02-09 | Dazel Corporation | Apparatus and process for distributing information using an electronic package representation |
US5758074A (en) * | 1994-11-04 | 1998-05-26 | International Business Machines Corporation | System for extending the desktop management interface at one node to a network by using pseudo management interface, pseudo component interface and network server interface |
US5793965A (en) * | 1995-03-22 | 1998-08-11 | Sun Microsystems, Inc. | Method and apparatus for determining the type of an object in a distributed object system |
EP0735472A3 (en) * | 1995-03-31 | 2000-01-19 | Sun Microsystems, Inc. | Method and apparatus for conspiracy among objects |
US5724503A (en) * | 1995-03-31 | 1998-03-03 | Sun Microsystems, Inc. | Method and apparatus for interpreting exceptions in a distributed object system |
US5724512A (en) * | 1995-04-17 | 1998-03-03 | Lucent Technologies Inc. | Methods and apparatus for storage and retrieval of name space information in a distributed computing system |
US6249822B1 (en) | 1995-04-24 | 2001-06-19 | Microsoft Corporation | Remote procedure call method |
US20040264402A9 (en) * | 1995-06-01 | 2004-12-30 | Padcom. Inc. | Port routing functionality |
US6418324B1 (en) * | 1995-06-01 | 2002-07-09 | Padcom, Incorporated | Apparatus and method for transparent wireless communication between a remote device and host system |
US5774668A (en) * | 1995-06-07 | 1998-06-30 | Microsoft Corporation | System for on-line service in which gateway computer uses service map which includes loading condition of servers broadcasted by application servers for load balancing |
US6901433B2 (en) | 1995-06-07 | 2005-05-31 | Microsoft Corporation | System for providing users with a filtered view of interactive network directory obtains from remote properties cache that provided by an on-line service |
US5713017A (en) * | 1995-06-07 | 1998-01-27 | International Business Machines Corporation | Dual counter consistency control for fault tolerant network file servers |
US5956712A (en) * | 1995-06-07 | 1999-09-21 | International Business Machines Corporation | Byte range locking in a distributed environment |
US5956489A (en) * | 1995-06-07 | 1999-09-21 | Microsoft Corporation | Transaction replication system and method for supporting replicated transaction-based services |
US5978773A (en) * | 1995-06-20 | 1999-11-02 | Neomedia Technologies, Inc. | System and method for using an ordinary article of commerce to access a remote computer |
US5933599A (en) * | 1995-07-17 | 1999-08-03 | Microsoft Corporation | Apparatus for presenting the content of an interactive on-line network |
US6691299B1 (en) | 1995-07-19 | 2004-02-10 | Ricoh Company, Ltd. | Object-oriented communications framework system with support for multiple remote machine types |
US5732261A (en) * | 1995-07-19 | 1998-03-24 | Ricoh Company, Ltd. | Method of using an object-oriented communication system with support for multiple remote machine types |
US5956509A (en) | 1995-08-18 | 1999-09-21 | Microsoft Corporation | System and method for performing remote requests with an on-line service network |
US5941947A (en) * | 1995-08-18 | 1999-08-24 | Microsoft Corporation | System and method for controlling access to data entities in a computer network |
US5682534A (en) * | 1995-09-12 | 1997-10-28 | International Business Machines Corporation | Transparent local RPC optimization |
US5892946A (en) * | 1995-09-12 | 1999-04-06 | Alcatel Usa, Inc. | System and method for multi-site distributed object management environment |
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 |
US6088515A (en) | 1995-11-13 | 2000-07-11 | Citrix Systems Inc | Method and apparatus for making a hypermedium interactive |
US5915112A (en) * | 1996-01-02 | 1999-06-22 | International Business Machines Corporation | Remote procedure interface with support for multiple versions |
US5764915A (en) * | 1996-03-08 | 1998-06-09 | International Business Machines Corporation | Object-oriented communication interface for network protocol access using the selected newly created protocol interface object and newly created protocol layer objects in the protocol stack |
US5938733A (en) * | 1996-03-08 | 1999-08-17 | International Business Machines Corporation | Object oriented representation of network requests in a client server model |
US5809235A (en) * | 1996-03-08 | 1998-09-15 | International Business Machines Corporation | Object oriented network event management framework |
US6260074B1 (en) * | 1996-03-30 | 2001-07-10 | Sun Microsystems, Inc. | Method and apparatus for passing generic objects in a distributed system |
US6281893B1 (en) * | 1996-04-04 | 2001-08-28 | Sun Microsystems, Inc. | Method and apparatus for providing an object oriented approach to a device independent graphics control system |
US6708171B1 (en) | 1996-04-23 | 2004-03-16 | Sun Microsystems, Inc. | Network proxy |
US6272559B1 (en) * | 1997-10-15 | 2001-08-07 | Sun Microsystems, Inc. | Deferred reconstruction of objects and remote loading for event notification in a distributed system |
US6598094B1 (en) | 1998-03-20 | 2003-07-22 | Sun Microsystems, Inc. | Method and apparatus for determining status of remote objects in a distributed system |
US6938263B2 (en) | 1996-04-23 | 2005-08-30 | Sun Microsystems, Inc. | System and method for facilitating dynamic loading of “stub” information to enable a program operating in one address space to invoke processing of a remote method or procedure in another address space |
US6446070B1 (en) * | 1998-02-26 | 2002-09-03 | Sun Microsystems, Inc. | Method and apparatus for dynamic distributed computing over a network |
US6182083B1 (en) | 1997-11-17 | 2001-01-30 | Sun Microsystems, Inc. | Method and system for multi-entry and multi-template matching in a database |
US6466947B2 (en) | 1998-03-20 | 2002-10-15 | Sun Microsystems, Inc. | Apparatus and method for dynamically verifying information in a distributed system |
US6832223B1 (en) | 1996-04-23 | 2004-12-14 | Sun Microsystems, Inc. | Method and system for facilitating access to a lookup service |
US6393497B1 (en) | 1998-03-20 | 2002-05-21 | Sun Microsystems, Inc. | Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system |
US6185611B1 (en) | 1998-03-20 | 2001-02-06 | Sun Microsystem, Inc. | Dynamic lookup service in a distributed system |
US6463446B1 (en) | 1998-02-26 | 2002-10-08 | Sun Microsystems, Inc. | Method and apparatus for transporting behavior in an event-based distributed system |
US6560656B1 (en) | 1998-02-26 | 2003-05-06 | Sun Microsystems, Inc. | Apparatus and method for providing downloadable code for use in communicating with a device in a distributed system |
US6421704B1 (en) | 1998-03-20 | 2002-07-16 | Sun Microsystems, Inc. | Method, apparatus, and product for leasing of group membership in a distributed system |
US6487607B1 (en) | 1998-02-26 | 2002-11-26 | Sun Microsystems, Inc. | Methods and apparatus for remote method invocation |
US6438614B2 (en) | 1998-02-26 | 2002-08-20 | Sun Microsystems, Inc. | Polymorphic token based control |
US6138238A (en) | 1997-12-11 | 2000-10-24 | Sun Microsystems, Inc. | Stack-based access control using code and executor identifiers |
US6044409A (en) | 1996-06-26 | 2000-03-28 | Sun Microsystems, Inc. | Framework for marshaling and unmarshaling argument object references |
US5991823A (en) * | 1996-06-26 | 1999-11-23 | Sun Microsystems, Inc. | Low overhead object adaptor |
US6275871B1 (en) * | 1996-07-03 | 2001-08-14 | Siemens Aktiengesellschaft | Asynchronous transport optimizing observer-pattern-like system supporting several modes for an interface definition language-less communication subsystem |
US5867650A (en) * | 1996-07-10 | 1999-02-02 | Microsoft Corporation | Out-of-band data transmission |
US5946463A (en) * | 1996-07-22 | 1999-08-31 | International Business Machines Corporation | Method and system for automatically performing an operation on multiple computer systems within a cluster |
US5781703A (en) * | 1996-09-06 | 1998-07-14 | Candle Distributed Solutions, Inc. | Intelligent remote agent for computer performance monitoring |
US5832529A (en) | 1996-10-11 | 1998-11-03 | Sun Microsystems, Inc. | Methods, apparatus, and product for distributed garbage collection |
US6237009B1 (en) | 1996-10-11 | 2001-05-22 | Sun Microsystems, Inc. | Lease renewal service |
US6728737B2 (en) | 1996-10-11 | 2004-04-27 | Sun Microsystems, Inc. | Method and system for leasing storage |
US6175879B1 (en) * | 1997-01-29 | 2001-01-16 | Microsoft Corporation | Method and system for migrating connections between receive-any and receive-direct threads |
US6067580A (en) * | 1997-03-11 | 2000-05-23 | International Business Machines Corporation | Integrating distributed computing environment remote procedure calls with an advisory work load manager |
US6408342B1 (en) * | 1997-03-28 | 2002-06-18 | Keith E. Moore | Communications framework for supporting multiple simultaneous communications protocols in a distributed object environment |
US6321348B1 (en) * | 1997-04-07 | 2001-11-20 | E-Parcel, Inc. | System for remote internet consulting, servicing and repair |
US5948107A (en) * | 1997-05-28 | 1999-09-07 | Intel Corporation | Method of handling errors in complex inheritance hierarchies |
US6157959A (en) * | 1997-07-03 | 2000-12-05 | Tandem Computers, Incorporated | Method and apparatus for providing portable kernel-mode support for fast interprocess communication |
US6065045A (en) * | 1997-07-03 | 2000-05-16 | Tandem Computers Incorporated | Method and apparatus for object reference processing |
US6567861B1 (en) * | 1997-09-17 | 2003-05-20 | International Business Machines Corporation | Method and apparatus for remotely running objects using data streams and/or complex parameters |
US6957427B1 (en) | 1997-10-15 | 2005-10-18 | Sun Microsystems, Inc. | Remote object activation in a distributed system |
US6253256B1 (en) * | 1997-10-15 | 2001-06-26 | Sun Microsystems, Inc. | Deferred reconstruction of objects and remote loading in a distributed system |
US7076784B1 (en) | 1997-10-28 | 2006-07-11 | Microsoft Corporation | Software component execution management using context objects for tracking externally-defined intrinsic properties of executing software components within an execution environment |
US6134594A (en) | 1997-10-28 | 2000-10-17 | Microsoft Corporation | Multi-user, multiple tier distributed application architecture with single-user access control of middle tier objects |
US6631425B1 (en) | 1997-10-28 | 2003-10-07 | Microsoft Corporation | Just-in-time activation and as-soon-as-possible deactivation or server application components |
US6047289A (en) * | 1997-11-07 | 2000-04-04 | Novell, Inc. | Method and apparatus for directed data propagation |
US6170065B1 (en) | 1997-11-14 | 2001-01-02 | E-Parcel, Llc | Automatic system for dynamic diagnosis and repair of computer configurations |
US6016496A (en) * | 1997-11-20 | 2000-01-18 | International Business Machines Corporation | Method and apparatus for an object-oriented object for retrieving information from local and remote databases |
US6510460B1 (en) | 1997-12-18 | 2003-01-21 | Sun Microsystems, Inc. | Method and apparatus for enforcing locking invariants in multi-threaded systems |
US6249803B1 (en) | 1997-12-18 | 2001-06-19 | Sun Microsystems, Inc. | Method and apparatus for executing code during method invocation |
US6405264B1 (en) * | 1997-12-18 | 2002-06-11 | Sun Microsystems, Inc. | Marshaling and unmarshaling framework for supporting filters in a distributed object system |
US6516354B2 (en) | 1997-12-18 | 2003-02-04 | Sun Microsystems, Inc. | Method and apparatus for efficient representation of variable length identifiers in a distributed object system |
US6397252B1 (en) * | 1997-12-19 | 2002-05-28 | Electronic Data Systems Corporation | Method and system for load balancing in a distributed object system |
CN1298514A (zh) | 1998-02-26 | 2001-06-06 | 太阳微系统公司 | 确定性散列识别远程方法的方法和系统 |
US6604127B2 (en) | 1998-03-20 | 2003-08-05 | Brian T. Murphy | Dynamic lookup service in distributed system |
US6901596B1 (en) | 1998-05-07 | 2005-05-31 | Hewlett-Packard Development Company, L.P. | Method of communicating asynchronous events to remote procedure call clients |
US6378004B1 (en) * | 1998-05-07 | 2002-04-23 | Compaq Computer Corporation | Method of communicating asynchronous elements from a mini-port driver |
US6138269A (en) * | 1998-05-20 | 2000-10-24 | Sun Microsystems, Inc. | Determining the actual class of an object at run time |
US6256596B1 (en) * | 1998-06-30 | 2001-07-03 | Autodesk, Inc. | Extensible framework for capturing feature information in a neutral format |
US6289012B1 (en) | 1998-08-03 | 2001-09-11 | Instanton Corporation | High concurrency data download apparatus and method |
US6425017B1 (en) | 1998-08-17 | 2002-07-23 | Microsoft Corporation | Queued method invocations on distributed component applications |
US6442620B1 (en) | 1998-08-17 | 2002-08-27 | Microsoft Corporation | Environment extensibility and automatic services for component applications using contexts, policies and activators |
US7305451B2 (en) * | 1998-08-24 | 2007-12-04 | Microsoft Corporation | System for providing users an integrated directory service containing content nodes located in different groups of application servers in computer network |
JP2000099332A (ja) | 1998-09-25 | 2000-04-07 | Hitachi Ltd | 遠隔手続き呼び出し最適化方法とこれを用いたプログラム実行方法 |
US7136645B2 (en) | 1998-10-09 | 2006-11-14 | Netmotion Wireless, Inc. | Method and apparatus for providing mobile and other intermittent connectivity in a computing environment |
US8060656B2 (en) | 1998-10-09 | 2011-11-15 | Netmotion Wireless, Inc. | Method and apparatus for providing mobile and other intermittent connectivity in a computing environment |
US8078727B2 (en) * | 1998-10-09 | 2011-12-13 | Netmotion Wireless, Inc. | Method and apparatus for providing mobile and other intermittent connectivity in a computing environment |
US7778260B2 (en) * | 1998-10-09 | 2010-08-17 | Netmotion Wireless, Inc. | Method and apparatus for providing mobile and other intermittent connectivity in a computing environment |
US6546425B1 (en) | 1998-10-09 | 2003-04-08 | Netmotion Wireless, Inc. | Method and apparatus for providing mobile and other intermittent connectivity in a computing environment |
US7293107B1 (en) * | 1998-10-09 | 2007-11-06 | Netmotion Wireless, Inc. | Method and apparatus for providing mobile and other intermittent connectivity in a computing environment |
US6385661B1 (en) * | 1998-10-19 | 2002-05-07 | Recursion Software, Inc. | System and method for dynamic generation of remote proxies |
US6163794A (en) * | 1998-10-23 | 2000-12-19 | General Magic | Network system extensible by users |
US6988123B2 (en) * | 1998-11-06 | 2006-01-17 | Seiko Epson Corporation | Methods and apparatus for remote execution of an application over the internet |
US6636891B1 (en) * | 1998-11-06 | 2003-10-21 | Seiko Epson Corporation | Methods and apparatus for controlling an input or output device over the internet |
US6631409B1 (en) * | 1998-12-23 | 2003-10-07 | Worldcom, Inc. | Method and apparatus for monitoring a communications system |
US6922708B1 (en) | 1999-02-18 | 2005-07-26 | Oracle International Corporation | File system that supports transactions |
US6829770B1 (en) | 1999-02-23 | 2004-12-07 | Microsoft Corporation | Object connectivity through loosely coupled publish and subscribe events |
US6748455B1 (en) | 1999-02-23 | 2004-06-08 | Microsoft Corporation | Object connectivity through loosely coupled publish and subscribe events with filtering |
US6901518B1 (en) | 1999-04-08 | 2005-05-31 | Sun Microsystems, Inc. | Method and system for establishing trust in downloaded proxy code |
US7882247B2 (en) | 1999-06-11 | 2011-02-01 | Netmotion Wireless, Inc. | Method and apparatus for providing secure connectivity in mobile and other intermittent computing environments |
US6845393B1 (en) | 1999-06-14 | 2005-01-18 | Sun Microsystems, Inc. | Lookup discovery service in a distributed system having a plurality of lookup services each with associated characteristics and services |
US6549916B1 (en) | 1999-08-05 | 2003-04-15 | Oracle Corporation | Event notification system tied to a file system |
US7280995B1 (en) | 1999-08-05 | 2007-10-09 | Oracle International Corporation | On-the-fly format conversion |
US7418435B1 (en) | 1999-08-05 | 2008-08-26 | Oracle International Corporation | Multi-model access to data |
US6748555B1 (en) * | 1999-09-09 | 2004-06-08 | Microsoft Corporation | Object-based software management |
US6512519B1 (en) | 1999-10-27 | 2003-01-28 | Autodesk, Inc. | Infrastructure for shape event handlers |
US6947965B2 (en) | 1999-11-30 | 2005-09-20 | Recursion Software, Inc. | System and method for communications in a distributed computing environment |
US6920636B1 (en) * | 1999-12-15 | 2005-07-19 | Microsoft Corporation | Queued component interface passing for results outflow from queued method invocations |
US6789077B1 (en) | 2000-05-09 | 2004-09-07 | Sun Microsystems, Inc. | Mechanism and apparatus for web-based searching of URI-addressable repositories in a distributed computing environment |
US6643650B1 (en) | 2000-05-09 | 2003-11-04 | Sun Microsystems, Inc. | Mechanism and apparatus for using messages to look up documents stored in spaces in a distributed computing environment |
US8001232B1 (en) | 2000-05-09 | 2011-08-16 | Oracle America, Inc. | Event message endpoints in a distributed computing environment |
US7016966B1 (en) | 2000-05-09 | 2006-03-21 | Sun Microsystems, Inc. | Generating results gates in a distributed computing environment |
US7072967B1 (en) | 2000-05-09 | 2006-07-04 | Sun Microsystems, Inc. | Efficient construction of message endpoints |
US8135796B1 (en) | 2000-05-09 | 2012-03-13 | Oracle America, Inc. | Mechanism and apparatus for accessing and addressing services in a distributed computing environment |
US7188251B1 (en) | 2000-05-09 | 2007-03-06 | Sun Microsystems, Inc. | System and method for secure message-based leasing of resources in a distributed computing environment |
US7577834B1 (en) | 2000-05-09 | 2009-08-18 | Sun Microsystems, Inc. | Message authentication using message gates in a distributed computing environment |
US6862594B1 (en) | 2000-05-09 | 2005-03-01 | Sun Microsystems, Inc. | Method and apparatus to discover services using flexible search criteria |
US7010573B1 (en) | 2000-05-09 | 2006-03-07 | Sun Microsystems, Inc. | Message gates using a shared transport in a distributed computing environment |
US6950875B1 (en) | 2000-05-09 | 2005-09-27 | Sun Microsystems, Inc. | Message conductors in a distributed computing environment |
US7395333B1 (en) | 2000-05-09 | 2008-07-01 | Sun Microsystems, Inc. | Method and apparatus to obtain negotiated service advertisement |
US7200848B1 (en) | 2000-05-09 | 2007-04-03 | Sun Microsystems, Inc. | Migrating processes using data representation language representations of the processes in a distributed computing environment |
US6792466B1 (en) | 2000-05-09 | 2004-09-14 | Sun Microsystems, Inc. | Trusted construction of message endpoints in a distributed computing environment |
US6789126B1 (en) | 2000-05-09 | 2004-09-07 | Sun Microsystems, Inc. | Addressing message gates in a distributed computing environment |
US6850979B1 (en) | 2000-05-09 | 2005-02-01 | Sun Microsystems, Inc. | Message gates in a distributed computing environment |
US6973493B1 (en) | 2000-05-09 | 2005-12-06 | Sun Microsystems, Inc. | Mechanism and apparatus for security of newly spawned repository spaces in a distributed computing environment |
US7243356B1 (en) | 2000-05-09 | 2007-07-10 | Sun Microsystems, Inc. | Remote method invocation with secure messaging in a distributed computing environment |
US6898618B1 (en) | 2000-05-09 | 2005-05-24 | Sun Microsystems, Inc. | Client-specified display services in a distributed computing environment |
US7716492B1 (en) | 2000-05-09 | 2010-05-11 | Oracle America, Inc. | Method and apparatus to obtain service capability credentials |
US6918084B1 (en) | 2000-05-09 | 2005-07-12 | Sun Microsystems, Inc. | Spawning new repository spaces using information provided in advertisement schema messages |
US6868447B1 (en) | 2000-05-09 | 2005-03-15 | Sun Microsystems, Inc. | Mechanism and apparatus for returning results of services in a distributed computing environment |
US7260543B1 (en) | 2000-05-09 | 2007-08-21 | Sun Microsystems, Inc. | Automatic lease renewal with message gates in a distributed computing environment |
US6917976B1 (en) | 2000-05-09 | 2005-07-12 | Sun Microsystems, Inc. | Message-based leasing of resources in a distributed computing environment |
US8082491B1 (en) | 2000-05-09 | 2011-12-20 | Oracle America, Inc. | Dynamic displays in a distributed computing environment |
US7370091B1 (en) | 2000-05-09 | 2008-05-06 | Sun Microsystems, Inc. | Method and apparatus for obtaining space advertisements |
US6970869B1 (en) | 2000-05-09 | 2005-11-29 | Sun Microsystems, Inc. | Method and apparatus to discover services and negotiate capabilities |
US7080078B1 (en) | 2000-05-09 | 2006-07-18 | Sun Microsystems, Inc. | Mechanism and apparatus for URI-addressable repositories of service advertisements and other content in a distributed computing environment |
US7065574B1 (en) | 2000-05-09 | 2006-06-20 | Sun Microsystems, Inc. | Messaging system using pairs of message gates in a distributed computing environment |
US7185005B1 (en) | 2000-05-12 | 2007-02-27 | Oracle International Corporation | Nested transactions in a file system |
US6760815B1 (en) | 2000-06-02 | 2004-07-06 | Sun Microsystems, Inc. | Caching mechanism for a virtual heap |
US6941410B1 (en) | 2000-06-02 | 2005-09-06 | Sun Microsystems, Inc. | Virtual heap for a virtual machine |
US6957237B1 (en) | 2000-06-02 | 2005-10-18 | Sun Microsystems, Inc. | Database store for a virtual heap |
US6865657B1 (en) | 2000-06-02 | 2005-03-08 | Sun Microsystems, Inc. | Garbage collector for a virtual heap |
US6854115B1 (en) | 2000-06-02 | 2005-02-08 | Sun Microsystems, Inc. | Process persistence in a virtual machine |
US6763440B1 (en) | 2000-06-02 | 2004-07-13 | Sun Microsystems, Inc. | Garbage collection using nursery regions for new objects in a virtual heap |
US6721807B2 (en) * | 2000-08-10 | 2004-04-13 | International Business Machines Corporation | Extensible and efficient double dispatch in single-dispatch object-oriented programming languages |
EP1334587A1 (en) * | 2000-08-31 | 2003-08-13 | Padcom Inc. | Method and apparatus for routing data over multiple wireless networks |
GB2368411B (en) * | 2000-10-25 | 2004-01-28 | Proksim Software Inc | Sharing data over a network |
US7058648B1 (en) | 2000-12-01 | 2006-06-06 | Oracle International Corporation | Hierarchy-based secured document repository |
US7296275B2 (en) * | 2001-01-04 | 2007-11-13 | Sun Microsystems, Inc. | Method and system for passing objects in a distributed system using serialization contexts |
US7562146B2 (en) * | 2003-10-10 | 2009-07-14 | Citrix Systems, Inc. | Encapsulating protocol for session persistence and reliability |
US20050198379A1 (en) * | 2001-06-13 | 2005-09-08 | Citrix Systems, Inc. | Automatically reconnecting a client across reliable and persistent communication sessions |
US6871228B2 (en) * | 2001-06-29 | 2005-03-22 | International Business Machines Corporation | Methods and apparatus in distributed remote logging system for remote adhoc data analysis customized with multilevel hierarchical logger tree |
EP1292109A1 (en) * | 2001-08-27 | 2003-03-12 | Ricoh Company, Ltd. | Information processing system |
US20030051029A1 (en) * | 2001-09-07 | 2003-03-13 | Reedy Dennis G. | Dynamic provisioning of sevice components in a distributed system |
US7756969B1 (en) | 2001-09-07 | 2010-07-13 | Oracle America, Inc. | Dynamic provisioning of identification services in a distributed system |
US7660887B2 (en) * | 2001-09-07 | 2010-02-09 | Sun Microsystems, Inc. | Systems and methods for providing dynamic quality of service for a distributed system |
US7644171B2 (en) * | 2001-09-12 | 2010-01-05 | Netmotion Wireless, Inc. | Mobile networking system and method using IPv4 and IPv6 |
US7853933B2 (en) * | 2001-09-29 | 2010-12-14 | Siebel Systems, Inc. | Computing system and method to perform compile-time extension for world wide web application |
US20030120697A1 (en) * | 2001-12-21 | 2003-06-26 | Lockheed Martin Corporation | System and method for adapting a software control in an operating environment |
US7984157B2 (en) * | 2002-02-26 | 2011-07-19 | Citrix Systems, Inc. | Persistent and reliable session securely traversing network components using an encapsulating protocol |
US7661129B2 (en) * | 2002-02-26 | 2010-02-09 | Citrix Systems, Inc. | Secure traversal of network components |
US7353521B1 (en) | 2002-10-19 | 2008-04-01 | Borland Software Corporation | Object oriented distributed software system with methodology for piggybacked reflective callbacks |
US20040170181A1 (en) * | 2003-02-27 | 2004-09-02 | Padcom, Inc. | Prioritized alternate port routing |
US7158985B1 (en) * | 2003-04-09 | 2007-01-02 | Cisco Technology, Inc. | Method and apparatus for efficient propagation of large datasets under failure conditions |
US7089066B2 (en) * | 2003-04-24 | 2006-08-08 | Colorado Vnet, Llc | Distributed control systems and methods |
US20040218591A1 (en) * | 2003-04-29 | 2004-11-04 | Craig Ogawa | Bridge apparatus and methods of operation |
US8694510B2 (en) * | 2003-09-04 | 2014-04-08 | Oracle International Corporation | Indexing XML documents efficiently |
US8229932B2 (en) | 2003-09-04 | 2012-07-24 | Oracle International Corporation | Storing XML documents efficiently in an RDBMS |
US7792874B1 (en) | 2004-01-30 | 2010-09-07 | Oracle America, Inc. | Dynamic provisioning for filtering and consolidating events |
US7930277B2 (en) * | 2004-04-21 | 2011-04-19 | Oracle International Corporation | Cost-based optimizer for an XML data repository within a database |
US20050243857A1 (en) * | 2004-04-30 | 2005-11-03 | Padcom, Inc. | Simultaneously routing data over multiple wireless networks |
US7587721B2 (en) * | 2004-05-20 | 2009-09-08 | Sap Ag | Sharing objects in runtime systems |
US7681184B1 (en) | 2004-05-24 | 2010-03-16 | Borland Software Corporation | System and methodology for cross language type system compatibility |
US20070208946A1 (en) * | 2004-07-06 | 2007-09-06 | Oracle International Corporation | High performance secure caching in the mid-tier |
US7627547B2 (en) * | 2004-11-29 | 2009-12-01 | Oracle International Corporation | Processing path-based database operations |
US7921076B2 (en) * | 2004-12-15 | 2011-04-05 | Oracle International Corporation | Performing an action in response to a file system event |
US8131766B2 (en) * | 2004-12-15 | 2012-03-06 | Oracle International Corporation | Comprehensive framework to integrate business logic into a repository |
US7669181B2 (en) * | 2005-04-29 | 2010-02-23 | Sap (Ag) | Client interfaces for packages |
US7587705B2 (en) * | 2005-04-29 | 2009-09-08 | Sap (Ag) | Calls and return calls using client interfaces |
US7634771B2 (en) * | 2005-04-29 | 2009-12-15 | Sap (Ag) | Object generation in packages |
US8073841B2 (en) * | 2005-10-07 | 2011-12-06 | Oracle International Corporation | Optimizing correlated XML extracts |
US8356053B2 (en) * | 2005-10-20 | 2013-01-15 | Oracle International Corporation | Managing relationships between resources stored within a repository |
US8949455B2 (en) | 2005-11-21 | 2015-02-03 | Oracle International Corporation | Path-caching mechanism to improve performance of path-related operations in a repository |
US7898968B2 (en) * | 2006-09-15 | 2011-03-01 | Citrix Systems, Inc. | Systems and methods for selecting efficient connection paths between computing devices |
US7827177B2 (en) * | 2006-10-16 | 2010-11-02 | Oracle International Corporation | Managing compound XML documents in a repository |
US7797310B2 (en) * | 2006-10-16 | 2010-09-14 | Oracle International Corporation | Technique to estimate the cost of streaming evaluation of XPaths |
US9183321B2 (en) * | 2006-10-16 | 2015-11-10 | Oracle International Corporation | Managing compound XML documents in a repository |
US20090064134A1 (en) * | 2007-08-30 | 2009-03-05 | Citrix Systems,Inc. | Systems and methods for creating and executing files |
US20090222818A1 (en) * | 2008-02-29 | 2009-09-03 | Sap Ag | Fast workflow completion in a multi-system landscape |
EP2269142A4 (en) | 2008-03-14 | 2015-04-22 | Neomedia Tech Inc | MESSAGE EXCHANGE SYSTEM |
US7958112B2 (en) * | 2008-08-08 | 2011-06-07 | Oracle International Corporation | Interleaving query transformations for XML indexes |
US8656419B2 (en) * | 2009-07-02 | 2014-02-18 | Ca, Inc. | Dynamic distributed evaluator |
US10296313B2 (en) * | 2014-11-18 | 2019-05-21 | Roger James Poon | Safely consuming dynamically-typed code from a statically-typed programming language |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4887204A (en) * | 1987-02-13 | 1989-12-12 | International Business Machines Corporation | System and method for accessing remote files in a distributed networking environment |
US4914586A (en) * | 1987-11-06 | 1990-04-03 | Xerox Corporation | Garbage collector for hypermedia systems |
US5187790A (en) * | 1989-06-29 | 1993-02-16 | Digital Equipment Corporation | Server impersonation of client processes in an object based computer operating system |
AU628264B2 (en) * | 1990-08-14 | 1992-09-10 | Oracle International Corporation | Methods and apparatus for providing a client interface to an object-oriented invocation of an application |
DE69126857T2 (de) * | 1991-01-18 | 1998-01-08 | Ibm | Objektorientierte Programmierungsplattform |
-
1992
- 1992-08-28 US US07/938,102 patent/US5307490A/en not_active Expired - Lifetime
-
1993
- 1993-08-26 EP EP94908877A patent/EP0657047B1/en not_active Expired - Lifetime
- 1993-08-26 DE DE69331440T patent/DE69331440T2/de not_active Expired - Fee Related
- 1993-08-26 WO PCT/US1993/007886 patent/WO1994006083A1/en active IP Right Grant
- 1993-08-26 JP JP6507249A patent/JPH08504975A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
EP0657047B1 (en) | 2002-01-09 |
DE69331440T2 (de) | 2002-08-22 |
DE69331440D1 (de) | 2002-02-14 |
US5307490A (en) | 1994-04-26 |
EP0657047A1 (en) | 1995-06-14 |
WO1994006083A1 (en) | 1994-03-17 |
EP0657047A4 (en) | 1995-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH08504975A (ja) | 分散型コンピュータシステムにおける遠隔手続き呼出しを実行するための方法およびシステム | |
JP2978807B2 (ja) | 遠隔プロシージャ・コール・システムおよび方法 | |
Henning et al. | Distributed programming with ice | |
US6629128B1 (en) | System and method for distributed processing in a computer network | |
US6993774B1 (en) | System and method for remote enabling classes without interfaces | |
USRE43375E1 (en) | System and method for communications in a distributed computing environment | |
US6951021B1 (en) | System and method for server-side communication support in a distributed computing environment | |
US6622175B1 (en) | System and method for communications in a distributed processing environment | |
US6931455B1 (en) | System and method for communications between a CORBA object request broker and a non-CORBA object request broker | |
US6941561B1 (en) | Method and apparatus for remotely running objects using data streams and/or complex parameters | |
US20060200488A1 (en) | System and method for providing post hoc access to legacy applications and data | |
JPH09171465A (ja) | 異なる命名サービス・プロバイダが動的に命名フェデレーションに接合することを可能とするシステムおよび方法 | |
EP0605959A2 (en) | Apparatus and methods for making a portion of a first name space available as a portion of a second name space | |
JPH1083308A (ja) | スタブ検索及びローディング・サブシステム、スタブ検索及びローディング方法並びにスタブ検索及びローディング用記録媒体 | |
Nelson | An Implementation of UNIX™ on an object-oriented operating system | |
JP2002132739A (ja) | スタブ検索ローディングシステム及び方法、サーバ装置、クライアント装置並びにコンピュータ可読記録媒体 | |
WO2001038978A1 (en) | Configurable state machine driver and methods of use | |
Joshi et al. | Message filters for object‐oriented systems | |
Center | MPI primer/developing with LAM | |
WO2009065866A1 (en) | Generation and management of managed javabean objects | |
Iannello et al. | Parallel software development in the DISC programming environment | |
Pautet et al. | GLADE users guide | |
Crane et al. | Constructing distributed Unix utilities in Regis | |
Lopes et al. | DiTyCO: An experiment in code mobility from the realm of process calculi | |
Pautet et al. | CORBA & DSA: Divorce or marriage? |