JPH07200449A - コードのリモート実行方法およびシステム - Google Patents

コードのリモート実行方法およびシステム

Info

Publication number
JPH07200449A
JPH07200449A JP6293588A JP29358894A JPH07200449A JP H07200449 A JPH07200449 A JP H07200449A JP 6293588 A JP6293588 A JP 6293588A JP 29358894 A JP29358894 A JP 29358894A JP H07200449 A JPH07200449 A JP H07200449A
Authority
JP
Japan
Prior art keywords
server
node
code
server code
location
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.)
Granted
Application number
JP6293588A
Other languages
English (en)
Other versions
JP3868013B2 (ja
Inventor
Andrew G Held
ジー ヘルド アンドリュー
Edward Jung
ユング エドワード
Mark Zbikowski
ズビコウスキー マーク
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JPH07200449A publication Critical patent/JPH07200449A/ja
Application granted granted Critical
Publication of JP3868013B2 publication Critical patent/JP3868013B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)

Abstract

(57)【要約】 【目的】 コードをリモートに実行する方法およびシス
テムを提供する。 【構成】 クライアント・プログラムはクライアント・
ノードで実行され、ネットワークと通信する。クライア
ント・プログラムは、自身が通信を望むオブジェクト・
インスタンスまたはオブジェクト・クラス・インスタン
スに対応するサーバ・コードの実行をリクエストする。
このリクエストに応じて、コンピュータ・システムは、
サーバ・コードを実行するロケーションを決定する。こ
の決定は、対応するサーバ・プログラムによって指定さ
れたロケーション・コンテキストとクライアント・プロ
グラムによってリクエストされたロケーション・コンテ
キストとの間で選択したルール・セットを用いて行われ
る。適切なロケーションが決定されると、クライアント
・プログラムは、そのリクエストを適切なロケーション
に転送し、リクエストされたサーバ・コードの実行をリ
クエストする。

Description

