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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
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
テムを提供する。 【構成】 クライアント・プログラムはクライアント・
ノードで実行され、ネットワークと通信する。クライア
ント・プログラムは、自身が通信を望むオブジェクト・
インスタンスまたはオブジェクト・クラス・インスタン
スに対応するサーバ・コードの実行をリクエストする。
このリクエストに応じて、コンピュータ・システムは、
サーバ・コードを実行するロケーションを決定する。こ
の決定は、対応するサーバ・プログラムによって指定さ
れたロケーション・コンテキストとクライアント・プロ
グラムによってリクエストされたロケーション・コンテ
キストとの間で選択したルール・セットを用いて行われ
る。適切なロケーションが決定されると、クライアント
・プログラムは、そのリクエストを適切なロケーション
に転送し、リクエストされたサーバ・コードの実行をリ
クエストする。
Description
において、コードをリモート(遠隔的)に実行するコン
ピュータ方法およびシステムに関する。具体的には、こ
の発明は、ネットワークを事前に構成することなく、ま
た、特定の位置(ロケーション)のクライアントの知識
がなくてもコードをリモートに実行するための方法およ
びシステムに関する。
いては、プログラム・コード(単に「コード」ともい
う)が実行されるロケーションの重要性が増加してい
る。コードが、そのコードによって操作されるデータを
記憶しているノードと同じノードで実行される場合に、
コードはより効率的に実行される。従来のシステムにお
いて、クライアント・プログラムが、ある特定のネット
ワーク・ノード上のサーバ・プログラムを実行したいと
きに、使用できる手法がいくつかある。一つの手法は、
システム・アドミニストレータが望ましいネットワーク
・ノードでサーバ・プログラムの実行を開始するもので
ある。もう一つの手法は、システム・アドミニストレー
タまたはクライアント・プログラムが、ネットワーク・
メッセージを望ましいノードにリモートに送信し、サー
バ・プログラムの実行を開始させるものである。他の手
法は、デーモン・プロセスが、識別されたメッセージ・
アドレスを有する望ましいネットワーク・ノードで開始
される。後に、クライアント・プログラムがこのメッセ
ージ・アドレスにメッセージを直接または間接に送信す
ると、サーバ・プログラムが実際に実行される。このメ
ッセージは、トリガのような役割を果たす。これらの従
来の手法では、ネットワーク上のプログラムまたはユー
ザは、サーバ・プログラムを実行できる場所およびサー
バ・プログラムの実行を開始する方法を予め知ってい
る。
クト指向型のプログラミング手法を用いている。したが
って、周知のオブジェクト指向型プログラミング手法の
手短な概要について述べる。オブジェクト指向型プログ
ラミング言語の2つの特徴は、データのカプセル化およ
びデータ型(データ・タイプ)の継承のサポートであ
る。データのカプセル化は、関数およびデータの結合
(束縛、バインド)と呼ばれる。継承は、あるデータ型
を他のデータ型で宣言できることをいう。
ェクト指向型の手法は、クラスを使用することによりサ
ポートされている。クラスは、ユーザが定義する(ユー
ザ定義の)型(タイプ)である。クラスの宣言では、そ
のクラスのデータ・メンバおよび関数メンバが記述され
る。例えば、次の宣言は、CIRCLEという名前のクラスの
データ・メンバおよび関数メンバを定義している。
で、変数radiusは円の半径を示すものである。これらの
変数は、クラスCIRCLEのデータ・メンバと呼ばれる。関
数drawは、指定された位置に指定された半径の円を描く
ユーザ定義の関数である。関数drawは、クラスCIRCLEの
関数メンバと呼ばれる。クラスのデータ・メンバおよび
関数メンバは、その関数がそのクラスのインスタンスに
処理を施すという点において、ともに結び付けられてい
る。クラスのインスタンスは、クラスのオブジェクトと
も呼ばれる。
ント)は、クラスCIRCLE型のオブジェクトaおよびbを
宣言するものである。
のメモリが割り当てられる。次の文は、オブジェクトa
およびbのデータ・メンバにデータを割り当てるもので
ある。
て定められた円を描くために使用される。
底クラス(base class)の特徴(データ・メンバおよび
関数メンバ)を継承するクラスである。例えば、次の派
生クラスCIRCLE-FILL は、基底クラスCIRCLEの特徴を継
承する。
宣言に導入されたデータ・メンバおよび関数メンバ(す
なわち、データ・メンバpattern および関数メンバfil
l)に加えて、クラスCIRCLEの全てのデータ・メンバお
よび関数メンバを含むことを示している。この例では、
クラスCIRCLE-FILL は、データ・メンバx、y、radius
およびpattern 、ならびに関数メンバdrawおよびfillを
有する。クラスCIRCLE-FILL は、クラスCIRCLEの特徴を
「継承する」(インヘリット:inherit )と呼ばれる。
他のクラスの特徴を継承するクラスが、派生クラス(例
えば、CIRCLE-FILL )である。他のクラスの特徴を継承
しないクラスが、プライマリ(ルート)・クラス(例え
ば、CIRCLE)である。その特徴が他のクラスによって継
承されるクラスが、基底クラスである(例えば、CIRCLE
はCIRCLE-FILL の基底クラスである)。派生クラスは、
複数のクラスの特徴を継承することもできる。すなわ
ち、派生クラスは、複数の基底クラスをもつことができ
る。これは、多重継承と呼ばれる。
かどうかを指定することもできる。関数メンバが仮想的
であることを宣言することは、派生クラスにおいて、同
じ名前と型の関数によってその関数を上書き(オーバラ
イド)できることを意味する。以下の例では、関数draw
が、クラスCIRCLEおよびCIRCLE-FILL において仮想的に
宣言されている。
現または実現したもの)を提供することなく宣言される
と、その関数は純(ピュアな)仮想関数と呼ばれる。純
仮想関数は、純指定子(スペシファイア:specifier )
“=0”で宣言される仮想関数である。クラスが純仮想
関数を指定すると、任意の派生クラスは、その関数メン
バを呼び出す前に、その仮想関数メンバのインプリメン
テーションを指定する必要がある。
言語には、ポインタ型のデータが用意されている。ポイ
ンタは、メモリにおけるオブジェクトのアドレス値を保
持する。ポインタによって、オブジェクトは参照され
る。次の文は、クラスCIRCLE型のオブジェクトへのポイ
ンタである変数c-ptr の宣言を示している。変数c-ptr
は、オブジェクトcのアドレスを保持するようにセット
される。
型のオブジェクトであることを、オブジェクトbがクラ
スCIRCLE-FILL 型のオブジェクトであることをそれぞれ
宣言している。
drawを参照するものである。
れた関数drawを参照するものである。
れる典型的なデータ構造体を示すブロック図である。オ
ブジェクトは、インスタンス・データ(データ・メン
バ)とメンバ関数とから合成(混合)される。こえっら
は、オブジェクトの振る舞いを実現する。オブジェクト
を表現するために使用されるデータ構造体は、インスタ
ンス・データ構造体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++プログラミング言語によって定義されるクラスのイ
ンスタンスとして示される。もちろん、オブジェクトを
他のプログラミング言語を用いて定義することは、この
技術分野の専門家ならば用意に理解できるであろう。
して、データおよびコードの共有が容易になるというこ
とが挙げられる。特に、オブジェクト指向型手法は、混
合(コンパウンド:compound)ドキュメント(コンパウ
ンド・ドキュメント)の作成を容易にする。混合ドキュ
メントは、様々なコンピュータ・プログラムによって生
成されたオブジェクトを含むドキュメントである(典型
的には、オブジェクトおよびクラス型のデータ・メンバ
のみが混合ドキュメントに格納される)。例えば、スプ
レッドシート・プログラムが生成するスプレッドシート
・オブジェクトを含んだワード・プロセッシング・ドキ
ュメントは、混合ドキュメントである。ワード・プロセ
ッシング・プログラムにより、ユーザは、ワード・プロ
セッシング・ドキュメント内にスプレッドシート・オブ
ジェクト(例えば、セル)を組み込むことができる。ス
プレッドシート・オブジェクトの組み込みを可能にする
ために、ワード・プロセッシング・プログラムは、自身
がスプレッドシート・オブジェクトの関数メンバを呼び
出せるように、スプレッドシート・オブジェクトのクラ
ス定義をもってコンパイルされる必要がある。任意のク
ラスのオブジェクトを混合ドキュメントに組み込むこと
を可能にするために、インタフェースが定義される。こ
のインタフェースによって、ワード・プロセッシング・
プログラムは、コンパイル時にクラス定義にアクセスす
る必要なく、オブジェクトにアクセスすることができ
る。抽象クラスは、インプリメンテーションを持たない
少なくとも一つの仮想関数メンバ(純仮想関数メンバ)
を有するクラスである。インタフェースは、データ・メ
ンバを持たず、その仮想関数が全て純仮想関数である抽
象クラスである。したがって、インタフェースは、2つ
のプログラムが通信するためのプロトコルを提供する。
インタフェースは、典型的には、派生のために使用され
る。プログラムは、クラスを派生するインタフェースの
インプリメンテーションを提供するクラスをインプリメ
ント(実現)する。以下では、オブジェクトは、これら
の派生したクラスのインスタンスとして生成される。
の例である。この例では、説明を簡単にするために、ワ
ード・プロセッシング・プログラムは、そのドキュメン
トに、オブジェクトの任意のクラスではなく、スプレッ
ドシート・オブジェクトの組み込みを許容している。ス
プレッドシート・オブジェクトがどのようにインプリメ
ントされているかに関わらず、このインタフェースを提
供する任意のスプレッドシート・オブジェクトの組み込
みが可能となる。さらに、ワード・プロセッシング・プ
ログラムのコンパイルの前後を問わず、任意のスプレッ
ドシート・オブジェクトの組み込みが可能となる。
は、スプレッドシート・オブジェクトをワード・プロセ
ッシング・ドキュメントに組み込むために、このインタ
フェースのインプリメンテーションを提供する必要があ
る。一般に、開発者は、このインタフェースから派生さ
れた、このインタフェースによって定義された各関数の
コードを含むクラス定義を提供するであろう。
スプレッドシート・オブジェクトを組み込むときに、こ
のプログラムは、スプレッドシート・オブジェクト用の
インタフェース(関数メンバ)をインプリメントするク
ラスのコードにアクセスする必要がある。このクラスの
コードにアクセスするために、ユニークなクラス識別子
が各インプリメンテーションに与えられる。例えば、マ
イクロソフト社によって開発されたスプレッドシート・
オブジェクトをインプリメントするコードは、“MSSpre
adsheet ”というクラス識別子をもつ。一方、他の会社
によって開発されたスプレッドシート・オブジェクトを
インプリメントするコードは、“LTSSpreadsheet”とい
うクラス識別子をもつ。クラスをインプリメントするコ
ードに各クラス識別子をマップする、各コンピュータ・
システムにおけるパーシステント・レジストリ(persis
tent registry )が保持されている。一般に、スプレッ
ドシート・プログラムがコンピュータ・システムにイン
ストールされるときに、スプレッドシート・オブジェク
トのそのクラスを利用できるようにパーシステント・レ
ジストリが更新される。スプレッドシートの開発者がイ
ンタフェースによって定義される各関数メンバをインプ
リメントし、パーシステント・レジストリが保持される
限り、ワード・プロセッシング・プログラムは、開発者
のスプレッドシート・オブジェクトのインスタンスをワ
ード・プロセッシング・ドキュメントに組み込むことが
できる。ワード・プロセッシング・プログラムは、だれ
がそのオブジェクトをインプリメントしたか、そのオブ
ジェクトがどのようにインプリメントされたかに関わら
ず、組み込まれたスプレッドシート・オブジェクトの関
数メンバにアクセスする。
トワークにおいて、リモートにコードを実行する方法お
よびシステムを提供することにある。
前に構成することなく、また、クライアント・プログラ
ムまたはユーザが、サーバ・コードまたはパーシステン
ト・オブジェクト・データに関する情報を知ることな
く、コードをリモートに実行する方法およびシステムを
提供することにある。
実行するために、ローカル・コンテキストとリモート・
コンテキストの双方を含む、異なるロケーション・コン
テキストを特定する方法およびシステムを提供すること
にある。
ェクト・インスタンスのパーシステント・データ・ビッ
トが格納されたサーバ・ノード上で、サーバ・コードを
実行する方法およびシステムを提供することにある。
プリケーションがある特定のオブジェクトにアクセスし
た後に、サーバ・コードを実行する場所を決定するため
の方法およびシステムを提供することにある。
ムによって特定されたロケーション・コンテキストとク
ライアント・プログラムによってリクエストされた望ま
しいロケーション・コンテキストとの間の裁定を行うた
めの方法およびシステムを提供することにある。
実行するための望ましいセキュリティ・コンテキストを
特定する方法およびシステムを提供することにある。
クライアント・プログラムと同じセキュリティ・コンテ
キストで実行すべきか、ある特定されたセキュリティ・
コンテキストで実行すべきかを特定するための方法およ
びシステムを提供することにある。
述するこの発明の説明によって、より明確になるであろ
う。また、これらの目的および他の目的は、リモートに
コードを実行する方法およびシステムによって達成され
る。好ましい実施例においては、クライアント・プログ
ラムは、オブジェクト・インスタンスまたはクラス・イ
ンスタンスへのアクセスをリクエストする。続いて、ク
ライアント・サービス制御マネージャは、リクエストさ
れたオブジェクトに対応するサーバ・コードを実行すべ
き場所を決定する。そして、クライアント・サービス制
御マネージャは、このリクエストを別のネットワーク・
ノードに転送するか、またはこのサーバ・コードをロー
カルに実行する。クライアント・サービス制御マネージ
ャは、サーバ・プログラムが提供するロケーション・コ
ンテキスト仕様およびクライアント・プログラム・リク
エストによってリクエストされた任意のロケーション・
コンテキストに基づいて、適切なサーバ・コードをスタ
ートさせる場所を決定する。決定されたロケーションが
リモート(遠隔地)である場合に、サーバ・サービス制
御マネージャは、クライアント・サービス制御マネージ
ャによって転送されたリクエストを受信し、サーバ・コ
ードの実行(まだ実行されていないならば)を開始す
る。続いて、このサーバ・コードは、クライアント・プ
ログラムによってリクエストされたオブジェクト・イン
スタンスまたはクラス・インスタンスを発見または生成
する。続いて、このサーバ・コードは、リクエストされ
たオブジェクトのインタフェースをマーシャルし、マー
シャルされたインタフェースを、サーバ・サービス制御
マーシャルに送り返す。サーバ・サービス制御マネージ
ャは、クライアント・サービス制御マネージャを介し
て、このマーシャルされたオブジェクトをクライアント
・プログラムに転送する。
置)でサーバ・コードをリモートに実行するためのコン
ピュータ・システムにおける方法を提供するものであ
る。サーバ・プログラムは、ある特定のクラス識別子に
対応するオブジェクトを管理するためのサーバ・コード
を提供する(サーバ・コードがオブジェクトのクラスの
振る舞いをインプリメント(実現)する)ものである。
サーバ・コードは、一または複数のインタフェースをイ
ンプリメントする。インプリメンテーション(実現ない
し実現したもの)の部分が複数のクライアントによって
共有されるシステムにおいて、クライアント・プログラ
ムは、そのクライアント・プログラムの振る舞いをイン
プリメントすることを手助けするために、サーバ・プロ
グラムからのサービスをリクエストする。典型的なオブ
ジェクト指向型の環境において、サーバ・プログラム
は、クライアント・プログラムによって呼び出され(起
動され)、クライアント・プログラムがインプリメント
するものの外部にあるオブジェクトを管理する。
テムの場合に、クライアント・プログラムが混合ドキュ
メントをインプリメントし、サーバ・プログラムがその
混合ドキュメント内に格納されている組み込まれた(す
なわち、リンクされた)オブジェクトを管理するサーバ
・コードを提供する。発明の背景の項で述べた例では、
ワード・プロセッシング・プログラムがクライアント・
プログラムであり、このプログラムは、混合ドキュメン
トをサポートする。組み込まれたスプレッドシート・オ
ブジェクトは、スプレッドシート・プログラムによって
サポートされ、操作される。このスプレッドシート・プ
ログラムが、サーバ・プログラムである。
識別子を、複数の形態(動的リンク・ライブラリ(“D
DL”:dynamic Link Library)または独立して実行で
きるコード(例えば、.EXEファイル)を含む)でインプ
リメントするコードを提供する。このコードが、これら
以外の形態を取ることができるのはいうまでもない。こ
の理由から、オブジェクトのクラスをサポートするため
に提供されるコードは、サーバ・プログラムではなく、
サーバ・コードと呼ばれる。
ムおよびネットワーク・サービス(ネットワークの機能
へのアクセスをサポートし、保持するコード)は、サー
バ・コードを実行すべき場所の決定を、クライアント・
プログラムがオブジェクトにアクセスするために実際に
リクエストする時まで、遅らせることができる。アプリ
オリな構成(コンフィグレーション)に関する知識を、
クライアント・プログラム、サーバ・コードまたはサー
バ・コードの配置を担当するネットワーク・サービスに
組み込む必要はない。特に、クライアント・プログラム
がオブジェクトのアクセス・リクエストを出すと(これ
により、ある特定のオブジェクトに関連したサーバ・コ
ードを実行するリクエストを生成する)、その時に、ネ
ットワーク・サービスは、サーバ・コードを実行するた
めのロケーションを決定する。ロケーションを決定する
ために、ネットワーク・サービスは、ロケーション・コ
ンテキストを、システム定義のアルゴリズムに従って組
み合わせる。このロケーション・コンテキストは、クラ
イアント・プログラムがオブジェクトへのアクセス・リ
クエストで要求しているロケーション・コンテキストに
よって、サーバ・プログラムのクラス・コードがパーシ
ステント・レジストリ(継続的に保持する登録簿)内で
特定したものである。ロケーション・コンテキストは、
サーバ・コードが実行されるべきロケーションを総括的
に表したものである。ある特定のシナリオにおいて、ど
のサーバ・コードが実行されるかを決定するために、こ
のロケーション・コンテキストは使用される。サーバ・
プログラムは、サーバ・コードを異なるシナリオで実行
するためのロケーション・コンテキストを特定すること
ができる。異なるシナリオには、ある特定の名前をもっ
たノード、クライアント・プログラムが実行されている
ノード、またはオブジェクト・データのパーシステント
・ストレージが配置されているノードにおけるサーバ・
コードの実行が含まれる。サーバ・プログラムの仕様と
同様に、クライアント・プログラムは、ある特定のシナ
リオでサーバ・コードを実行するように、サーバ・コー
ドにリクエストすることができる。例えば、サーバ・プ
ログラムは、ある特定の名前をもったノードでサーバ・
コードを実行するために、ロケーション・コンテキスト
の特定のみを行う。クライアント・プログラムは、クラ
イアント・プログラムが実行されるノードで、サーバ・
コードを実行するためのロケーション・コンテキストを
リクエストする。続いて、ネットワーク・サービスは、
サーバ・コードを実行するノードおよび実行すべきサー
バ・コードを、特定されたロケーション・コンテキスト
およびリクエストされたロケーション・コンテキストに
基づいて決定する。
サーバ・プログラムは、このプログラムが、ある特定の
セキュリティ・コンテキストで実行されるサーバ・コー
ドを所望することを、パーシステント・レジストリ内で
指定することができる。セキュリティ・コンテキスト
は、コンピュータ・システムによって使用される。セキ
ュリティ・コンテキストにより、あるコードのみが、ア
クセスが認められる前に定められたレベルの許可を要求
されるデータ、コードおよびシステム・リソースにアク
セスできることが確実にされている。実行すべきコード
が、指定された適切な許可をもつセキュリティ・コンテ
キストを有するならば、プロテクトされたデータ、コー
ドおよびリソースへのアクセスが認められる。セキュリ
ティ・コンテキストの仕様は、一般にオペレーティング
・システムに依存する。例えば、セキュリティ・コンテ
キストを、ユーザ・アカウント(ユーザID)およびパ
スワードとして見ることができる。セキュリティ・コン
テキストの仕様をインプリメントする多くの方法があ
る。一実施例においては、サーバ・コードは、パーシス
テント・レジストリ内でユーザIDを、保護データベー
スに対応するパスワードをそれぞれ指定する。ネットワ
ーク・サービスまたはクライアント・プログラムがサー
バ・コードを実行するときに、パーシステント・レジス
トリおよび保護データベースの情報を使用し、ある特定
のセキュリティ・コンテキストでサーバ・コードを実行
する。
法およびシステムは、中央処理装置、メモリおよび入出
力装置を備えたコンピュータ・システム上で実現され
る。このような実施例において、サーバ・プログラム
は、サーバ・コードの実行に関係した情報をパーシステ
ント・レジストリ内で指定する。サーバ・コードを発見
するための少なくとも一つのネットワーク・パスを指定
することに加えて、サーバ・プログラムは、パーシステ
ント・レジストリ内でロケーション・コンテキストを指
定する。特に、サーバ・プログラムは、(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ロケーシ
ョン・コンテキストの代わりに、他の実施例として、サ
ーバ・プログラムが各名前をもつノード用の個別のロケ
ーション・コンテキスト(またはそれらの組み合わせ)
を指定することもできる。例えば、サーバ・プログラム
は、一つのロケーション・コンテキストにおいて、ある
特定のノードに存在することが知られている特定のハー
ドウェアに特に向けられたサーバ・コードのロケーショ
ンを指定することができる。
ログラムと同様に、オブジェクトにアクセスするリクエ
ストにおいて、どのようにオブジェクトにアクセスする
ことが好ましいかを指定する。すなわち、クライアント
・プログラムは、AT-CLIENT-DDL 、AT-CLIENT 、AT-BIT
S またはある特定の名前をもつノードのいずれで、サー
バ・コードを実行することが好ましいかを指定する。サ
ーバ・プログラムと異なり、名前をもつノードのロケー
ション・コンテキストにリクエストするときに、クライ
アント・プログラムは、総称的なAT-NAMED-NODE インデ
ィケータではなく、ノードの特定の名前を指定する。サ
ーバ・コードが実行されるべき場所を決定する機能をも
つネットワーク・サービス・コードは、サーバ・プログ
ラムがパーシステント・レジストリで指定したものと、
クライアント・プログラムがリクエストしているものと
の間で裁定を行う。
グラムは、パーシステント・レジストリにおいて、その
コードに望ましいセキュリティ・コンテキストを指定す
る。サーバ・プログラムは、オペレーティング・システ
ムに依存した方法で、上述したように、一般にユーザI
Dとパスワードからなるセキュリティ・コンテキストを
指定する。サーバ・プログラムは、パーシステント・レ
ジストリにおいて、クライアント・プログラム・ユーザ
IDで実行することが好ましいか、ある特定のユーザI
Dで実行することが好ましいかを指定する。さらに、サ
ーバ・プログラムは、使用することが望ましいユーザI
Dに対するパスワード(セキュリティ・コンテキスト)
を、保護データベースに登録する。ネットワーク・サー
ビス(またはクライアント・プログラム)が、サーバ・
コードの実行を開始すると、サーバ・コードは、パーシ
ステント・レジストリで指定されたセキュリティ・コン
テキストで実行される。サーバ・プログラムが、「クラ
イアントとしての」セキュリティ・コンテキストを指定
しているならば、ネットワーク・サービスは、周知の手
法を用いて、クライアント・プログラムの役割を演じ
る。このような手法の一つは、(任意のプログラムのア
カウント情報をセットする機能をもつ)リモート・プロ
シジャ・コール・サーバに、(そのアカウント情報をク
ライアント・プログラム・アカウント情報にセットす
る)クライアント・プログラムの役を演じるようにリク
エストすることを含み、サーバ・コードを実行させる。
または、ネットワーク・サービスは、クライアント・プ
ログラム・アカウント情報にセットされたそのアカウン
ト情報により、新たなユーザ・プロセスをスタートさ
せ、サーバ・コードの実行を開始する新たなプロセスを
リクエストすることができる。一方、サーバ・プログラ
ムが、ある特定のユーザIDとして実行することが好ま
しいことを指定しているならば、ネットワーク・サービ
スは、保護データベースから対応するパスワードを得、
この情報を用いてサーバ・コードの実行を開始する。望
ましいサーバ・コードと通信していることを保証するク
ライアント・プログラムは、サーバ・プログラムによっ
て指定されたセキュリティ・コンテキストでサーバ・コ
ードを実行するための信頼性のあるプログラムまたはプ
ロセスをリクエストすることができる。このようなメカ
ニズムは、クライアント・プログラムがサーバ・コード
の適正なバージョンと通信していることを保証する。
に使用されるクライアント・ノードおよびサーバ・ノー
ドの全体構成を示すブロック図である。クライアント・
ノード204 は、クライアント・プログラム201 、クライ
アント・サービス制御マネージャ202 および登録データ
ベース203 を含んでいる。サーバ・ノード208 は、サー
バ・サービス制御マネージャ206 、登録データベース20
7 およびサーバ・コード207 を含んでいる。さらに、コ
ンピュータ・システムは、ファイルにアクセスするため
のネットワーク・ファイル・サービス、および特定され
たコードもしくはデータのネットワーク・アドレスまた
は指定されたノードのネットワーク・アドレスを決定す
るためのロケーション・サービスを含んでいる。好まし
い実施例において、これらのサービスは、分散ファイル
・システム(“DFS”)209 によって提供される。こ
れらのサービスを、他の方法(例えば、集中ファイル・
システム・サーバ)によって提供することができるのは
いうまでもない。
いオブジェクトまたは既存オブジェクトのいずれかにア
クセスするために、クライアント・プログラム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 )、続いてオブジェ
クト・サーバ・コードと直接通信することができる。
セス間でオブジェクトへのポインタを渡す(パッシング
する)ためのメカニズムである。これらについては、米
国特許出願「リモート・プロシジャ・コールのためのイ
ンタフェース・ポインタのネットワーク・マーシャリン
グ方法およびシステム」(A METHOD AND SYSTEM FORNET
WORK MARSHALLING OF INTERFACE POINTERS FOR REMOTE
PROCEDURE CALLS)に示されている。この米国特許出願
は、この特許出願の優先権主張の基礎となる米国特許出
願と同時に出願されたものである。基本的に、アプリケ
ーションは、プロセス間に渡って送信されるパケット
に、インタフェースへのポインタをパッケージするため
にマーシャルを使用する。パケットは、サーバ・ノード
および応答通信用のプロセス(コールバック機能)を指
定する情報を含んでいる。ポインタがマーシャルされる
と、スタブ・オブジェクトが、サーバ・プロセス内に生
成される。このスタブ・オブジェクトは、オブジェクト
・サーバ・コードの実際の関数メンバを呼び出す方法を
知っている。クライアント・プロセスが、マーシャルさ
れたインタフェース・ポインタを受信すると、このクラ
イアント・プロセスは、ポインタをマーシャル解除し、
それ自身のアドレス空間内にインタフェース・プロクシ
・オブジェクト(インタフェース代理オブジェクト)を
生成する。このプロクシ・オブジェクトは、そのインタ
フェースの全ての関数メンバの関数エントリ・ポイント
を含んでいる。しかし、各関数のインプリメンテーショ
ンは、その呼び出しをスタブ・オブジェクトに単に転送
するだけである。マーシャル・プロセスは、プロクシお
よびスタブ・オブジェクトを生成し、今後の通信のため
にそれらを接続する。
3は、クラス・インスタンスにアクセスするための通信
パスのフローチャートである。クライアント・プログラ
ムは、クラス・インスタンスを任意の方法で使用するこ
とができる。典型的な例として、クライアント・プログ
ラムは、このクラス・インスタンスを使用して、IClass
Factory インタフェースを使用するそのクラスの別のイ
ンスタンス(オブジェクト)を生成する。IClassFactor
y インタフェースは、そのクラスのオブジェクトを生成
する関数メンバCreateInstanceを提供する。このような
全てのオブジェクトは、同じクラス識別子を有し、した
がって同じクラス(オブジェクト・サーバ)・コードを
共有する。このクラス・コードは、発明の背景の項で述
べたように、オブジェクト・データを操作する関数メン
バのインプリメンテーションを提供する。
ント・プログラム301 、クライアント・サービス制御マ
ネージャ306 (クライアントSCM)、サーバ・サービ
ス制御マネージャ313 (サーバSCM)およびオブジェ
クト・サーバ・コード320 )間における通信を示してい
る。破線は、ノードの境界を示している。クライアント
・プログラム301 およびクライアント・サービス制御マ
ネージャ306 は、クライアント・ノードに存在する。サ
ーバ・サービス制御マネージャ313 およびオブジェクト
・サーバ・コード319 は、サーバ・ノードに存在する。
図2の説明で述べたように、クライアント・プログラム
は、クライアント・サービス制御マネージャ306 からク
ラス・オブジェクトの起動をリクエストする。クライア
ント・サービス制御マネージャ306 は、どのサーバ・サ
ービス制御マネージャと通信すべきかを決定した後に、
適切なサーバ・サービス制御マネージャ313 にこのリク
エストを転送する。続いて、リクエストを転送されたサ
ーバ・サービス制御マネージャ313 は、リクエストされ
たオブジェクト・サーバ・コードの実行を開始する。次
に、オブジェクト・サーバ・コード320 は、リクエスト
されたオブジェクトのIClassFactory インタフェースを
生成し、このインタフェースを、2つのサービス制御マ
ネージャを介してクライアント・プログラム301 へ返
す。
制御マネージャが、遠隔のサーバ・ノードに存在するこ
とを仮定している。一方、クライアント・サービス制御
マネージャ306 が、オブジェクト・サーバ・コード320
をクライアント・プログラム301 と同じノードで実行す
べきと決定した場合には、クライアント・サービス制御
マネージャ306 は、クライアント・プログラムのリクエ
ストを転送する必要はない。この技術分野の専門家に
は、このようなオブジェクト・サーバ・コードのローカ
ルな実行も、リモートの実行と同様に行われることが容
易に分かるであろう。したがって、ここではその詳細な
説明は省略する。
ログラム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は、起動されたクラス・オブジェク
トへのポイントを含むように示されたリターン・パラメ
ータを、このプロクシ・オブジェクトへセットし、リタ
ーンする。
実行するロケーションを決定する関数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
は、サーバ・ノードのネットワーク・アドレスへのポイ
ンタである。
・レジストリ内のロケーション・コンテキスト情報を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に示す
テーブルは、どのロケーション・コンテキストを使用す
べきかを示している。
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をクラ
イアント・ノードのネットワーク・アドレスにセット
し、リターンする。
によってリクエストされたロケーション・コンテキスト
によりパーシステント・レジストリ内で特定されたロケ
ーション・コンテキスト情報を組み合わせるためのルー
ルを定めた表である。各表は、ある特定のクライアント
・プログラム起動リクエストおよびサーバ・プログラム
によって指定された、ある特定のロケーション・コンテ
キストのセットを与えた場合の、サーバ・コードが実行
されるのが好ましい一般的なノード・ロケーション、お
よびどのサーバ・コードが実行されるべきかを定めてい
る。この一般的なノード・ロケーションは、クライアン
ト・プログラムが実行されているノード、クライアント
・プログラム起動リクエストによって指定されたノー
ド、またはリクエストされたオブジェクトのパーシステ
ント・データが格納されているノードでの実行に対応す
る。各表は、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”な
らば、ロケーション・コンテキスト仕様のその特定の組
合せおよびその特定のクライアント・リクエストに対し
て、対応するロケーション・コンテキストを使用しない
ことが好ましいことを示す。
グラム起動リクエストが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)の全ての場合に、クライアント・ノードはサ
ーバ・ノードとして選ばれる。文字が書かれたノードで
は、対応するロケーション・コンテキスト情報は、クラ
イアント・ノードで実行されるサーバ・コードを指定す
るために使用される。
トが、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 起動
リクエストに対応するルールをそれぞれ定める表であ
る。
アクセス]図16は、既存のオブジェクトのある特定のイ
ンスタンスにアクセスする通信パスのフローチャートで
ある。この通信パスは、クライアント・プログラムが既
存のオブジェクト(を起動およびアクセスするために)
へのバインド(束縛または結合:bind)を試みるときに
出会う典型的なパスである。好まし実施例においては、
クライアント・プログラム601 は、オブジェクト・イン
スタンス・データが格納されたストレージ・オブジェク
トへのパス名またはポインタを、バインド・リクエスト
に指定する。このバインド・リクエストにより、システ
ム提供の関数CoGetPersistentInstance が起動される。
図16に示す通信パスは、異なる関数が起動され、かつ、
オブジェクト・サーバ・コード620 がわずかに異なるタ
スクを実行する点を除いて、基本的には図3の説明で述
べた通信パスと同じである。また、オブジェクト・サー
バ・コード620 は、IClassFactory インタフェース・イ
ンスタンスをマーシャルされた形態で返す代わりに、リ
クエストされたインタフェース・インスタンスをマーシ
ャルされた形態で返す。
テップ602 において、クライアント・プログラム601
は、クライアント・サービス制御マネージャ606 の関数
SvcActivateObject の呼び出しをリクエストする。クラ
イアント・サービス制御マネージャ606 によって実行さ
れる関数SvcActivateObject は、StartObjectServer と
類似のステップを実行する。しかし、サーバ・サービス
制御マネージャ613 によって実行されるSvcActivateObj
ect 関数は、StartObjectServer とはわずかに異なるタ
スクを実行する。予備的なステップとして、この関数
は、ステップ614 で、リクエストされたオブジェクト・
インスタンスがサーバ・ノードですでに実行中であるか
どうかを判定する。好ましい実施例において、この関数
は、実行中のオブジェクト表を見ることによりこの判定
を行う。この表は、サーバ・マシン上で現在実行されて
いるオブジェクトの全ての参照を含んでいる。関数が、
そのオブジェクト(オブジェクト・サーバ・コード620
)が実行中であると判定すると、関数は、オブジェク
ト・サーバ・コードをスタートさせるステップをスキッ
プし、ステップ617 に進む。そうでなければ、関数は、
ステップ615 および616 に進み、関数がオブジェクト・
サーバ・コード620 の異なるエントリ・ポイントRemCoA
ctivateObject を呼び出す点を除いて、図3の説明で述
べたのと同じタスクを実行する。
のIClassFactory インタフェースの代わりに既存のオブ
ジェクト・インスタンスのリクエストされたインタフェ
ースを返す点を除いて、図3で述べた関数RemCoActivat
eClassObjectと同様のタスクを実行する。ステップ621
で、オブジェクトがすでに実行されている(そのインス
タンス・データを暗示するものがすでにロードされてい
る)ならば、関数はステップ625 に進み、そうでなけれ
ばステップ622 に進む。ステップ622 において、関数
は、リクエストされたクラス識別子に対応するIClassFa
ctory インタフェースを発見する。ステップ623 で、関
数は、このIClassFactory インタフェースを用いて、リ
クエストされたオブジェクトのインスタンスを生成す
る。ステップ624 において、関数は、クライアント・プ
ログラム・リクエストで指定されたパスまたはストレー
ジ・オブジェクトから、オブジェクト・インスタンス・
データをロードする。ステップ625 で、関数は、リクエ
ストされたインタフェースをパケットにマーシャルす
る。ステップ626 において、関数は、このパケットを、
サーバ・サービス制御マネージャ613 に返す。このパケ
ットは、図3に示すようにクライアント・プログラム60
1 に転送される。
びアクセス]図17は、オブジェクトのインスタンスの生
成および生成されたオブジェクト・インスタンスのアク
セスのための通信パスのフローチャートである。この通
信パスは、異なるクライアント・プログラムおよびオブ
ジェクト・サーバ・コードの関数が呼び出される点を除
いて、図16に示すものと基本的に同じである。また、サ
ーバ・サービス制御マネージャ713 とオブジェクト・サ
ーバ・コード720 のいずれも、リクエストされたオブジ
ェクトに対応する既存のインスタンスをチェックしな
い。なぜならば、この通信パスは、新しいインスタンス
が各クライアント・プログラム・リクエスト用に生成さ
れると仮定しているからである。一方、図3のように、
SvcActivateObject は、リクエストされたクラス識別子
に対応するIClassFactory の既存インスタンスをチェッ
クし、サーバ・コードを不必要にスタートすることを回
避する。もう一つの小さな相違点はステップ724 であ
る。このステップ724 では、オブジェクトは、データを
ロードする代わりにデータ(もし提供されるならば)で
初期化される。図17のステップ番号は、図16の同様のス
テップ番号に直接対応している。
サーバ・コードの呼び出し]クライアント・プログラム
・リクエストが、ある特定のオブジェクトまたはオブジ
ェクト・クラスにアクセスするときに、図3、図16およ
び図17に示すように、サーバ・サービス制御マネージャ
(例えば、図17の713 )またはクライアント・サービス
制御マネージャは、もしローカルな実行が決定されてい
るならば、図3、図16および図17のステップ16でサーバ
・コードを呼び出すときに、パーシステント・レジスト
リのサーバ・プログラムによって指定されたセキュリテ
ィ・コンテキストを使用する必要がある。一実施例にお
いては、サーバ・サービス制御マネージャは、安全なデ
ータベースに格納されたパスワード情報を使用して、パ
ーシステント・レジストリで指定されたユーザIDでサ
ーバ・ノードにログ・オンする。続いて、サーバ・サー
ビス制御マネージャは、そのセキュリティ・コンテキス
トのオブジェクト・サーバ・コードを実行する。セキュ
リティ・コンテキスト情報を記憶し、ある特定のコンテ
キストでオブジェクト・サーバ・コードを実行する多く
の方法があることは、当業者ならば分かるであろう。他
の実施例として、クライアント・プログラムが、そのプ
ロセス環境を複製し(例えば、UNIXスタイルの環境にお
ける「フォーク」(fork)システム・コールを使用し
て)、サーバ・コードを実行することもできる。フォー
クされた(新しい)プロセスは、サーバ・コードを直接
実行することもできるし、適切なユーザIDによりコンピ
ュータ・システムにログ・オンし、サーバ・コードを実
行することもできる。別の実施例として、各ロケーショ
ン・コンテキスト用に個別のセキュリティ・コンテキス
トを設けておくこともできる。
発明は、実施例に制限されるものではない。この発明の
精神の範囲内での変更は、当業者ならば明らかであろ
う。この発明の範囲は、特許請求の範囲により定められ
る。
的なデータ構造体を示すブロック図である。
示すブロック図である。
のフローチャートである。
を決定する関数DetermineServer のフローチャートであ
る。
されたロケーション・コンテキストを有するパーシステ
ント・レジストリにおいて特定されたロケーション・コ
ンテキスト情報を組み合わせるためのルールを規定する
表である。
されたロケーション・コンテキストを有するパーシステ
ント・レジストリにおいて特定されたロケーション・コ
ンテキスト情報を組み合わせるためのルールを規定する
表である。
されたロケーション・コンテキストを有するパーシステ
ント・レジストリにおいて特定されたロケーション・コ
ンテキスト情報を組み合わせるためのルールを規定する
表である。
されたロケーション・コンテキストを有するパーシステ
ント・レジストリにおいて特定されたロケーション・コ
ンテキスト情報を組み合わせるためのルールを規定する
表である。
されたロケーション・コンテキストを有するパーシステ
ント・レジストリにおいて特定されたロケーション・コ
ンテキスト情報を組み合わせるためのルールを規定する
表である。
トされたロケーション・コンテキストを有するパーシス
テント・レジストリにおいて特定されたロケーション・
コンテキスト情報を組み合わせるためのルールを規定す
る表である。
トされたロケーション・コンテキストを有するパーシス
テント・レジストリにおいて特定されたロケーション・
コンテキスト情報を組み合わせるためのルールを規定す
る表である。
トされたロケーション・コンテキストを有するパーシス
テント・レジストリにおいて特定されたロケーション・
コンテキスト情報を組み合わせるためのルールを規定す
る表である。
トされたロケーション・コンテキストを有するパーシス
テント・レジストリにおいて特定されたロケーション・
コンテキスト情報を組み合わせるためのルールを規定す
る表である。
トされたロケーション・コンテキストを有するパーシス
テント・レジストリにおいて特定されたロケーション・
コンテキスト情報を組み合わせるためのルールを規定す
る表である。
トされたロケーション・コンテキストを有するパーシス
テント・レジストリにおいて特定されたロケーション・
コンテキスト情報を組み合わせるためのルールを規定す
る表である。
スにアクセスする通信パスのフローチャートである。
されたオブジェクト・インスタンスにアクセスするため
の通信パスのフローチャートである。
FS)
Claims (27)
- 【請求項1】 複数のコンピュータ・システム・ノード
を有するコンピュータ・システム・ネットワークにおけ
るコンピュータ・システム・ノード上でサーバ・コード
の実行を指定するための方法であって、 クライアント・プログラムをクライアント・ノードで実
行し、 サーバ・コードの実行をリクエストし、 サーバ・コードを実行するためのリクエストに応じて、
前記サーバ・コードが実行されるサーバ・ノードを決定
し、および前記決定されたサーバ・ノードで、前記サー
バ・コードの実行をリクエストする、 ステップを含む方法。 - 【請求項2】 前記サーバ・コードが、関連するパーシ
ステント・サーバ・データを有するものであり、サーバ
・ノードを決定する前記ステップが、前記クライアント
・ノード、名前をもつノード、および前記パーシステン
ト・サーバ・データが格納されているノードの一つを選
択するサブステップを含むものである、 請求項1に記載の方法。 - 【請求項3】 前記サーバ・コードの制御の下、前記サ
ーバ・コードを実行するロケーションであって、ノード
を示すロケーションを指定するステップをさらに含み、 前記クライアント・ノード、名前をもつノード、および
パーシステント・サーバ・データが格納されているノー
ドの一つを選択するサブステップが、前記選択されたノ
ードとして、前記指定されたロケーションを選択するも
のである、 請求項2に記載の方法。 - 【請求項4】 前記サーバ・コードの実行をリクエスト
する前記ステップが、名前をもつノード、前記クライア
ント・ノード、または前記パーシステント・サーバ・デ
ータが格納されているノードを指定するものである、 請求項2に記載の方法。 - 【請求項5】 前記サーバ・コードの制御の下、前記サ
ーバ・コードを実行するためのロケーションを指定する
ステップをさらに含み、 前記サーバ・ノードを決定するステップが、前記指定さ
れたロケーションを選択するものである、 請求項1に記載の方法。 - 【請求項6】 前記サーバ・コードの実行をリクエスト
する前記ステップが、前記サーバ・コードを実行するた
めのロケーションを指定するものである、 請求項5に記載の方法。 - 【請求項7】 前記サーバ・コードを実行するためのロ
ケーションを指定する前記ステップが、パーシステント
・レジストリに前記指定を置くものである、 請求項5に記載の方法。 - 【請求項8】 前記指定するステップが、前記サーバ・
コードの実行をリクエストするステップの前に行われる
ものである、 請求項5に記載の方法。 - 【請求項9】 前記サーバ・コードの実行をリクエスト
する前記ステップが、前記サーバ・コードを実行するた
めのロケーションを指定するものである、 請求項1に記載の方法。 - 【請求項10】 前記指定されたロケーションが、名前
をもつノード、前記クライアント・ノード、または前記
パーシステント・サーバ・データが格納されているノー
ドである、 請求項9に記載の方法。 - 【請求項11】 前記クライアント・ノードが、サーバ
・コードを起動するためのクライアント・サービス制御
マネージャを有し、 前記サーバ・コードの実行をリクエストする前記ステッ
プが、前記クライアント・プログラムの前記制御の下に
実行されるものであり、 サーバ・ノードを決定する前記ステップが、前記クライ
アント・サービス制御マネージャの制御の下に実行され
るものである、 請求項1に記載の方法。 - 【請求項12】 前記サーバ・コードの制御の下、前記
サーバ・コードを実行するためのロケーションを指定す
るステップをさらに含み、 サーバ・コードを決定する前記ステップが、前記指定さ
れたロケーションを選択するものである、 請求項11に記載の方法。 - 【請求項13】 前記サーバ・コードを実行するための
ロケーションを指定する前記ステップが、パーシステン
ト・レジストリに前記指定を置くものである、 請求項12に記載の方法。 - 【請求項14】 前記サーバ・コードの実行をリクエス
トする前記ステップが、前記サーバ・コードを実行する
ためのロケーションを指定するものである、 請求項11に記載の方法。 - 【請求項15】 前記サーバ・コードが、指定されたセ
キュリティ・コンテキストを有し、 前記サーバ・コードの実行をリクエストする前記ステッ
プが、前記指定されたセキュリティ・コンテキストで前
記サーバ・コードの実行を引き起こすものである、 請求項11に記載の方法。 - 【請求項16】 前記サーバ・ノードが、サーバ・コー
ドを起動し、かつ、前記クライアント・サービス制御マ
ネージャと通信するためのサーバ・サービス制御マネー
ジャを有し、 前記決定されたサーバ・ノード上で前記サーバ・コード
の実行をリクエストする前記ステップが、前記クライア
ント・サービス制御マネージャの制御の下で実行され、
かつ、前記サーバ・サービス制御マネージャにリクエス
トされるものである、 請求項11に記載の方法。 - 【請求項17】 前記サーバ・ノードが、サーバ・コー
ドを起動するためのサーバ・サービス制御マネージャを
有するものであり、 前記決定されたサーバ・ノード上で前記サーバ・コード
の実行をリクエストする前記ステップが、前記サーバ・
サービス制御マネージャにリクエストされるものであ
る、 請求項1に記載の方法。 - 【請求項18】 前記サーバ・コードの制御の下、前記
サーバ・コードを実行するためのロケーションを指定す
るステップをさらに含み、 サーバ・ノードを決定する前記ステップが、前記指定さ
れたロケーションを選択するものである、 請求項17に記載の方法。 - 【請求項19】 前記サーバ・コードを実行するための
ロケーションを指定する前記ステップが、パーシステン
ト・レジストリに前記指定を置くものである、 請求項18に記載の方法。 - 【請求項20】 前記サーバ・コードの実行をリクエス
トする前記ステップが、前記サーバ・コードを実行する
ためのロケーションを指定するものである、 請求項17に記載の方法。 - 【請求項21】 前記サーバ・コードが、指定されたセ
キュリティ・コンテキストを有し、 前記サーバ・コードの実行をリクエストするステップ
が、前記指定されたセキュリティ・コンテキストで前記
サーバ・コードの実行を引き起こすものである、 請求項17に記載の方法。 - 【請求項22】 前記サーバ・コードが、関連したパー
システント・サーバ・データを有するものであり、 サーバ・ノードを決定する前記ステップが、前記パーシ
ステント・サーバ・データが記憶されているストレージ
・ノードを決定し、かつ、前記ストレージ・ノードを前
記サーバ・ノードとして選択するものである、 請求項1に記載の方法。 - 【請求項23】 前記サーバ・コードが、指定されたセ
キュリティ・コンテキストを有するものであり、 前記決定されたサーバ・ノードでの前記サーバ・コード
の実行をリクエストする前記ステップが、前記指定され
たセキュリティ・コンテキストで前記サーバ・コードの
実行を引き起こすものである、 請求項1に記載の方法。 - 【請求項24】 前記コンピュータ・システムが、パー
システント・レジストリを有するものであり、 前記パーシステント・レジストリに、前記指定されたセ
キュリティ・コンテキストを指定するステップをさらに
含む、 請求項23に記載の方法。 - 【請求項25】 前記決定されたサーバ・ノードで、前
記サーバ・コードの実行をもたらすステップをさらに含
む、 請求項1に記載の方法。 - 【請求項26】 前記サーバ・コードが、指定されたセ
キュリティ・コンテキストを有するものであり、 前記サーバ・コードの実行をもたらす前記ステップが、
前記指定されたセキュリティ・コンテキストで前記サー
バ・コードの実行をもたらすものである、 請求項25に記載の方法。 - 【請求項27】 前記コンピュータ・システムが、パー
システント・レジストリを有するものであり、 前記パーシステント・レジストリで、前記指定されたセ
キュリティ・コンテキストを指定するステップをさらに
含む、 請求項26に記載の方法。
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)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2006048647A (ja) * | 2004-07-30 | 2006-02-16 | Microsoft Corp | リモートファンクションコールによるワークブックモデルへのアクセスを提供する方法、システム、および装置 |
Families Citing this family (62)
| 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)
| 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 |
-
1993
- 1993-11-29 US US08/158,631 patent/US5699518A/en not_active Expired - Lifetime
-
1994
- 1994-11-22 CA CA002136402A patent/CA2136402C/en not_active Expired - Lifetime
- 1994-11-24 EP EP94118510A patent/EP0660234B1/en not_active Expired - Lifetime
- 1994-11-24 DE DE69425318T patent/DE69425318T2/de not_active Expired - Lifetime
- 1994-11-29 JP JP29358894A patent/JP3868013B2/ja not_active Expired - Lifetime
Cited By (3)
| 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 |