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
Application number
JP6507249A
Other languages
English (en)
Inventor
トーマス・ジェイ デビットソン,
マイケル・ティー ケリー,
Original Assignee
タンデム・コンピューターズ・インコーポレイテッド
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 タンデム・コンピューターズ・インコーポレイテッド filed Critical タンデム・コンピューターズ・インコーポレイテッド
Publication of JPH08504975A publication Critical patent/JPH08504975A/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/133Protocols for remote procedure calls [RPC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network 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の応用レベルインターフェイ スを提供する第1のコンピュータ、および、前記遠隔手続き呼出しメカニズムに 対する第2の応用レベルインターフェイスを提供する第2のコンピュータと、 前記第1のコンピュータと前記第2のコンピュータとの間でデータの伝送を行 うために、前記第1の遠隔手続き呼出しメカニズムと前記遠隔手続き呼出しメカ ニズムと接続する物理的接続部を含む手段と、 前記第1のコンピュータと前記第2のコンピュータとの間で共用可能なオブジ ェクトの基礎クラスを提供する手段と、 各々が前記基礎クラスから派生した共用可能なオブジェクトの複数のクラスを 提供する手段と、 前記複数のクラスの各々を、前記基礎クラス、および、これから派生した前記 複数のクラスの他のものに関連付ける、前記基礎クラスに根付いた継承の木を提 供する手段と、 前記第1の遠隔手続き呼出しメカニズムおよび第2の遠隔手続き呼出しメカニ ズムを介して提供されるクラスを構築するために前記継承の木を探索する手段と を具備した構造。 2.分散型コンピュータシステムの応用プログラム用の高レベルデータ構造(“ オブジェクト”)サポートを提供する方法であって、 第1の遠隔手続き呼出しメカニズムに対する第1の応用レベルインターフェイ スを提供する第1のコンピュータ、および、前記遠隔手続き呼出しメカニズムに 対する第2の応用レベルインターフェイスを提供するステップと、 前記第1のコンピュータと前記第2のコンピュータとの間におけるデータの伝 送を行うために、前記第1の遠隔手続き呼出しメカニズムと前記遠隔手続き呼出 しメカニズムとを結合するステップであって、前記第1及び第2のコンピュータ を物理的に接続することを含むステップと、 前記第1のコンピュータと前記第2のコンピュータとの間で共用可能なオブジ ェクトの基礎クラスを提供するステップと、 各々が前記基礎クラスから派生した共用可能なオブジェクトの複数のクラスを 提供するステップと、 前記複数のクラスの各々を、前記基礎クラス、およびこれから派生した前記複 数のクラスの他のものに関連付ける、前記基礎クラスに根付いた継承の木を提供 するステップと、 前記第1の遠隔手続き呼出しメカニズムおよび第2の遠隔手続き呼出しメカニ ズムを介して提供されるクラスを構築するために前記継承の木を探索するステッ プとを備える方法。
JP6507249A 1992-08-28 1993-08-26 分散型コンピュータシステムにおける遠隔手続き呼出しを実行するための方法およびシステム Pending JPH08504975A (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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?