【発明の詳細な説明】
【0001】
【技術分野】この発明は、コンピュータ・ネットワーク
において、コードをリモート(遠隔的)に実行するコン
ピュータ方法およびシステムに関する。具体的には、こ
の発明は、ネットワークを事前に構成することなく、ま
た、特定の位置(ロケーション)のクライアントの知識
がなくてもコードをリモートに実行するための方法およ
びシステムに関する。
【0002】
【発明の背景】コンピュータ・ネットワーク環境下にお
いては、プログラム・コード(単に「コード」ともい
う)が実行されるロケーションの重要性が増加してい
る。コードが、そのコードによって操作されるデータを
記憶しているノードと同じノードで実行される場合に、
コードはより効率的に実行される。従来のシステムにお
いて、クライアント・プログラムが、ある特定のネット
ワーク・ノード上のサーバ・プログラムを実行したいと
きに、使用できる手法がいくつかある。一つの手法は、
システム・アドミニストレータが望ましいネットワーク
・ノードでサーバ・プログラムの実行を開始するもので
ある。もう一つの手法は、システム・アドミニストレー
タまたはクライアント・プログラムが、ネットワーク・
メッセージを望ましいノードにリモートに送信し、サー
バ・プログラムの実行を開始させるものである。他の手
法は、デーモン・プロセスが、識別されたメッセージ・
アドレスを有する望ましいネットワーク・ノードで開始
される。後に、クライアント・プログラムがこのメッセ
ージ・アドレスにメッセージを直接または間接に送信す
ると、サーバ・プログラムが実際に実行される。このメ
ッセージは、トリガのような役割を果たす。これらの従
来の手法では、ネットワーク上のプログラムまたはユー
ザは、サーバ・プログラムを実行できる場所およびサー
バ・プログラムの実行を開始する方法を予め知ってい
る。
【0003】この発明は、以下に示すように、オブジェ
クト指向型のプログラミング手法を用いている。したが
って、周知のオブジェクト指向型プログラミング手法の
手短な概要について述べる。オブジェクト指向型プログ
ラミング言語の2つの特徴は、データのカプセル化およ
びデータ型(データ・タイプ)の継承のサポートであ
る。データのカプセル化は、関数およびデータの結合
(束縛、バインド)と呼ばれる。継承は、あるデータ型
を他のデータ型で宣言できることをいう。
【0004】プログラミング言語C++において、オブジ
ェクト指向型の手法は、クラスを使用することによりサ
ポートされている。クラスは、ユーザが定義する(ユー
ザ定義の)型(タイプ)である。クラスの宣言では、そ
のクラスのデータ・メンバおよび関数メンバが記述され
る。例えば、次の宣言は、CIRCLEという名前のクラスの
データ・メンバおよび関数メンバを定義している。
【0005】
【0006】変数xとyは円の中心の位置を示すもの
で、変数radiusは円の半径を示すものである。これらの
変数は、クラスCIRCLEのデータ・メンバと呼ばれる。関
数drawは、指定された位置に指定された半径の円を描く
ユーザ定義の関数である。関数drawは、クラスCIRCLEの
関数メンバと呼ばれる。クラスのデータ・メンバおよび
関数メンバは、その関数がそのクラスのインスタンスに
処理を施すという点において、ともに結び付けられてい
る。クラスのインスタンスは、クラスのオブジェクトと
も呼ばれる。
【0007】C++の構文において、次の文(ステートメ
ント)は、クラスCIRCLE型のオブジェクトaおよびbを
宣言するものである。
【0008】CIRCLE a,b;
【0009】この宣言により、オブジェクトaおよびb
のメモリが割り当てられる。次の文は、オブジェクトa
およびbのデータ・メンバにデータを割り当てるもので
ある。
【0010】 a.x = 2; a.y = 2; a.radius = 1; b.x = 4; b.y = 5; b.radius = 2;
【0011】次の文は、オブジェクトaおよびbによっ
て定められた円を描くために使用される。
【0012】 a.draw(); b.draw();
【0013】派生クラス(derived class )は、その基
底クラス(base class)の特徴(データ・メンバおよび
関数メンバ)を継承するクラスである。例えば、次の派
生クラスCIRCLE-FILL は、基底クラスCIRCLEの特徴を継
承する。
【0014】
【0015】この宣言は、クラスCIRCLE-FILL が、その
宣言に導入されたデータ・メンバおよび関数メンバ(す
なわち、データ・メンバpattern および関数メンバfil
l)に加えて、クラスCIRCLEの全てのデータ・メンバお
よび関数メンバを含むことを示している。この例では、
クラスCIRCLE-FILL は、データ・メンバx、y、radius
およびpattern 、ならびに関数メンバdrawおよびfillを
有する。クラスCIRCLE-FILL は、クラスCIRCLEの特徴を
「継承する」(インヘリット:inherit )と呼ばれる。
他のクラスの特徴を継承するクラスが、派生クラス(例
えば、CIRCLE-FILL )である。他のクラスの特徴を継承
しないクラスが、プライマリ(ルート)・クラス(例え
ば、CIRCLE)である。その特徴が他のクラスによって継
承されるクラスが、基底クラスである(例えば、CIRCLE
はCIRCLE-FILL の基底クラスである)。派生クラスは、
複数のクラスの特徴を継承することもできる。すなわ
ち、派生クラスは、複数の基底クラスをもつことができ
る。これは、多重継承と呼ばれる。
【0016】クラスは、その関数メンバが仮想的である
かどうかを指定することもできる。関数メンバが仮想的
であることを宣言することは、派生クラスにおいて、同
じ名前と型の関数によってその関数を上書き(オーバラ
イド)できることを意味する。以下の例では、関数draw
が、クラスCIRCLEおよびCIRCLE-FILL において仮想的に
宣言されている。
【0017】
【0018】仮想関数が、インプリメンテーション(実
現または実現したもの)を提供することなく宣言される
と、その関数は純(ピュアな)仮想関数と呼ばれる。純
仮想関数は、純指定子(スペシファイア:specifier )
“=0”で宣言される仮想関数である。クラスが純仮想
関数を指定すると、任意の派生クラスは、その関数メン
バを呼び出す前に、その仮想関数メンバのインプリメン
テーションを指定する必要がある。
【0019】オブジェクトにアクセスするために、C++
言語には、ポインタ型のデータが用意されている。ポイ
ンタは、メモリにおけるオブジェクトのアドレス値を保
持する。ポインタによって、オブジェクトは参照され
る。次の文は、クラスCIRCLE型のオブジェクトへのポイ
ンタである変数c-ptr の宣言を示している。変数c-ptr
は、オブジェクトcのアドレスを保持するようにセット
される。
【0020】 CIRCLE *c-ptr; c-ptr = &c;
【0021】次の文は、オブジェクトaがクラスCIRCLE
型のオブジェクトであることを、オブジェクトbがクラ
スCIRCLE-FILL 型のオブジェクトであることをそれぞれ
宣言している。
【0022】 CIRCLE a; CIRCLE-FILL b;
【0023】次の文は、クラスCIRCLEで定義された関数
drawを参照するものである。
【0024】a.draw();
【0025】以下の文は、クラスCIRCLE-FILL で定義さ
れた関数drawを参照するものである。
【0026】b.draw();
【0027】図1は、オブジェクトを表すために使用さ
れる典型的なデータ構造体を示すブロック図である。オ
ブジェクトは、インスタンス・データ(データ・メン
バ)とメンバ関数とから合成(混合)される。こえっら
は、オブジェクトの振る舞いを実現する。オブジェクト
を表現するために使用されるデータ構造体は、インスタ
ンス・データ構造体101 、仮想関数テーブル102 、なら
びに関数メンバ103 、104 および105 から構成されてい
る。インスタンス・データ構造体101 は、仮想関数テー
ブル102 へのポインタおよびデータ・メンバを含んでい
る。仮想関数テーブル102 は、そのオブジェクト用に定
義された各仮想関数メンバ用のエントリを含んでいる。
各エントリは、対応する関数メンバを実現するコードへ
の参照を含んでいる。このサンプルのレイアウトは、米
国特許出願第07/682,537号「オブジェクト指向型プログ
ラミング言語のコンパイラにおける仮想関数および仮想
ベースの実現方法」(A Method for Implementing Virt
ual Functions and VirtualBases in a Compiler for a
n Object Oriented Programming Language )で説明さ
れたモデルと同じである。以下では、オブジェクトが、
C++プログラミング言語によって定義されるクラスのイ
ンスタンスとして示される。もちろん、オブジェクトを
他のプログラミング言語を用いて定義することは、この
技術分野の専門家ならば用意に理解できるであろう。
【0028】オブジェクト指向型の手法を用いる利点と
して、データおよびコードの共有が容易になるというこ
とが挙げられる。特に、オブジェクト指向型手法は、混
合(コンパウンド:compound)ドキュメント(コンパウ
ンド・ドキュメント)の作成を容易にする。混合ドキュ
メントは、様々なコンピュータ・プログラムによって生
成されたオブジェクトを含むドキュメントである(典型
的には、オブジェクトおよびクラス型のデータ・メンバ
のみが混合ドキュメントに格納される)。例えば、スプ
レッドシート・プログラムが生成するスプレッドシート
・オブジェクトを含んだワード・プロセッシング・ドキ
ュメントは、混合ドキュメントである。ワード・プロセ
ッシング・プログラムにより、ユーザは、ワード・プロ
セッシング・ドキュメント内にスプレッドシート・オブ
ジェクト(例えば、セル)を組み込むことができる。ス
プレッドシート・オブジェクトの組み込みを可能にする
ために、ワード・プロセッシング・プログラムは、自身
がスプレッドシート・オブジェクトの関数メンバを呼び
出せるように、スプレッドシート・オブジェクトのクラ
ス定義をもってコンパイルされる必要がある。任意のク
ラスのオブジェクトを混合ドキュメントに組み込むこと
を可能にするために、インタフェースが定義される。こ
のインタフェースによって、ワード・プロセッシング・
プログラムは、コンパイル時にクラス定義にアクセスす
る必要なく、オブジェクトにアクセスすることができ
る。抽象クラスは、インプリメンテーションを持たない
少なくとも一つの仮想関数メンバ(純仮想関数メンバ)
を有するクラスである。インタフェースは、データ・メ
ンバを持たず、その仮想関数が全て純仮想関数である抽
象クラスである。したがって、インタフェースは、2つ
のプログラムが通信するためのプロトコルを提供する。
インタフェースは、典型的には、派生のために使用され
る。プログラムは、クラスを派生するインタフェースの
インプリメンテーションを提供するクラスをインプリメ
ント(実現)する。以下では、オブジェクトは、これら
の派生したクラスのインスタンスとして生成される。
【0029】次のクラス定義は、インタフェースの定義
の例である。この例では、説明を簡単にするために、ワ
ード・プロセッシング・プログラムは、そのドキュメン
トに、オブジェクトの任意のクラスではなく、スプレッ
ドシート・オブジェクトの組み込みを許容している。ス
プレッドシート・オブジェクトがどのようにインプリメ
ントされているかに関わらず、このインタフェースを提
供する任意のスプレッドシート・オブジェクトの組み込
みが可能となる。さらに、ワード・プロセッシング・プ
ログラムのコンパイルの前後を問わず、任意のスプレッ
ドシート・オブジェクトの組み込みが可能となる。
【0030】
【0031】スプレッドシート・プログラムの開発者
は、スプレッドシート・オブジェクトをワード・プロセ
ッシング・ドキュメントに組み込むために、このインタ
フェースのインプリメンテーションを提供する必要があ
る。一般に、開発者は、このインタフェースから派生さ
れた、このインタフェースによって定義された各関数の
コードを含むクラス定義を提供するであろう。
【0032】ワード・プロセッシング・プログラムが、
スプレッドシート・オブジェクトを組み込むときに、こ
のプログラムは、スプレッドシート・オブジェクト用の
インタフェース(関数メンバ)をインプリメントするク
ラスのコードにアクセスする必要がある。このクラスの
コードにアクセスするために、ユニークなクラス識別子
が各インプリメンテーションに与えられる。例えば、マ
イクロソフト社によって開発されたスプレッドシート・
オブジェクトをインプリメントするコードは、“MSSpre
adsheet ”というクラス識別子をもつ。一方、他の会社
によって開発されたスプレッドシート・オブジェクトを
インプリメントするコードは、“LTSSpreadsheet”とい
うクラス識別子をもつ。クラスをインプリメントするコ
ードに各クラス識別子をマップする、各コンピュータ・
システムにおけるパーシステント・レジストリ(persis
tent registry )が保持されている。一般に、スプレッ
ドシート・プログラムがコンピュータ・システムにイン
ストールされるときに、スプレッドシート・オブジェク
トのそのクラスを利用できるようにパーシステント・レ
ジストリが更新される。スプレッドシートの開発者がイ
ンタフェースによって定義される各関数メンバをインプ
リメントし、パーシステント・レジストリが保持される
限り、ワード・プロセッシング・プログラムは、開発者
のスプレッドシート・オブジェクトのインスタンスをワ
ード・プロセッシング・ドキュメントに組み込むことが
できる。ワード・プロセッシング・プログラムは、だれ
がそのオブジェクトをインプリメントしたか、そのオブ
ジェクトがどのようにインプリメントされたかに関わら
ず、組み込まれたスプレッドシート・オブジェクトの関
数メンバにアクセスする。
【0033】
【発明の概要】この発明の目的は、コンピュータ・ネッ
トワークにおいて、リモートにコードを実行する方法お
よびシステムを提供することにある。
【0034】この発明の他の目的は、ネットワークを事
前に構成することなく、また、クライアント・プログラ
ムまたはユーザが、サーバ・コードまたはパーシステン
ト・オブジェクト・データに関する情報を知ることな
く、コードをリモートに実行する方法およびシステムを
提供することにある。
【0035】この発明の他の目的は、サーバ・コードを
実行するために、ローカル・コンテキストとリモート・
コンテキストの双方を含む、異なるロケーション・コン
テキストを特定する方法およびシステムを提供すること
にある。
【0036】この発明の他の目的は、特定されたオブジ
ェクト・インスタンスのパーシステント・データ・ビッ
トが格納されたサーバ・ノード上で、サーバ・コードを
実行する方法およびシステムを提供することにある。
【0037】この発明の他の目的は、クライアント・ア
プリケーションがある特定のオブジェクトにアクセスし
た後に、サーバ・コードを実行する場所を決定するため
の方法およびシステムを提供することにある。
【0038】この発明の他の目的は、サーバ・プログラ
ムによって特定されたロケーション・コンテキストとク
ライアント・プログラムによってリクエストされた望ま
しいロケーション・コンテキストとの間の裁定を行うた
めの方法およびシステムを提供することにある。
【0039】この発明の他の目的は、サーバ・コードを
実行するための望ましいセキュリティ・コンテキストを
特定する方法およびシステムを提供することにある。
【0040】この発明の他の目的は、サーバ・コードを
クライアント・プログラムと同じセキュリティ・コンテ
キストで実行すべきか、ある特定されたセキュリティ・
コンテキストで実行すべきかを特定するための方法およ
びシステムを提供することにある。
【0041】これらの目的および他の目的は、以下に詳
述するこの発明の説明によって、より明確になるであろ
う。また、これらの目的および他の目的は、リモートに
コードを実行する方法およびシステムによって達成され
る。好ましい実施例においては、クライアント・プログ
ラムは、オブジェクト・インスタンスまたはクラス・イ
ンスタンスへのアクセスをリクエストする。続いて、ク
ライアント・サービス制御マネージャは、リクエストさ
れたオブジェクトに対応するサーバ・コードを実行すべ
き場所を決定する。そして、クライアント・サービス制
御マネージャは、このリクエストを別のネットワーク・
ノードに転送するか、またはこのサーバ・コードをロー
カルに実行する。クライアント・サービス制御マネージ
ャは、サーバ・プログラムが提供するロケーション・コ
ンテキスト仕様およびクライアント・プログラム・リク
エストによってリクエストされた任意のロケーション・
コンテキストに基づいて、適切なサーバ・コードをスタ
ートさせる場所を決定する。決定されたロケーションが
リモート(遠隔地)である場合に、サーバ・サービス制
御マネージャは、クライアント・サービス制御マネージ
ャによって転送されたリクエストを受信し、サーバ・コ
ードの実行(まだ実行されていないならば)を開始す
る。続いて、このサーバ・コードは、クライアント・プ
ログラムによってリクエストされたオブジェクト・イン
スタンスまたはクラス・インスタンスを発見または生成
する。続いて、このサーバ・コードは、リクエストされ
たオブジェクトのインタフェースをマーシャルし、マー
シャルされたインタフェースを、サーバ・サービス制御
マーシャルに送り返す。サーバ・サービス制御マネージ
ャは、クライアント・サービス制御マネージャを介し
て、このマーシャルされたオブジェクトをクライアント
・プログラムに転送する。
【0042】
【実施例】この発明は、ある特定のロケーション(位
置)でサーバ・コードをリモートに実行するためのコン
ピュータ・システムにおける方法を提供するものであ
る。サーバ・プログラムは、ある特定のクラス識別子に
対応するオブジェクトを管理するためのサーバ・コード
を提供する(サーバ・コードがオブジェクトのクラスの
振る舞いをインプリメント(実現)する)ものである。
サーバ・コードは、一または複数のインタフェースをイ
ンプリメントする。インプリメンテーション(実現ない
し実現したもの)の部分が複数のクライアントによって
共有されるシステムにおいて、クライアント・プログラ
ムは、そのクライアント・プログラムの振る舞いをイン
プリメントすることを手助けするために、サーバ・プロ
グラムからのサービスをリクエストする。典型的なオブ
ジェクト指向型の環境において、サーバ・プログラム
は、クライアント・プログラムによって呼び出され(起
動され)、クライアント・プログラムがインプリメント
するものの外部にあるオブジェクトを管理する。
【0043】混合(コンパウンド)ドキュメント・シス
テムの場合に、クライアント・プログラムが混合ドキュ
メントをインプリメントし、サーバ・プログラムがその
混合ドキュメント内に格納されている組み込まれた(す
なわち、リンクされた)オブジェクトを管理するサーバ
・コードを提供する。発明の背景の項で述べた例では、
ワード・プロセッシング・プログラムがクライアント・
プログラムであり、このプログラムは、混合ドキュメン
トをサポートする。組み込まれたスプレッドシート・オ
ブジェクトは、スプレッドシート・プログラムによって
サポートされ、操作される。このスプレッドシート・プ
ログラムが、サーバ・プログラムである。
【0044】サーバ・プログラムは、ある特定のクラス
識別子を、複数の形態(動的リンク・ライブラリ(“D
DL”:dynamic Link Library)または独立して実行で
きるコード(例えば、.EXEファイル)を含む)でインプ
リメントするコードを提供する。このコードが、これら
以外の形態を取ることができるのはいうまでもない。こ
の理由から、オブジェクトのクラスをサポートするため
に提供されるコードは、サーバ・プログラムではなく、
サーバ・コードと呼ばれる。
【0045】この発明により、クライアント・プログラ
ムおよびネットワーク・サービス(ネットワークの機能
へのアクセスをサポートし、保持するコード)は、サー
バ・コードを実行すべき場所の決定を、クライアント・
プログラムがオブジェクトにアクセスするために実際に
リクエストする時まで、遅らせることができる。アプリ
オリな構成(コンフィグレーション)に関する知識を、
クライアント・プログラム、サーバ・コードまたはサー
バ・コードの配置を担当するネットワーク・サービスに
組み込む必要はない。特に、クライアント・プログラム
がオブジェクトのアクセス・リクエストを出すと(これ
により、ある特定のオブジェクトに関連したサーバ・コ
ードを実行するリクエストを生成する)、その時に、ネ
ットワーク・サービスは、サーバ・コードを実行するた
めのロケーションを決定する。ロケーションを決定する
ために、ネットワーク・サービスは、ロケーション・コ
ンテキストを、システム定義のアルゴリズムに従って組
み合わせる。このロケーション・コンテキストは、クラ
イアント・プログラムがオブジェクトへのアクセス・リ
クエストで要求しているロケーション・コンテキストに
よって、サーバ・プログラムのクラス・コードがパーシ
ステント・レジストリ(継続的に保持する登録簿)内で
特定したものである。ロケーション・コンテキストは、
サーバ・コードが実行されるべきロケーションを総括的
に表したものである。ある特定のシナリオにおいて、ど
のサーバ・コードが実行されるかを決定するために、こ
のロケーション・コンテキストは使用される。サーバ・
プログラムは、サーバ・コードを異なるシナリオで実行
するためのロケーション・コンテキストを特定すること
ができる。異なるシナリオには、ある特定の名前をもっ
たノード、クライアント・プログラムが実行されている
ノード、またはオブジェクト・データのパーシステント
・ストレージが配置されているノードにおけるサーバ・
コードの実行が含まれる。サーバ・プログラムの仕様と
同様に、クライアント・プログラムは、ある特定のシナ
リオでサーバ・コードを実行するように、サーバ・コー
ドにリクエストすることができる。例えば、サーバ・プ
ログラムは、ある特定の名前をもったノードでサーバ・
コードを実行するために、ロケーション・コンテキスト
の特定のみを行う。クライアント・プログラムは、クラ
イアント・プログラムが実行されるノードで、サーバ・
コードを実行するためのロケーション・コンテキストを
リクエストする。続いて、ネットワーク・サービスは、
サーバ・コードを実行するノードおよび実行すべきサー
バ・コードを、特定されたロケーション・コンテキスト
およびリクエストされたロケーション・コンテキストに
基づいて決定する。
【0046】サーバ・コードのロケーションに加えて、
サーバ・プログラムは、このプログラムが、ある特定の
セキュリティ・コンテキストで実行されるサーバ・コー
ドを所望することを、パーシステント・レジストリ内で
指定することができる。セキュリティ・コンテキスト
は、コンピュータ・システムによって使用される。セキ
ュリティ・コンテキストにより、あるコードのみが、ア
クセスが認められる前に定められたレベルの許可を要求
されるデータ、コードおよびシステム・リソースにアク
セスできることが確実にされている。実行すべきコード
が、指定された適切な許可をもつセキュリティ・コンテ
キストを有するならば、プロテクトされたデータ、コー
ドおよびリソースへのアクセスが認められる。セキュリ
ティ・コンテキストの仕様は、一般にオペレーティング
・システムに依存する。例えば、セキュリティ・コンテ
キストを、ユーザ・アカウント(ユーザID)およびパ
スワードとして見ることができる。セキュリティ・コン
テキストの仕様をインプリメントする多くの方法があ
る。一実施例においては、サーバ・コードは、パーシス
テント・レジストリ内でユーザIDを、保護データベー
スに対応するパスワードをそれぞれ指定する。ネットワ
ーク・サービスまたはクライアント・プログラムがサー
バ・コードを実行するときに、パーシステント・レジス
トリおよび保護データベースの情報を使用し、ある特定
のセキュリティ・コンテキストでサーバ・コードを実行
する。
【0047】好ましい実施例においては、この発明の方
法およびシステムは、中央処理装置、メモリおよび入出
力装置を備えたコンピュータ・システム上で実現され
る。このような実施例において、サーバ・プログラム
は、サーバ・コードの実行に関係した情報をパーシステ
ント・レジストリ内で指定する。サーバ・コードを発見
するための少なくとも一つのネットワーク・パスを指定
することに加えて、サーバ・プログラムは、パーシステ
ント・レジストリ内でロケーション・コンテキストを指
定する。特に、サーバ・プログラムは、(1) クライアン
ト・プログラムが内部プロセスのサーバ・コードを使用
して実行されているノード(AT-CLIENT-DDLロケーショ
ン・コンテキスト)、(2) クライアント・プログラムが
独立して実行可能なサーバ・コードを使用して実行され
ているノード(AT-CLIENT 実行可能ロケーション・コン
テキスト)、(3) オブジェクト・データのパーシステン
ト・ストレージが配置されているノード(AT-BITS ロケ
ーション・コンテキスト)、および(4) ある特定の名前
をもつノード(AT-NAMED-NODE ロケーション・コンテキ
スト)で、サーバ・コードを実行するための一または複
数のロケーション・コンテキストを指定する。第1に、
AT-CLIENT-DDL ロケーション・コンテキストに対応し
て、サーバ・プログラムは、DDLの形態でサーバ・コ
ードのロケーションを指定する。このロケーション・コ
ンテキストにおいて、クライアント・プログラムがサー
バ・コードの内部プロセスの実行をリクエストすると、
DDLが、クライアント・プログラムの処理空間にロー
ドされる。第2に、AT-CLIENT の実行可能ロケーション
・コンテキストに対応して、サーバ・プログラムは、ク
ライアント・プログラムと同じネットワーク・ノードで
ローカルにサーバ・コードを実行するために、独立して
実行可能なコードのロケーションを指定する。第3に、
AT-BITS ロケーション・コンテキストに対応して、サー
バ・プログラムは、アクセスされるパーシステント・オ
ブジェクト・データと同じネットワーク・ノードでリモ
ートにサーバ・コードを実行するために、独立して実行
可能なコードのロケーションを指定する。第4に、AT-N
AMED-NODE ロケーション・コンテキストに対応して、サ
ーバ・プログラムは、クライアントによって名前を付け
られたネットワーク・ノードでリモートにサーバ・コー
ドを実行するために、独立して実行可能なコードのロケ
ーションを指定する。AT-CLIENT-DDL およびAT-CLIENT
ロケーション・コンテキストは、これらのコンテキスト
がクライアント・ノードと同じノードでの実行を指定す
ることから、ローカル・ロケーション・コンテキストと
呼ばれる。AT-BITS およびAT-NAMED-NODE ロケーション
・コンテキストは、リモート・ロケーション・コンテキ
ストと呼ばれる。また、単一のAT-NAMED-NODEロケーシ
ョン・コンテキストの代わりに、他の実施例として、サ
ーバ・プログラムが各名前をもつノード用の個別のロケ
ーション・コンテキスト(またはそれらの組み合わせ)
を指定することもできる。例えば、サーバ・プログラム
は、一つのロケーション・コンテキストにおいて、ある
特定のノードに存在することが知られている特定のハー
ドウェアに特に向けられたサーバ・コードのロケーショ
ンを指定することができる。
【0048】クライアント・プログラムは、サーバ・プ
ログラムと同様に、オブジェクトにアクセスするリクエ
ストにおいて、どのようにオブジェクトにアクセスする
ことが好ましいかを指定する。すなわち、クライアント
・プログラムは、AT-CLIENT-DDL 、AT-CLIENT 、AT-BIT
S またはある特定の名前をもつノードのいずれで、サー
バ・コードを実行することが好ましいかを指定する。サ
ーバ・プログラムと異なり、名前をもつノードのロケー
ション・コンテキストにリクエストするときに、クライ
アント・プログラムは、総称的なAT-NAMED-NODE インデ
ィケータではなく、ノードの特定の名前を指定する。サ
ーバ・コードが実行されるべき場所を決定する機能をも
つネットワーク・サービス・コードは、サーバ・プログ
ラムがパーシステント・レジストリで指定したものと、
クライアント・プログラムがリクエストしているものと
の間で裁定を行う。
【0049】好ましい実施例においては、サーバ・プロ
グラムは、パーシステント・レジストリにおいて、その
コードに望ましいセキュリティ・コンテキストを指定す
る。サーバ・プログラムは、オペレーティング・システ
ムに依存した方法で、上述したように、一般にユーザI
Dとパスワードからなるセキュリティ・コンテキストを
指定する。サーバ・プログラムは、パーシステント・レ
ジストリにおいて、クライアント・プログラム・ユーザ
IDで実行することが好ましいか、ある特定のユーザI
Dで実行することが好ましいかを指定する。さらに、サ
ーバ・プログラムは、使用することが望ましいユーザI
Dに対するパスワード(セキュリティ・コンテキスト)
を、保護データベースに登録する。ネットワーク・サー
ビス(またはクライアント・プログラム)が、サーバ・
コードの実行を開始すると、サーバ・コードは、パーシ
ステント・レジストリで指定されたセキュリティ・コン
テキストで実行される。サーバ・プログラムが、「クラ
イアントとしての」セキュリティ・コンテキストを指定
しているならば、ネットワーク・サービスは、周知の手
法を用いて、クライアント・プログラムの役割を演じ
る。このような手法の一つは、(任意のプログラムのア
カウント情報をセットする機能をもつ)リモート・プロ
シジャ・コール・サーバに、(そのアカウント情報をク
ライアント・プログラム・アカウント情報にセットす
る)クライアント・プログラムの役を演じるようにリク
エストすることを含み、サーバ・コードを実行させる。
または、ネットワーク・サービスは、クライアント・プ
ログラム・アカウント情報にセットされたそのアカウン
ト情報により、新たなユーザ・プロセスをスタートさ
せ、サーバ・コードの実行を開始する新たなプロセスを
リクエストすることができる。一方、サーバ・プログラ
ムが、ある特定のユーザIDとして実行することが好ま
しいことを指定しているならば、ネットワーク・サービ
スは、保護データベースから対応するパスワードを得、
この情報を用いてサーバ・コードの実行を開始する。望
ましいサーバ・コードと通信していることを保証するク
ライアント・プログラムは、サーバ・プログラムによっ
て指定されたセキュリティ・コンテキストでサーバ・コ
ードを実行するための信頼性のあるプログラムまたはプ
ロセスをリクエストすることができる。このようなメカ
ニズムは、クライアント・プログラムがサーバ・コード
の適正なバージョンと通信していることを保証する。
【0050】図2は、オブジェクトにアクセスするため
に使用されるクライアント・ノードおよびサーバ・ノー
ドの全体構成を示すブロック図である。クライアント・
ノード204 は、クライアント・プログラム201 、クライ
アント・サービス制御マネージャ202 および登録データ
ベース203 を含んでいる。サーバ・ノード208 は、サー
バ・サービス制御マネージャ206 、登録データベース20
7 およびサーバ・コード207 を含んでいる。さらに、コ
ンピュータ・システムは、ファイルにアクセスするため
のネットワーク・ファイル・サービス、および特定され
たコードもしくはデータのネットワーク・アドレスまた
は指定されたノードのネットワーク・アドレスを決定す
るためのロケーション・サービスを含んでいる。好まし
い実施例において、これらのサービスは、分散ファイル
・システム(“DFS”)209 によって提供される。こ
れらのサービスを、他の方法(例えば、集中ファイル・
システム・サーバ)によって提供することができるのは
いうまでもない。
【0051】すなわち、好ましい実施例において、新し
いオブジェクトまたは既存オブジェクトのいずれかにア
クセスするために、クライアント・プログラム201 は、
クライアント・プログラム起動リクエストをクライアン
ト・サービス制御マネージャ202 に送信し、ある特定の
クラス識別子に対応するオブジェクトを起動させる。ク
ライアント・サービス制御マネージャ202 は、そのサー
ビスが必要とされるときにクライアント・ノードで開始
される個別のプロセスである。したがって、クライアン
ト・プログラム201 は、ローカル・リモート・プロシジ
ャ・コール(“RPC”)・メカニズムを介して、クラ
イアント・サービス制御マネージャ202と通信する
(「ローカルな」RPCコールとは、異なるプロセスで
はあるが、同じノードにおけるプロシジャの呼び出しを
いう)。リクエストがあると、クライアント・サービス
制御マネージャ202 は、登録データベース203 内の情報
を捜し、起動リクエストに対応するサーバ・コードを実
行するための望ましいロケーション・コンテキストを決
定する。また、リクエストがあると、クライアント・サ
ービス制御マネージャ202 は、DFS209 に、ネットワ
ーク・パス名を与えるサーバ・ノード・ネットワーク・
アドレスを返すように依頼する。クライアント・サービ
ス制御マネージャ202 が、どのネットワーク・ノードと
通信すべきかを知ると、クライアント・サービス制御マ
ネージャ202 は、標準RPCメカニズムを用いて、クラ
イアント・プログラム起動リクエストに対応して決定さ
れたノード上のサーバ・サービス制御マネージャ206
へ、リモート接続を確立する(クライアント・サービス
制御マネージャ202 が、オブジェクト・サーバ・コード
207 がローカルに実行される必要があると判断した場合
には、クライアント・サービス制御マネージャ202 は、
ローカルRPCメカニズムを用いて、オブジェクト・サ
ーバ・コード207 と直接通信する)。この通信におい
て、クライアント・サービス制御マネージャ202 は、ク
ライアント・プログラム起動リクエストの全情報をサー
バ・サービス制御マネージャ206 に転送する。続いて、
サーバ・サービス制御マネージャ206 は、登録データベ
ース(およびおそらくDFS209 )を調べ、適切なオブ
ジェクト・サーバ・コード205 を発見する。続いて、サ
ーバ・サービス制御マネージャ206 は、もし必要なら
ば、オブジェクト・サーバ・コード205をスタートさせ
る。オブジェクト・サーバ・コード205 は、新たなまた
は既存のオブジェクト・インスタンスを起動するのに必
要ないかなるタスクをも実行する。最後に、オブジェク
ト・サーバ・コード205 は、オブジェクト・インスタン
ス・データ構造体へのポインタをパケットにマーシャル
し(marshal )、このパケットを、サーバ・サービス制
御マネージャ206 およびクライアント・サービス制御マ
ネージャ202 を介して、クライアント・プログラム201
に送信する。クライアント・プログラム201 は、ポイン
タをマーシャル解除し(unmarshal )、続いてオブジェ
クト・サーバ・コードと直接通信することができる。
【0052】マーシャルおよびマーシャル解除は、プロ
セス間でオブジェクトへのポインタを渡す(パッシング
する)ためのメカニズムである。これらについては、米
国特許出願「リモート・プロシジャ・コールのためのイ
ンタフェース・ポインタのネットワーク・マーシャリン
グ方法およびシステム」(A METHOD AND SYSTEM FORNET
WORK MARSHALLING OF INTERFACE POINTERS FOR REMOTE
PROCEDURE CALLS)に示されている。この米国特許出願
は、この特許出願の優先権主張の基礎となる米国特許出
願と同時に出願されたものである。基本的に、アプリケ
ーションは、プロセス間に渡って送信されるパケット
に、インタフェースへのポインタをパッケージするため
にマーシャルを使用する。パケットは、サーバ・ノード
および応答通信用のプロセス(コールバック機能)を指
定する情報を含んでいる。ポインタがマーシャルされる
と、スタブ・オブジェクトが、サーバ・プロセス内に生
成される。このスタブ・オブジェクトは、オブジェクト
・サーバ・コードの実際の関数メンバを呼び出す方法を
知っている。クライアント・プロセスが、マーシャルさ
れたインタフェース・ポインタを受信すると、このクラ
イアント・プロセスは、ポインタをマーシャル解除し、
それ自身のアドレス空間内にインタフェース・プロクシ
・オブジェクト(インタフェース代理オブジェクト)を
生成する。このプロクシ・オブジェクトは、そのインタ
フェースの全ての関数メンバの関数エントリ・ポイント
を含んでいる。しかし、各関数のインプリメンテーショ
ンは、その呼び出しをスタブ・オブジェクトに単に転送
するだけである。マーシャル・プロセスは、プロクシお
よびスタブ・オブジェクトを生成し、今後の通信のため
にそれらを接続する。
【0053】[クラス・インスタンスへのアクセス]図
3は、クラス・インスタンスにアクセスするための通信
パスのフローチャートである。クライアント・プログラ
ムは、クラス・インスタンスを任意の方法で使用するこ
とができる。典型的な例として、クライアント・プログ
ラムは、このクラス・インスタンスを使用して、IClass
Factory インタフェースを使用するそのクラスの別のイ
ンスタンス(オブジェクト)を生成する。IClassFactor
y インタフェースは、そのクラスのオブジェクトを生成
する関数メンバCreateInstanceを提供する。このような
全てのオブジェクトは、同じクラス識別子を有し、した
がって同じクラス(オブジェクト・サーバ)・コードを
共有する。このクラス・コードは、発明の背景の項で述
べたように、オブジェクト・データを操作する関数メン
バのインプリメンテーションを提供する。
【0054】図3は、4つの異なるプロセス(クライア
ント・プログラム301 、クライアント・サービス制御マ
ネージャ306 (クライアントSCM)、サーバ・サービ
ス制御マネージャ313 (サーバSCM)およびオブジェ
クト・サーバ・コード320 )間における通信を示してい
る。破線は、ノードの境界を示している。クライアント
・プログラム301 およびクライアント・サービス制御マ
ネージャ306 は、クライアント・ノードに存在する。サ
ーバ・サービス制御マネージャ313 およびオブジェクト
・サーバ・コード319 は、サーバ・ノードに存在する。
図2の説明で述べたように、クライアント・プログラム
は、クライアント・サービス制御マネージャ306 からク
ラス・オブジェクトの起動をリクエストする。クライア
ント・サービス制御マネージャ306 は、どのサーバ・サ
ービス制御マネージャと通信すべきかを決定した後に、
適切なサーバ・サービス制御マネージャ313 にこのリク
エストを転送する。続いて、リクエストを転送されたサ
ーバ・サービス制御マネージャ313 は、リクエストされ
たオブジェクト・サーバ・コードの実行を開始する。次
に、オブジェクト・サーバ・コード320 は、リクエスト
されたオブジェクトのIClassFactory インタフェースを
生成し、このインタフェースを、2つのサービス制御マ
ネージャを介してクライアント・プログラム301 へ返
す。
【0055】この説明は、決定されたサーバ・サービス
制御マネージャが、遠隔のサーバ・ノードに存在するこ
とを仮定している。一方、クライアント・サービス制御
マネージャ306 が、オブジェクト・サーバ・コード320
をクライアント・プログラム301 と同じノードで実行す
べきと決定した場合には、クライアント・サービス制御
マネージャ306 は、クライアント・プログラムのリクエ
ストを転送する必要はない。この技術分野の専門家に
は、このようなオブジェクト・サーバ・コードのローカ
ルな実行も、リモートの実行と同様に行われることが容
易に分かるであろう。したがって、ここではその詳細な
説明は省略する。
【0056】ステップ302 において、クライアント・プ
ログラム301 は、関数StartObjectServer を呼び出す
(起動する)ために、ローカルRPCメカニズムを介し
て、クライアント・サービス制御マネージャ306 へリク
エストを送信する。このRPCリクエストを受信する
と、クライアント・サービス制御マネージャ306 は、関
数StartObjectServer を呼び出し、サーバ・コードを実
行すべき場所を決定し、決定されたサーバへ適切なリク
エストを送信する。ステップ307 において、関数StartO
bjectServer は、関数DetermineServer を呼び出し、パ
ーシステント・レジストリのサーバ・コード・ロケーシ
ョン・コンテキストの仕様と、クライアントがリクエス
トしたロケーション・コンテキスト(それがクライアン
ト・プログラム・リクエストに示されているならば)と
の双方に基づいて、望ましいサーバ・ノードを決定する
(この関数は、図4において詳細に説明する)。ステッ
プ308において、この関数は、決定されたサーバ・ノー
ドが(クライアント・プログラム301 が実行されてい
る)ローカル・ノードと同じかどうかを判定する。もし
同じならば、関数の処理はステップ309 に進み、そうで
なければステップ310 に進む。ステップ309 において、
この関数は、ステップ314 〜316 と同様のステップを実
行して、オブジェクト・サーバ・コードの処理をローカ
ルにスタートさせる。ステップ309 において、この関数
は、ローカルに実行されているオブジェクト・サーバ・
コードに対してローカルRPCコールを最後に実行す
る。ローカルに実行されているオブジェクト・サーバ・
コードは、ローカルRPCコールを、クライアント・サ
ービス制御マネージャ306 に送信し、実行はステップ31
1 に進む。ステップ310 において、関数は、決定された
サーバ・ノード上で関数StartObjectServer を呼び出す
ためのリクエストを、リモートRPCメカニズムを用い
て送信する。関数StartObjectServer は、適切なサーバ
・サービス制御マネージャにクライアント・プログラム
・リクエストを転送する。関数StartObjectServerを呼
び出すためのリクエストを受信すると、決定されたサー
バ・ノード上のサーバ・サービス制御マネージャ313
は、関数StartObjectServer を呼び出す(起動する)。
ステップ314 において、関数StartObjectServer は、す
でに実行されている、リクエストされたクラス識別子の
IClassFactory インタフェースのインスタンスがあるか
どうかを判定する。もしあるならば、関数の処理はステ
ップ319に進み、そうでなければステップ315 に進む
(オブジェクト・サーバ・コードが実行されるごとに、
オブジェクト・サーバ・コードは、このコードが生成し
管理することができるオブジェクトのクラスのそれぞれ
に対して、IClassFactory インタフェースのインスタン
スを生成し、登録する)。関数StartObjectServer は、
このインタフェースのインスタンスが登録されているな
らば、マーシャルされた形態であると仮定する。続い
て、関数StartObjectServer は、このマーシャルされた
インタフェースを検索し、ステップ319 においてマーシ
ャルされたインタフェースを送信する。ステップ315 に
おいて、関数StartObjectServer は、実行すべきオブジ
ェクト・サーバ・コードを識別するための現在のロケー
ション・コンテキストに対応するパーシステント・レジ
ストリ情報を調べる。一実施例において、この情報は、
DDLまたは独立して実行可能なコードをポイントする
ある特定のパス名である。この関数は、もし必要なら
ば、DFSを調べ、オブジェクト・サーバ・コードを実
際に獲得する。ステップ316 において、関数StartObjec
tServer は、オブジェクト・サーバ・コード320 の実行
を開始する。ステップ317 において、この関数は、オブ
ジェクト・サーバ・コード320 にリクエストを送信し、
ローカルRPCメカニズムを用いて、RemCoActivateCla
ssObject関数を呼び出す。リクエストが受信されると、
オブジェクト・サーバ・コード320 は、関数RemCoActiv
ateClassObjectを呼び出す。関数RemCoActivateClassOb
jectは、IClassFactory インタフェースのインスタンス
を生成し、このインタフェースのマーシャルされたバー
ジョンをサーバ・サービス制御マネージャ313 に返す。
ステップ321 において、関数RemCoActivateClassObject
は、リクエストされたクラス識別子のIClassFactory イ
ンタフェースのインスタンスを生成する。ステップ322
において、この関数は、このIClassFactory インタフェ
ースのインスタンスをパケットにマーシャルする。ステ
ップ323 で、関数RemCoActivateClassObjectは、ローカ
ルRPCメカニズムを介して、サーバ・サービス制御マ
ネージャ313 へこのパケットを返す。一方、関数StartO
bjectServer (サーバ・サービス制御マネージャ313 に
よって実行されている)は、ステップ318 で、マーシャ
ルされたIClassFactory インタフェース・インスタンス
を受信し、ステップ319 で、クライアント・サービス制
御マネージャ306 に、このパケットを転送する。続い
て、クライアント・サービス制御マネージャ306 によっ
て実行される関数StartObjectServer は、マーシャルさ
れたパケットを(リモートまたはローカルなサーバ・コ
ードのいずれかから)ステップ311 で受信する。ステッ
プ312 で、関数StartObjectServer は、マーシャルされ
たIClassFactory インタフェース・インスタンスを含む
パケットを、ローカルRPCメカニズムを介してクライ
アント・プログラム301 へ送信する。クライアント・プ
ログラム301 が、関数CoGetClassObjectのステップ303
でこのパケットを受信すると、関数CoGetClassObject
は、ステップ304 で、このパケットをプロクシ・オブジ
ェクト(代理オブジェクト:proxyobject)にマーシャ
ル解除する。このプロクシ・オブジェクトは、リクエス
トされたクラス識別子のIClassFactory インタフェース
をインプリメントする。マーシャル解除の関数コールを
通じて、このプロクシ・オブジェクトは、サーバ・ノー
ド上の同じIClassFactory インタフェースに対応するス
タブ・オブジェクトに接続される。ステップ305 で、関
数CoGetClassObjectは、起動されたクラス・オブジェク
トへのポイントを含むように示されたリターン・パラメ
ータを、このプロクシ・オブジェクトへセットし、リタ
ーンする。
【0057】図4は、オブジェクト・サーバ・コードを
実行するロケーションを決定する関数DetermineServer
のフローチャートである。この関数は、クライアント・
サービス制御マネージャ306 (図3)によって呼び出さ
れ、クライアント・プログラム起動リクエストに適切な
サーバ・ノード・ネットワーク・アドレスをリターンす
る。サーバ・ノード・アドレスが受信されると、クライ
アント・サービス制御マネージャ306 は、クライアント
・プログラム起動リクエストを、決定されたサーバ・ノ
ード上にあるサーバ・サービス制御マネージャ313 に転
送する。関数DetermineServer は、パーシステント・レ
ジストリ内のサーバ・プログラムによって提供されるロ
ケーション・コンテキスト仕様と、クライアント・プロ
グラムによってリクエストされたロケーション・コンテ
キストと組み合わせ、これらに基づいて、リクエストさ
れたサーバ・コードを実行するためのサーバ・ノードを
選択する。この関数は、図5〜図15に示す表(後述)に
基づいて、サーバ・ノードを選択する。この関数は、2
つの入力パラメータと一つの出力パラメータを有する。
クライアントの特定されたロケーション・コンテキスト
が、オリジナルのクライアント・プログラム起動リクエ
ストで指定されたならば、パラメータclient-specified
-ctxは、このロケーション・コンテキストを含んでい
る。このパラメータの値には、AT-BITS 、AT-CLIENT-DL
L 、AT-CLIENT またはある特定のサーバ・ノードの名前
が含まれる。第2の入力パラメータは、ppath である。
このppath は、オブジェクト・インスタンス・データへ
のネットワーク・パスがオリジナルのクライアント・プ
ログラム起動リクエストから派生することができるなら
ば、このパス名となる。出力パラメータp-serveraddr
は、サーバ・ノードのネットワーク・アドレスへのポイ
ンタである。
【0058】関数DetermineServer は、パーシステント
・レジストリ内のロケーション・コンテキスト情報をcl
ient-specified-ctxパラメータと組み合わせための1セ
ットのルールを用いて、サーバ・ノードを選択する。こ
れらのルールについては、図5〜図15の説明において詳
述する。ロケーション・コンテキストを組み合わせるた
めの多くの選択可能なルールが他にあることは勿論であ
る。また、AT-BITS 、AT-CLIENT-DLL 、AT-CLIENT およ
びAT-NAMED-NODE と異なるロケーション・コンテキスト
を定めることもできる。図5〜図15のテーブルは、クラ
イアント・プログラムによって呼び出される特定の起動
リクエスト、リクエストされたロケーション・コンテキ
スト、およびサーバ・プログラムによって特定されたロ
ケーション・コンテキストに基づいて、どのサーバ・ノ
ードが使用されるかを示している。図示するように、こ
れらのテーブルには、どのサーバ・コードが実行される
べきかを決定するための4つの一般的なルールも組み込
まれている。第1に、AT-BITS ロケーション・コンテキ
ストが、サーバ・プログラムによって特定されると、こ
のロケーション・コンテキストに対応するサーバ・コー
ドは、オブジェクト・インスタンス・データ(bits)が
配置されている場所でのみ実行されるのが好ましい。第
2に、クライアント・プログラムがリモート・ロケーシ
ョン・コンテキスト(例えば、AT-BITS またはある特定
の名前をもつノード)をリクエストし、かつ、サーバ・
プログラムがローカル・ロケーション・コンテキスト
(例えば、AT-CLIENT またはAT-CLIENT-DDL )を特定し
ているだけならば、ローカル・ロケーション・コンテキ
スト仕様は、リモートでの実行に使用されないのが好ま
しい。なぜならば、対応するサーバ・コードをリモート
で実行できないからである(ローカル・コードは、ロー
カルでのみ実行されるのが好ましい)。第3に、クライ
アント・プログラムが、ローカル・ロケーション・コン
テキスト(例えば、AT-CLIENT またはAT-CLIENT-DDL )
をリクエストすると、ローカル・ロケーション・コンテ
キストがサーバ・プログラムによって特定されていたな
らば、ローカル・ロケーション・コンテキストが使用さ
れるのが好ましい。ローカル・ロケーション・コンテキ
ストが特定されない場合には、AT-NAMED-NODE リモート
・ロケーション・コンテキストがサーバ・プログラムに
よって特定されていたならば、このAT-NAMED-NODE リモ
ート・ロケーション・コンテキストが使用されるのが好
ましい。しかし、対応するサーバ・コードは、ローカル
で実行される(AT-BITロケーション・コンテキストは、
第1のルールが満足されないならば、ローカルな実行に
使用されないのが好ましい)。第4に、クライアント・
プログラムがロケーション・コンテキストをリクエスト
せず、かつ、サーバ・プログラムが一つのロケーション
・コンテキストのみを指定しているならば、AT-BITS ロ
ケーション・コンテキストに関する第1のルールに従っ
て、このロケーション・コンテキストが使用されるのが
好ましい。サーバ・プログラムが複数のロケーション・
コンテキストを指定している場合に、図5〜図15に示す
テーブルは、どのロケーション・コンテキストを使用す
べきかを示している。
【0059】ステップ401 において、関数DeterminServ
erは、パーシステント・レジストリにあるロケーション
・コンテキスト仕様、リクエストされたclient-specifi
ed-ctxロケーション・コンテキスト(存在するなら
ば)、および図5〜図15に定められたルール表に基づい
て、サーバ・ノードを選択する。ステップ402 におい
て、この関数は、正当なロケーション・コンテキストが
ルール表を用いて派生されたかどうかを判定し、もしそ
うならば、ステップ403 に進み、そうでなければエラー
を返す。ステップ403 において、関数は、AT-BITS ロケ
ーション・コンテキストに対応するサーバ・ノードが選
択されているかどうかを判定し、もしそうならばステッ
プ404 に進み、そうでなければステップ407 に進む。ス
テップ404 で、関数は、ppath が指定されているかどう
かを判定する。このppath は、リクエストされたオブジ
ェクト・インスタンス・データへのネットワーク・パス
名を示す。もしそうならば、関数はステップ405 に進
み、そうでなければエラーを返す。ステップ405 で、関
数は、ロケーション・サービス(DFS)に、ノード名
またはパス名のいずれかに基づいて、選択されたサーバ
・ノードのネットワーク・アドレスを要求する。この場
合に、関数は、ppath に基づいたネットワーク・アドレ
スを要求する。ステップ406 で、関数は、リターン・パ
ラメータp-serveraddrを、ロケーション・サービスによ
って返されたネットワーク・アドレスにセットする。ス
テップ407 において、関数は、AT-NAMED-NODE ロケーシ
ョン・コンテキストに対応するサーバ・ノードが選ばれ
ているかどうかを判定し、もしそうならばステップ405
に進み、クライアントのリクエストされたノード名を使
用し、そうでなければステップ408 に進む。ステップ40
8 で、関数は、AT-CLIENT またはAT-CLIENT-DDL ロケー
ション・コンテキストに対応するサーバ・ノードが選ば
れているかどうかを判定し、もしそうならばステップ40
9 に進み、そうでなければエラーを返す。ステップ409
で、関数は、リターン・パラメータp-serveraddrをクラ
イアント・ノードのネットワーク・アドレスにセット
し、リターンする。
【0060】図5〜図15は、クライアント・プログラム
によってリクエストされたロケーション・コンテキスト
によりパーシステント・レジストリ内で特定されたロケ
ーション・コンテキスト情報を組み合わせるためのルー
ルを定めた表である。各表は、ある特定のクライアント
・プログラム起動リクエストおよびサーバ・プログラム
によって指定された、ある特定のロケーション・コンテ
キストのセットを与えた場合の、サーバ・コードが実行
されるのが好ましい一般的なノード・ロケーション、お
よびどのサーバ・コードが実行されるべきかを定めてい
る。この一般的なノード・ロケーションは、クライアン
ト・プログラムが実行されているノード、クライアント
・プログラム起動リクエストによって指定されたノー
ド、またはリクエストされたオブジェクトのパーシステ
ント・データが格納されているノードでの実行に対応す
る。各表は、5つの列および複数の行からなる。第1列
は、特定のクライアント・プログラム起動リクエスト、
およびもしあるならばクライアント・プログラムのリク
エストされたロケーション・コンテキストを示す。残り
の列は、どのサーバ・コードを、ロケーション・コンテ
キスト仕様の全ての可能な組み合わせのどのノードで実
行するかを示している。この実施例では、サーバ・プロ
グラムによって指定可能な15個のロケーション・コンテ
キストの可能な組合せがある。各行は、指定されたロケ
ーション・コンテキストの一つの可能な組合せを示して
いる。サーバ・プログラムによって指定できる各ロケー
ション・コンテキスト用の別々の列がある。一行一列に
対応する各セルは、サーバ・プログラムが、対応する列
のロケーション・コンテキスト情報を指定しているかど
うかを示している。これらの表において、第2列は、AT
-CLIENT-DDL ロケーション・コンテキスト(IN-PROC )
に対応する。第3列は、独立して実行可能なコードのAT
-CLIENT ロケーション・コンテキスト(LOCAL-SERVER)
に対応する。第4列は、AT-NAMED-NODE ロケーション・
コンテキスト(Named Node)に対応する。第5列は、AT
-BITS ロケーション・コンテキスト(AT-BITS )に対応
する。パーシステント・レジストリに指定されたロケー
ション・コンテキストの与えられた組合せ(各行)に対
して、セルが定められ、かつ、セルが、対応するロケー
ション・コンテキスト情報がサーバ・コードの発見に使
用されるのが好ましいことを示すならば、そのロケーシ
ョン・コンテキストに対応する一般的なノード・ロケー
ションは、サーバ・ノードとして選択される。与えられ
た組合せに対して、唯一のセルが定められ、かつ、この
セルは、その対応するロケーション・コンテキストが使
用されるのが好ましいことを示す。セルは、それが白色
で示されているならば、定義されていることになる。セ
ルがグレーで示されているならば、そのセルは、定義さ
れていないことになる。セルに示された文字が“OK”
ならば、そのセルは、その対応するロケーション・コン
テキストが好ましく使用されることを示している。対応
するロケーション・コンテキストが使用できることを示
すために、他の文字(例えば、“runs at client”)を
使用することもできる。一方、セルの文字が“FAIL”な
らば、ロケーション・コンテキスト仕様のその特定の組
合せおよびその特定のクライアント・リクエストに対し
て、対応するロケーション・コンテキストを使用しない
ことが好ましいことを示す。
【0061】例えば、図5の表は、クライアント・プロ
グラム起動リクエストがCoGetClassObjectであり、か
つ、クライアント・プログラムが起動リクエストのロケ
ーション・コンテキストをリクエストしないときに、ど
のロケーション・コンテキストを使用すべきか(したが
って、どのサーバ・ノードを使用すべきか)を定めてい
る。パーシステント・レジストリのロケーション・コン
テキスト仕様の全ての可能な組合せに対応する15個のル
ールが、第5行〜第19行、第2列から第5列に示されて
いる。第5行〜第8行は、サーバ・プログラムが一だけ
のロケーション・コンテキストを指定している場合を示
している。第5行で、サーバ・プログラムは、AT-BITS
のロケーション・コンテキストの指定のみを行ってい
る。この場合に、この表を用いてサーバ・ノードを選択
するリクエストは、失敗(FAIL)に終わるであろう。な
ぜならば、最初に説明した一般のルールに従うと、AT-B
ITS 仕様は、好ましくは、オブジェクト・インスタンス
・データが格納されているノードのサーバ・コードを実
行するために使用されるだけであるからである。すなわ
ち、CoGetClassObjectリクエストの場合に、オブジェク
ト・インスタンス・データはないからである。第6行で
は、サーバ・プログラムは、AT-NAMED-NODE 用のロケー
ション・コンテキストの指定のみを行っている。この場
合、クライアント・ノードがサーバ・ノードとして選択
され、AT-NAMED-NODE ロケーション・コンテキストに対
応するサーバ・コード・ロケーション情報は、このクラ
イアント・ノードで実行すべきサーバ・コードを指定す
る。第7行では、サーバ・プログラムは、AT-CLIENT
(実行可能な)ロケーション・コンテキストに対するロ
ケーション・コンテキストの指定のみを行っている。こ
の場合、クライアント・ノードがサーバ・ノードとして
選ばれ、AT-CLIENT ロケーション・コンテキストに対応
するサーバ・コード・ロケーション情報は、クライアン
ト・ノードで実行すべきサーバ・コードを指定する。第
8行では、サーバ・プログラムは、AT-CLIENT-DLL ロケ
ーション・コンテキストに対するロケーション・コンテ
キストの指定のみを行っている。この場合、クライアン
ト・ノードがサーバ・ノードとして選ばれ、AT-CLIENT-
DLL ロケーション・コンテキストに対応するサーバ・コ
ード・ロケーション情報は、クライアント・ノードで実
行すべきサーバ・コードを指定する。同様にして、第9
行〜第19行は、サーバ・プログラムがパーシステント・
レジストリの2つまたはそれ以上のロケーション・コン
テキストを定めている場合を示している。各行には、使
用するのに適切なロケーション・コンテキストとして好
ましく選択される一つのセルがある。第5行を除く、こ
のクライアント・プログラム起動リクエスト(CoGetCla
ssObject)の全ての場合に、クライアント・ノードはサ
ーバ・ノードとして選ばれる。文字が書かれたノードで
は、対応するロケーション・コンテキスト情報は、クラ
イアント・ノードで実行されるサーバ・コードを指定す
るために使用される。
【0062】図5と同様に、図6〜図9は、クライアン
トが、AT-CLIENT-DDL ロケーション・コンテキスト、AT
-CLIENT ロケーション・コンテキスト、指定された(名
前のもつ)ノード・ロケーション・コンテキスト、およ
びAT-BITS ロケーション・コンテキストをそれぞれリク
エストしたときの、CoGetClassObject起動リクエストに
対応するルールを定める表をそれぞれ示している。ま
た、図5と同様に、図10〜図15は、クライアントが、ロ
ケーション・コンテキストをリクエストしなかったと
き、AT-CLIENT-DDL ロケーション・コンテキスト、AT-C
LIENT ロケーション・コンテキスト、名前をもつノード
・ロケーション、ノードがオブジェクト・インスタンス
・パーシステント・データが格納されたノード(AT-BIT
S ノード)でもあるときの名前をもつノード・ロケーシ
ョン・コンテキスト、およびAT-BITSロケーション・コ
ンテキストをそれぞれリクエストしたときに、CoGetPer
sistentInstance またはCoNewPersistentInstance 起動
リクエストに対応するルールをそれぞれ定める表であ
る。
【0063】[既存のオブジェクト・インスタンスへの
アクセス]図16は、既存のオブジェクトのある特定のイ
ンスタンスにアクセスする通信パスのフローチャートで
ある。この通信パスは、クライアント・プログラムが既
存のオブジェクト(を起動およびアクセスするために)
へのバインド(束縛または結合:bind)を試みるときに
出会う典型的なパスである。好まし実施例においては、
クライアント・プログラム601 は、オブジェクト・イン
スタンス・データが格納されたストレージ・オブジェク
トへのパス名またはポインタを、バインド・リクエスト
に指定する。このバインド・リクエストにより、システ
ム提供の関数CoGetPersistentInstance が起動される。
図16に示す通信パスは、異なる関数が起動され、かつ、
オブジェクト・サーバ・コード620 がわずかに異なるタ
スクを実行する点を除いて、基本的には図3の説明で述
べた通信パスと同じである。また、オブジェクト・サー
バ・コード620 は、IClassFactory インタフェース・イ
ンスタンスをマーシャルされた形態で返す代わりに、リ
クエストされたインタフェース・インスタンスをマーシ
ャルされた形態で返す。
【0064】特に、次のステップは、図3と異なる。ス
テップ602 において、クライアント・プログラム601
は、クライアント・サービス制御マネージャ606 の関数
SvcActivateObject の呼び出しをリクエストする。クラ
イアント・サービス制御マネージャ606 によって実行さ
れる関数SvcActivateObject は、StartObjectServer と
類似のステップを実行する。しかし、サーバ・サービス
制御マネージャ613 によって実行されるSvcActivateObj
ect 関数は、StartObjectServer とはわずかに異なるタ
スクを実行する。予備的なステップとして、この関数
は、ステップ614 で、リクエストされたオブジェクト・
インスタンスがサーバ・ノードですでに実行中であるか
どうかを判定する。好ましい実施例において、この関数
は、実行中のオブジェクト表を見ることによりこの判定
を行う。この表は、サーバ・マシン上で現在実行されて
いるオブジェクトの全ての参照を含んでいる。関数が、
そのオブジェクト(オブジェクト・サーバ・コード620
)が実行中であると判定すると、関数は、オブジェク
ト・サーバ・コードをスタートさせるステップをスキッ
プし、ステップ617 に進む。そうでなければ、関数は、
ステップ615 および616 に進み、関数がオブジェクト・
サーバ・コード620 の異なるエントリ・ポイントRemCoA
ctivateObject を呼び出す点を除いて、図3の説明で述
べたのと同じタスクを実行する。
【0065】関数RemCoActivateObject は、そのクラス
のIClassFactory インタフェースの代わりに既存のオブ
ジェクト・インスタンスのリクエストされたインタフェ
ースを返す点を除いて、図3で述べた関数RemCoActivat
eClassObjectと同様のタスクを実行する。ステップ621
で、オブジェクトがすでに実行されている(そのインス
タンス・データを暗示するものがすでにロードされてい
る)ならば、関数はステップ625 に進み、そうでなけれ
ばステップ622 に進む。ステップ622 において、関数
は、リクエストされたクラス識別子に対応するIClassFa
ctory インタフェースを発見する。ステップ623 で、関
数は、このIClassFactory インタフェースを用いて、リ
クエストされたオブジェクトのインスタンスを生成す
る。ステップ624 において、関数は、クライアント・プ
ログラム・リクエストで指定されたパスまたはストレー
ジ・オブジェクトから、オブジェクト・インスタンス・
データをロードする。ステップ625 で、関数は、リクエ
ストされたインタフェースをパケットにマーシャルす
る。ステップ626 において、関数は、このパケットを、
サーバ・サービス制御マネージャ613 に返す。このパケ
ットは、図3に示すようにクライアント・プログラム60
1 に転送される。
【0066】[オブジェクト・インスタンスの生成およ
びアクセス]図17は、オブジェクトのインスタンスの生
成および生成されたオブジェクト・インスタンスのアク
セスのための通信パスのフローチャートである。この通
信パスは、異なるクライアント・プログラムおよびオブ
ジェクト・サーバ・コードの関数が呼び出される点を除
いて、図16に示すものと基本的に同じである。また、サ
ーバ・サービス制御マネージャ713 とオブジェクト・サ
ーバ・コード720 のいずれも、リクエストされたオブジ
ェクトに対応する既存のインスタンスをチェックしな
い。なぜならば、この通信パスは、新しいインスタンス
が各クライアント・プログラム・リクエスト用に生成さ
れると仮定しているからである。一方、図3のように、
SvcActivateObject は、リクエストされたクラス識別子
に対応するIClassFactory の既存インスタンスをチェッ
クし、サーバ・コードを不必要にスタートすることを回
避する。もう一つの小さな相違点はステップ724 であ
る。このステップ724 では、オブジェクトは、データを
ロードする代わりにデータ(もし提供されるならば)で
初期化される。図17のステップ番号は、図16の同様のス
テップ番号に直接対応している。
【0067】[特定のセキュリティ・コンテキストでの
サーバ・コードの呼び出し]クライアント・プログラム
・リクエストが、ある特定のオブジェクトまたはオブジ
ェクト・クラスにアクセスするときに、図3、図16およ
び図17に示すように、サーバ・サービス制御マネージャ
(例えば、図17の713 )またはクライアント・サービス
制御マネージャは、もしローカルな実行が決定されてい
るならば、図3、図16および図17のステップ16でサーバ
・コードを呼び出すときに、パーシステント・レジスト
リのサーバ・プログラムによって指定されたセキュリテ
ィ・コンテキストを使用する必要がある。一実施例にお
いては、サーバ・サービス制御マネージャは、安全なデ
ータベースに格納されたパスワード情報を使用して、パ
ーシステント・レジストリで指定されたユーザIDでサ
ーバ・ノードにログ・オンする。続いて、サーバ・サー
ビス制御マネージャは、そのセキュリティ・コンテキス
トのオブジェクト・サーバ・コードを実行する。セキュ
リティ・コンテキスト情報を記憶し、ある特定のコンテ
キストでオブジェクト・サーバ・コードを実行する多く
の方法があることは、当業者ならば分かるであろう。他
の実施例として、クライアント・プログラムが、そのプ
ロセス環境を複製し(例えば、UNIXスタイルの環境にお
ける「フォーク」(fork)システム・コールを使用し
て)、サーバ・コードを実行することもできる。フォー
クされた(新しい)プロセスは、サーバ・コードを直接
実行することもできるし、適切なユーザIDによりコンピ
ュータ・システムにログ・オンし、サーバ・コードを実
行することもできる。別の実施例として、各ロケーショ
ン・コンテキスト用に個別のセキュリティ・コンテキス
トを設けておくこともできる。
【0068】この発明を実施例により説明したが、この
発明は、実施例に制限されるものではない。この発明の
精神の範囲内での変更は、当業者ならば明らかであろ
う。この発明の範囲は、特許請求の範囲により定められ
る。
【図面の簡単な説明】
【図1】オブジェクトを表現するために使用される典型
的なデータ構造体を示すブロック図である。
【図2】オブジェクト起動アーキテクチャの全体構成を
示すブロック図である。
【図3】クラス・インスタンスをアクセスする通信パス
のフローチャートである。
【図4】サーバ・コードを実行するためのロケーション
を決定する関数DetermineServer のフローチャートであ
る。
【図5】クライアント・プログラムによってリクエスト
されたロケーション・コンテキストを有するパーシステ
ント・レジストリにおいて特定されたロケーション・コ
ンテキスト情報を組み合わせるためのルールを規定する
表である。
【図6】クライアント・プログラムによってリクエスト
されたロケーション・コンテキストを有するパーシステ
ント・レジストリにおいて特定されたロケーション・コ
ンテキスト情報を組み合わせるためのルールを規定する
表である。
【図7】クライアント・プログラムによってリクエスト
されたロケーション・コンテキストを有するパーシステ
ント・レジストリにおいて特定されたロケーション・コ
ンテキスト情報を組み合わせるためのルールを規定する
表である。
【図8】クライアント・プログラムによってリクエスト
されたロケーション・コンテキストを有するパーシステ
ント・レジストリにおいて特定されたロケーション・コ
ンテキスト情報を組み合わせるためのルールを規定する
表である。
【図9】クライアント・プログラムによってリクエスト
されたロケーション・コンテキストを有するパーシステ
ント・レジストリにおいて特定されたロケーション・コ
ンテキスト情報を組み合わせるためのルールを規定する
表である。
【図10】クライアント・プログラムによってリクエス
トされたロケーション・コンテキストを有するパーシス
テント・レジストリにおいて特定されたロケーション・
コンテキスト情報を組み合わせるためのルールを規定す
る表である。
【図11】クライアント・プログラムによってリクエス
トされたロケーション・コンテキストを有するパーシス
テント・レジストリにおいて特定されたロケーション・
コンテキスト情報を組み合わせるためのルールを規定す
る表である。
【図12】クライアント・プログラムによってリクエス
トされたロケーション・コンテキストを有するパーシス
テント・レジストリにおいて特定されたロケーション・
コンテキスト情報を組み合わせるためのルールを規定す
る表である。
【図13】クライアント・プログラムによってリクエス
トされたロケーション・コンテキストを有するパーシス
テント・レジストリにおいて特定されたロケーション・
コンテキスト情報を組み合わせるためのルールを規定す
る表である。
【図14】クライアント・プログラムによってリクエス
トされたロケーション・コンテキストを有するパーシス
テント・レジストリにおいて特定されたロケーション・
コンテキスト情報を組み合わせるためのルールを規定す
る表である。
【図15】クライアント・プログラムによってリクエス
トされたロケーション・コンテキストを有するパーシス
テント・レジストリにおいて特定されたロケーション・
コンテキスト情報を組み合わせるためのルールを規定す
る表である。
【図16】既存オブジェクトの、ある特定のインスタン
スにアクセスする通信パスのフローチャートである。
【図17】オブジェクトのインスタンスを生成し、生成
されたオブジェクト・インスタンスにアクセスするため
の通信パスのフローチャートである。
【符号の説明】
201 クライアント・プログラム 202 クライアント・サービス制御マネージャ 203 、207 登録データベース 204 クライアント・ノード 205 オブジェクト・サーバ・コード 206 サーバ・サービス制御マネージャ 208 サーバ・ノード 209 ロケーション・サービス/ファイル・サービス(D
FS)
───────────────────────────────────────────────────── フロントページの続き (72)発明者 エドワード ユング アメリカ合衆国 ワシントン州 98133 シアトル ノース ワンハンドレッドアン ドセヴンティセヴンス ストリート 1829 (72)発明者 マーク ズビコウスキー アメリカ合衆国 ワシントン州 98072 ウッディンヴィル ノースイースト ワン ハンドレッドアンドセヴンティエイス プ レイス 15817

Claims (27)

    【特許請求の範囲】
  1. 【請求項1】 複数のコンピュータ・システム・ノード
    を有するコンピュータ・システム・ネットワークにおけ
    るコンピュータ・システム・ノード上でサーバ・コード
    の実行を指定するための方法であって、 クライアント・プログラムをクライアント・ノードで実
    行し、 サーバ・コードの実行をリクエストし、 サーバ・コードを実行するためのリクエストに応じて、
    前記サーバ・コードが実行されるサーバ・ノードを決定
    し、および前記決定されたサーバ・ノードで、前記サー
    バ・コードの実行をリクエストする、 ステップを含む方法。
  2. 【請求項2】 前記サーバ・コードが、関連するパーシ
    ステント・サーバ・データを有するものであり、サーバ
    ・ノードを決定する前記ステップが、前記クライアント
    ・ノード、名前をもつノード、および前記パーシステン
    ト・サーバ・データが格納されているノードの一つを選
    択するサブステップを含むものである、 請求項1に記載の方法。
  3. 【請求項3】 前記サーバ・コードの制御の下、前記サ
    ーバ・コードを実行するロケーションであって、ノード
    を示すロケーションを指定するステップをさらに含み、 前記クライアント・ノード、名前をもつノード、および
    パーシステント・サーバ・データが格納されているノー
    ドの一つを選択するサブステップが、前記選択されたノ
    ードとして、前記指定されたロケーションを選択するも
    のである、 請求項2に記載の方法。
  4. 【請求項4】 前記サーバ・コードの実行をリクエスト
    する前記ステップが、名前をもつノード、前記クライア
    ント・ノード、または前記パーシステント・サーバ・デ
    ータが格納されているノードを指定するものである、 請求項2に記載の方法。
  5. 【請求項5】 前記サーバ・コードの制御の下、前記サ
    ーバ・コードを実行するためのロケーションを指定する
    ステップをさらに含み、 前記サーバ・ノードを決定するステップが、前記指定さ
    れたロケーションを選択するものである、 請求項1に記載の方法。
  6. 【請求項6】 前記サーバ・コードの実行をリクエスト
    する前記ステップが、前記サーバ・コードを実行するた
    めのロケーションを指定するものである、 請求項5に記載の方法。
  7. 【請求項7】 前記サーバ・コードを実行するためのロ
    ケーションを指定する前記ステップが、パーシステント
    ・レジストリに前記指定を置くものである、 請求項5に記載の方法。
  8. 【請求項8】 前記指定するステップが、前記サーバ・
    コードの実行をリクエストするステップの前に行われる
    ものである、 請求項5に記載の方法。
  9. 【請求項9】 前記サーバ・コードの実行をリクエスト
    する前記ステップが、前記サーバ・コードを実行するた
    めのロケーションを指定するものである、 請求項1に記載の方法。
  10. 【請求項10】 前記指定されたロケーションが、名前
    をもつノード、前記クライアント・ノード、または前記
    パーシステント・サーバ・データが格納されているノー
    ドである、 請求項9に記載の方法。
  11. 【請求項11】 前記クライアント・ノードが、サーバ
    ・コードを起動するためのクライアント・サービス制御
    マネージャを有し、 前記サーバ・コードの実行をリクエストする前記ステッ
    プが、前記クライアント・プログラムの前記制御の下に
    実行されるものであり、 サーバ・ノードを決定する前記ステップが、前記クライ
    アント・サービス制御マネージャの制御の下に実行され
    るものである、 請求項1に記載の方法。
  12. 【請求項12】 前記サーバ・コードの制御の下、前記
    サーバ・コードを実行するためのロケーションを指定す
    るステップをさらに含み、 サーバ・コードを決定する前記ステップが、前記指定さ
    れたロケーションを選択するものである、 請求項11に記載の方法。
  13. 【請求項13】 前記サーバ・コードを実行するための
    ロケーションを指定する前記ステップが、パーシステン
    ト・レジストリに前記指定を置くものである、 請求項12に記載の方法。
  14. 【請求項14】 前記サーバ・コードの実行をリクエス
    トする前記ステップが、前記サーバ・コードを実行する
    ためのロケーションを指定するものである、 請求項11に記載の方法。
  15. 【請求項15】 前記サーバ・コードが、指定されたセ
    キュリティ・コンテキストを有し、 前記サーバ・コードの実行をリクエストする前記ステッ
    プが、前記指定されたセキュリティ・コンテキストで前
    記サーバ・コードの実行を引き起こすものである、 請求項11に記載の方法。
  16. 【請求項16】 前記サーバ・ノードが、サーバ・コー
    ドを起動し、かつ、前記クライアント・サービス制御マ
    ネージャと通信するためのサーバ・サービス制御マネー
    ジャを有し、 前記決定されたサーバ・ノード上で前記サーバ・コード
    の実行をリクエストする前記ステップが、前記クライア
    ント・サービス制御マネージャの制御の下で実行され、
    かつ、前記サーバ・サービス制御マネージャにリクエス
    トされるものである、 請求項11に記載の方法。
  17. 【請求項17】 前記サーバ・ノードが、サーバ・コー
    ドを起動するためのサーバ・サービス制御マネージャを
    有するものであり、 前記決定されたサーバ・ノード上で前記サーバ・コード
    の実行をリクエストする前記ステップが、前記サーバ・
    サービス制御マネージャにリクエストされるものであ
    る、 請求項1に記載の方法。
  18. 【請求項18】 前記サーバ・コードの制御の下、前記
    サーバ・コードを実行するためのロケーションを指定す
    るステップをさらに含み、 サーバ・ノードを決定する前記ステップが、前記指定さ
    れたロケーションを選択するものである、 請求項17に記載の方法。
  19. 【請求項19】 前記サーバ・コードを実行するための
    ロケーションを指定する前記ステップが、パーシステン
    ト・レジストリに前記指定を置くものである、 請求項18に記載の方法。
  20. 【請求項20】 前記サーバ・コードの実行をリクエス
    トする前記ステップが、前記サーバ・コードを実行する
    ためのロケーションを指定するものである、 請求項17に記載の方法。
  21. 【請求項21】 前記サーバ・コードが、指定されたセ
    キュリティ・コンテキストを有し、 前記サーバ・コードの実行をリクエストするステップ
    が、前記指定されたセキュリティ・コンテキストで前記
    サーバ・コードの実行を引き起こすものである、 請求項17に記載の方法。
  22. 【請求項22】 前記サーバ・コードが、関連したパー
    システント・サーバ・データを有するものであり、 サーバ・ノードを決定する前記ステップが、前記パーシ
    ステント・サーバ・データが記憶されているストレージ
    ・ノードを決定し、かつ、前記ストレージ・ノードを前
    記サーバ・ノードとして選択するものである、 請求項1に記載の方法。
  23. 【請求項23】 前記サーバ・コードが、指定されたセ
    キュリティ・コンテキストを有するものであり、 前記決定されたサーバ・ノードでの前記サーバ・コード
    の実行をリクエストする前記ステップが、前記指定され
    たセキュリティ・コンテキストで前記サーバ・コードの
    実行を引き起こすものである、 請求項1に記載の方法。
  24. 【請求項24】 前記コンピュータ・システムが、パー
    システント・レジストリを有するものであり、 前記パーシステント・レジストリに、前記指定されたセ
    キュリティ・コンテキストを指定するステップをさらに
    含む、 請求項23に記載の方法。
  25. 【請求項25】 前記決定されたサーバ・ノードで、前
    記サーバ・コードの実行をもたらすステップをさらに含
    む、 請求項1に記載の方法。
  26. 【請求項26】 前記サーバ・コードが、指定されたセ
    キュリティ・コンテキストを有するものであり、 前記サーバ・コードの実行をもたらす前記ステップが、
    前記指定されたセキュリティ・コンテキストで前記サー
    バ・コードの実行をもたらすものである、 請求項25に記載の方法。
  27. 【請求項27】 前記コンピュータ・システムが、パー
    システント・レジストリを有するものであり、 前記パーシステント・レジストリで、前記指定されたセ
    キュリティ・コンテキストを指定するステップをさらに
    含む、 請求項26に記載の方法。
JP29358894A 1993-11-29 1994-11-29 コードのリモート実行方法およびシステム Expired - Lifetime JP3868013B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/158,631 US5699518A (en) 1993-11-29 1993-11-29 System for selectively setting a server node, evaluating to determine server node for executing server code, and downloading server code prior to executing if necessary
US08/158631 1993-11-29

Publications (2)

Publication Number Publication Date
JPH07200449A true JPH07200449A (ja) 1995-08-04
JP3868013B2 JP3868013B2 (ja) 2007-01-17

Family

ID=22569008

Family Applications (1)

Application Number Title Priority Date Filing Date
JP29358894A Expired - Lifetime JP3868013B2 (ja) 1993-11-29 1994-11-29 コードのリモート実行方法およびシステム

Country Status (5)

Country Link
US (1) US5699518A (ja)
EP (1) EP0660234B1 (ja)
JP (1) JP3868013B2 (ja)
CA (1) CA2136402C (ja)
DE (1) DE69425318T2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006048647A (ja) * 2004-07-30 2006-02-16 Microsoft Corp リモートファンクションコールによるワークブックモデルへのアクセスを提供する方法、システム、および装置

Families Citing this family (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5781189A (en) * 1995-05-05 1998-07-14 Apple Computer, Inc. Embedding internet browser/buttons within components of a network component system
US5727147A (en) * 1995-12-08 1998-03-10 Sun Microsystems, Inc. System and method for resolving symbolic references to externally located program files
JPH09231156A (ja) * 1996-02-28 1997-09-05 Nec Corp プログラム受信機能付遠隔実行装置
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
US6263442B1 (en) * 1996-05-30 2001-07-17 Sun Microsystems, Inc. System and method for securing a program's execution in a network environment
US6038664A (en) * 1996-06-10 2000-03-14 Cubix Corporation Method for selecting communication access method for local area networks
US5881230A (en) 1996-06-24 1999-03-09 Microsoft Corporation Method and system for remote automation of object oriented applications
US6038593A (en) * 1996-12-30 2000-03-14 Intel Corporation Remote application control for low bandwidth application sharing
US5815149A (en) * 1997-02-19 1998-09-29 Unisys Corp. Method for generating code for modifying existing event routines for controls on a form
US5870562A (en) * 1997-03-24 1999-02-09 Pfn, Inc. Universal domain routing and publication control system
US6026430A (en) * 1997-03-24 2000-02-15 Butman; Ronald A. Dynamic client registry apparatus and method
US5867665A (en) * 1997-03-24 1999-02-02 Pfn, Inc Domain communications server
US6769125B2 (en) * 1997-04-11 2004-07-27 Sun Microsystems, Inc. Methods and apparatus for managing computer processes
US5894552A (en) * 1997-08-15 1999-04-13 The United States Of America As Represented By The Secretary Of The Navy Method and apparatus for manually switching to a secured network
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
US6917939B1 (en) 1998-05-22 2005-07-12 International Business Machines Corporation Method and apparatus for configurable mapping between data stores and data structures and a generalized client data model using heterogeneous, specialized storage
US6826571B1 (en) 1998-05-22 2004-11-30 International Business Machines Corporation Method and apparatus for dynamically customizing and extending functions of a server program to enable and restrict functions of the server
US6912561B1 (en) 1998-05-22 2005-06-28 International Business Machines Corporation Method and apparatus for using classes, encapsulating data with its behaviors, for transferring between databases and client applications and for enabling applications to adapt to specific constraints of the data
US6366916B1 (en) 1998-05-22 2002-04-02 International Business Machines Corporation Configurable and extensible system for deploying asset management functions to client applications
US6311278B1 (en) * 1998-09-09 2001-10-30 Sanctum Ltd. Method and system for extracting application protocol characteristics
JP2002533792A (ja) * 1998-09-10 2002-10-08 サンクタム、リミテッド 信頼された内部ネットワ−クの作動を保護方法およびシステム
US7035895B1 (en) * 1998-12-17 2006-04-25 International Business Machines Corporation Manager object for management of multiple resources on dataless clients in a distributed computing environment
US6704924B1 (en) * 1999-02-03 2004-03-09 William H. Gates, III Method and system for implementing virtual functions of an interface
US7640325B1 (en) 1999-07-09 2009-12-29 Lsi Corporation Methods and apparatus for issuing updates to multiple management entities
US6769022B1 (en) 1999-07-09 2004-07-27 Lsi Logic Corporation Methods and apparatus for managing heterogeneous storage devices
US6480955B1 (en) 1999-07-09 2002-11-12 Lsi Logic Corporation Methods and apparatus for committing configuration changes to managed devices prior to completion of the configuration change
US6480901B1 (en) 1999-07-09 2002-11-12 Lsi Logic Corporation System for monitoring and managing devices on a network from a management station via a proxy server that provides protocol converter
US6584499B1 (en) 1999-07-09 2003-06-24 Lsi Logic Corporation Methods and apparatus for performing mass operations on a plurality of managed devices on a network
ATE390788T1 (de) 1999-10-14 2008-04-15 Bluearc Uk Ltd Vorrichtung und verfahren zur hardware-ausführung oder hardware-beschleunigung von betriebssystemfunktionen
DE19961399C2 (de) * 1999-12-20 2002-08-22 Mueschenborn Hans Joachim Schutz sicherheitskritischer Daten in Netzwerken
NZ519959A (en) * 1999-12-24 2004-08-27 Telstra New Wave Pty Ltd A virtual token carrying rules of use, capabilities and token relational information
US6742035B1 (en) 2000-02-28 2004-05-25 Novell, Inc. Directory-based volume location service for a distributed file system
DE60136616D1 (de) * 2000-03-03 2009-01-02 Ibm System zur bestimmung von schwächen von web-anwendungen
US6986060B1 (en) * 2000-05-23 2006-01-10 Oracle International Corp. Method and apparatus for sharing a security context between different sessions on a database server
US6832239B1 (en) 2000-07-07 2004-12-14 International Business Machines Corporation Systems for managing network resources
GB2377775A (en) * 2001-07-18 2003-01-22 Ibm Distributing programs to processing units in a network using information on the capabilities of the units
JP2003099341A (ja) * 2001-09-20 2003-04-04 Canon Inc ネットワークデバイス管理装置、管理システム及び管理方法、並びにネットワークデバイス
DE10157633A1 (de) * 2001-11-26 2003-08-28 Siemens Ag Medizinische Systemarchitektur mit einer komponentenorientierten Architektur zur Befundung und Dokumentation
US7822980B2 (en) * 2002-03-15 2010-10-26 International Business Machines Corporation Authenticated identity propagation and translation within a multiple computing unit environment
US20030182424A1 (en) * 2002-03-22 2003-09-25 Steve Odendahl Scriptable proxy server
US20030212736A1 (en) * 2002-05-10 2003-11-13 Sreekrishna Kotnur System and method for activating and pausing a component
US8041735B1 (en) 2002-11-01 2011-10-18 Bluearc Uk Limited Distributed file system and method
US7457822B1 (en) 2002-11-01 2008-11-25 Bluearc Uk Limited Apparatus and method for hardware-based file system
GB0226573D0 (en) * 2002-11-14 2002-12-18 Hewlett Packard Co Data delivery
US7552470B2 (en) * 2002-11-21 2009-06-23 Honeywell International Inc. Generic security infrastructure for COM based systems
US8166101B2 (en) 2003-08-21 2012-04-24 Microsoft Corporation Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system
US8238696B2 (en) 2003-08-21 2012-08-07 Microsoft Corporation Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system
US6976029B2 (en) * 2004-02-10 2005-12-13 Microsoft Corporation System and method for providing user defined types in a database system
US7703135B2 (en) * 2004-12-21 2010-04-20 International Business Machines Corporation Accessing protected resources via multi-identity security environments
US8893111B2 (en) 2006-03-31 2014-11-18 The Invention Science Fund I, Llc Event evaluation using extrinsic state information
US9395965B2 (en) * 2009-12-29 2016-07-19 Oracle International Corporation Techniques for automated generation of service artifacts
US8904396B2 (en) * 2010-07-27 2014-12-02 Ca, Inc. System and method of general service management
US8806475B2 (en) 2010-09-13 2014-08-12 Oracle International Corporation Techniques for conditional deployment of application artifacts
US9740854B2 (en) * 2013-10-25 2017-08-22 Red Hat, Inc. System and method for code protection
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US11399063B2 (en) * 2014-06-04 2022-07-26 Pure Storage, Inc. Network authentication for a storage system
US9213485B1 (en) 2014-06-04 2015-12-15 Pure Storage, Inc. Storage system architecture
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US12137140B2 (en) 2014-06-04 2024-11-05 Pure Storage, Inc. Scale out storage platform having active failover
US10981051B2 (en) 2017-12-19 2021-04-20 Activision Publishing, Inc. Synchronized, fully programmable game controllers

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5287537A (en) * 1985-11-15 1994-02-15 Data General Corporation Distributed processing system having plural computers each using identical retaining information to identify another computer for executing a received command
US4887204A (en) * 1987-02-13 1989-12-12 International Business Machines Corporation System and method for accessing remote files in a distributed networking environment
US5390297A (en) * 1987-11-10 1995-02-14 Auto-Trol Technology Corporation System for controlling the number of concurrent copies of a program in a network based on the number of available licenses
US5167035A (en) * 1988-09-08 1992-11-24 Digital Equipment Corporation Transferring messages between nodes in a network
US5341477A (en) * 1989-02-24 1994-08-23 Digital Equipment Corporation Broker for computer network server selection
JP2635163B2 (ja) * 1989-04-17 1997-07-30 株式会社日立製作所 網サービス提供方法
US5430876A (en) * 1989-06-27 1995-07-04 Digital Equipment Corporation Remote procedure callback system and method
AU628753B2 (en) * 1990-08-14 1992-09-17 Digital Equipment Corporation Method and apparatus for implementing server functions in a distributed heterogeneous environment
US5329619A (en) * 1992-10-30 1994-07-12 Software Ag Cooperative processing interface and communication broker for heterogeneous computing environments
US5325527A (en) * 1993-01-19 1994-06-28 Canon Information Systems, Inc. Client/server communication system utilizing a self-generating nodal network

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006048647A (ja) * 2004-07-30 2006-02-16 Microsoft Corp リモートファンクションコールによるワークブックモデルへのアクセスを提供する方法、システム、および装置
US8578399B2 (en) 2004-07-30 2013-11-05 Microsoft Corporation Method, system, and apparatus for providing access to workbook models through remote function cells
US9317495B2 (en) 2004-07-30 2016-04-19 Microsoft Technology Licensing, Llc Method, system, and apparatus for providing access to workbook models through remote function calls

Also Published As

Publication number Publication date
DE69425318T2 (de) 2000-11-30
CA2136402C (en) 2001-01-09
US5699518A (en) 1997-12-16
DE69425318D1 (de) 2000-08-24
CA2136402A1 (en) 1995-05-30
EP0660234A2 (en) 1995-06-28
JP3868013B2 (ja) 2007-01-17
EP0660234A3 (en) 1995-08-16
EP0660234B1 (en) 2000-07-19

Similar Documents

Publication Publication Date Title
JP3868013B2 (ja) コードのリモート実行方法およびシステム
US5802367A (en) Method and system for transparently executing code using a surrogate process
US6023721A (en) Method and system for allowing a single-user application executing in a multi-user environment to create objects having both user-global and system global visibility
US5511197A (en) Method and system for network marshalling of interface pointers for remote procedure calls
US5969967A (en) Methods and apparatus for conspiracy between objects
US5341478A (en) Methods and apparatus for providing dynamic invocation of applications in a distributed heterogeneous environment
US5745683A (en) System and method for allowing disparate naming service providers to dynamically join a naming federation
EP0474339B1 (en) Methods and apparatus for providing a client interface to an object-oriented invocation of an application
EP0472279B1 (en) Apparatus for implementing data bases to provide object-oriented invocation of applications
CA2049125C (en) Methods and apparatus for implementing server functions in a distributed heterogeneous environment
US5689664A (en) Interface sharing between objects
JP3949180B2 (ja) 基底システムオブジェクトモデルを備えたシステム管理サービスの統合
US8032623B2 (en) Context-based dynamic policy assignment in a distributed processing environment
US6349342B1 (en) Methods and apparatus for managing computer processes
JPH0926890A (ja) オブジェクトを管理するための方法、装置、および、データ構造
KR19990064189A (ko) 다중 사용자 운영 체제에서 사용자 글로벌 오브젝트 명칭공간을 제공하기 위한 방법
US20020016866A1 (en) Methods and apparatus for managing computer processes
Diehl Implementing Multi-User Worlds with CORBA

Legal Events

Date Code Title Description
A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20040127

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20040130

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040311

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040614

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20040914

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20040921

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041118

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20050725

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051122

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20051128

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20061002

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20061010

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091020

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101020

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111020

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121020

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131020

Year of fee payment: 7

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term