JPH06348511A - プログラム実行分割装置およびクライアント・サーバシステム - Google Patents

プログラム実行分割装置およびクライアント・サーバシステム

Info

Publication number
JPH06348511A
JPH06348511A JP6130903A JP13090394A JPH06348511A JP H06348511 A JPH06348511 A JP H06348511A JP 6130903 A JP6130903 A JP 6130903A JP 13090394 A JP13090394 A JP 13090394A JP H06348511 A JPH06348511 A JP H06348511A
Authority
JP
Japan
Prior art keywords
service
server
message
client
name
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP6130903A
Other languages
English (en)
Inventor
Chung-Hwa H Rao
− フワ ハーマン ラオ チュング
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.)
AT&T Corp
Original Assignee
American Telephone and Telegraph Co Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by American Telephone and Telegraph Co Inc filed Critical American Telephone and Telegraph Co Inc
Publication of JPH06348511A publication Critical patent/JPH06348511A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services

Landscapes

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

Abstract

(57)【要約】 【目的】 クライアント・サーバシステムのアプリケー
ション開発を容易にし、フォールトトレランスを強化す
る。 【構成】 サーバ131がクライアント107にサービ
スを提供するような型のクライアント・サーバシステム
において、サーバに提供されるシステム名空間とは異な
るサーバ名空間に属するサービスの名前を、サービスコ
ード117に関係づけるためにサーバによって使用され
るサーバ名空間133と、サービスの名前を含むメッセ
ージをサーバ送るためにクライアントによって使用され
るサービス呼出し手段1016と、メッセージ内のサー
ビスの名前に応答してサーバ名空間を使用してサービス
コードを検索し、そのサービスコードを使用してサービ
スをクライアントに提供するために、サーバによって使
用されるサービス発送手段1105とからなる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、一般的に、データ処理
システムに関し、特に、分散コンピューティングシステ
ムにおいて実行されるアプリケーションプログラムを作
成する技術およびそのようなプログラムを実行する技術
に関する。
【0002】
【従来の技術】現代のコンピュータシステムは分散され
ていることが多い。すなわち、システムは、ネットワー
クによって接続された多数のコンピュータからなること
が多い。各コンピュータは独立に動作することが可能で
あるが、多くのタスクはいくつかのコンピュータの協力
を必要とする。例えば、多くのこのようなシステムで
は、1つのコンピュータの上で動作中の第1のプロセス
が、大容量ディスクドライブを制御するプログラムを実
行する。もう1つのコンピュータ上の第2のプロセスが
ディスクドライブ上のファイルのコピーを必要とするプ
ログラムを実行すると、この第2プロセスは、第1プロ
セスがネットワークを通じて第2プロセスにそのコピー
を送ることを要求する。
【0003】分散システムで動作中のプロセスが協力す
る1つの方法は、クライアントおよびサーバとしてであ
る。サーバプロセスは、クライアントプロセスに対する
サービスを実行する。実行されるサービスを得るため、
クライアントプロセスは、そのサービスを要求するメッ
セージをサーバプロセスへ送る。すると、サーバプロセ
スはそのサービスを実行し、その結果のメッセージをク
ライアントプロセスに返す。従って、上記の例では、第
2プロセスはファイルサーバプロセスであり、第1プロ
セスはこのファイルサーバプロセスのクライアントであ
り、サービスはファイルのコピーをすることである。
【0004】クライアントとサーバの間の通信に対する
簡単なモデルに、遠隔手続き呼出しがある。このモデル
では、クライアントは、自分自身で実行する手続きの呼
出しと同じようにサーバ内のサービスを呼び出す。すな
わち、クライアントは、自分自身で実行する手続きを呼
び出す場合、呼出し側の手続きの実行を停止し、呼び出
された手続きを実行し、呼出しからの復帰後、呼出し側
の手続きの実行を継続する。同じようにして、遠隔手続
き呼出しをしたプロセスは、その呼出し側の手続きの実
行を停止する。しかし、サービスは遠隔にあるので、呼
出しはサーバへのメッセージに変わる。次に、サーバは
メッセージに指定されたサービスを実行し、結果のメッ
セージをクライアントに返す。クライアントは、結果の
メッセージを受け取ると、呼出しをした手続きの実行を
再開する。
【0005】協力するプロセスに対するクライアント・
サーバモデルと遠隔手続き呼出しとはいずれもコンピュ
ータ技術において広く受け入れられているが、通常のア
プリケーションプログラマがこのモデルを使用してプロ
グラムを書くのはまだ困難である。この困難にはいくつ
かの原因がある。第1に、通信の複雑さがある。例え
ば、通信システムを通じて送られるメッセージは、クラ
イアントおよびサーバで使用するものとは異なるデータ
の表現を有することが多い。その結果、データは、メッ
セージが送られるたびごとに符号化および復号がなされ
なければならない。
【0006】第2に、遠隔のサービスを識別することの
複雑さがある。クライアントとサーバは異なるプロセス
であり、異なるコンピュータシステム上で動作している
可能性がある。その場合、各プロセスは、ファイルのよ
うなエンティティを表現する名前に対する異なる環境を
有する可能性がある。このような環境をここでは「名前
空間」または「名空間」と呼ぶ。クライアントとサーバ
が異なる名前空間を有する場合、クライアントはサーバ
の名前空間におけるサービスの名前を知らなければなら
ない。
【0007】第3に、結合、すなわち、サービスの名前
をサービスのコードに関係づけることの複雑さがある。
結合は、静的になされることも動的になされることもあ
る。静的結合とは、サーバのオブジェクトコードが一度
生成されると結合を変えることができないことである。
動的結合は、サーバが実行を開始するとき、または、実
行中になされる。実行中の結合は結合のうち最も複雑な
ものであるが、動作中のサーバにサービスを追加するこ
とおよび動作中のサーバからサービスを削除することが
可能であるため、最も有用なものでもある。これによ
り、サーバを停止させることなく、サービスを保守する
ことが可能となる。
【0008】第4に、サービス位置の複雑さがある。高
度のフォールトトレランスを達成するため、または、シ
ステム負荷をバランスさせるため、異なる時点でのクラ
イアントに対するサービスを異なるサーバにさせること
ができると有用であることが多い。しかし、これは、ク
ライアントがサービスを呼び出す方法に変更する必要が
ないようになされなければならない。
【0009】
【発明が解決しようとする課題】通信、名前づけ、結
合、および位置についてのこれらの複雑さは、少なくと
も2つの好ましくない結果を有する。第1に、アプリケ
ーションプログラマは、オペレーティングシステムが提
供するあらかじめ定義されたサービスのセットですます
か、クライアント・サーバシステムをゼロから書くのに
必要な多大な努力を企てるかの選択をしなければならな
い。第2に、アプリケーションプログラマが必要な努力
を企てたとしても、その結果は、プログラムが書かれた
システム上でしか使用できない。必要とされるこれから
開示する技術は、通常の関数を実装するのと同程度にし
か困難ではなく、再使用可能な実装を生成するサービス
の実装方法である。
【0010】
【課題を解決するための手段】本発明は、以下のような
利点を有するクライアント・サーバシステムの実装技術
をコンピュータシステムのユーザに提供する。 ・標準的なプログラミング言語において関数を実装する
のと同程度に容易にサービスを実装することができる。 ・クライアントは、クライアント自身の名前空間でプロ
グラムを指定するのと同様に容易にサーバ内のサービス
を指定することができる。 ・クライアントは、サーバにサービスを追加し、サーバ
からサービスを削除し、サーバの名前空間を操作するこ
とができる。 ・サーバの動作を中断することなくサーバにサービスを
追加することまたはサーバからサービスを削除すること
が可能である。 ・サーバは、自分自身にサービスを提供することも、他
のサーバにサービスを転送することも可能である。
【0011】
【実施例】以下の詳細な説明は、本発明の現時点で好ま
しい実施例が使用されるシステムの概観から始め、続い
てクライアントおよびサーバの概観を行い、その後、サ
ービスを実装する方法、サーバ名空間を実装する方法、
およびサーバ名空間操作を実装する方法についての詳細
を説明し、最後に、好ましい実施例のいくつかの応用例
について説明する。
【0012】[1.システムの概観:図1]図1は好ま
しい実施例の概略図である。分散システム102は、通
信システム105によって接続されたいくつかのコンピ
ュータシステム101(a、b、c、およびd)から構
成される。各コンピュータシステム101は、プロセッ
サおよびファイルシステム103を有する。プロセッサ
上では、1つまたは複数のプロセスを実行することがで
きる。ファイルシステムには、プログラムおよびデータ
を含むファイルがプロセスによって使用されるために格
納される。システム101上で動作しているプロセス
は、ファイルシステム103内のファイルにアクセスし
たい場合、101のシステム名空間におけるファイル名
を使用する。図1には、4個のプロセス、すなわち、ク
ライアントプロセス107およびサーバプロセス131
(a、b、およびc)(以下、単にクライアント107
およびサーバ131ともいう)が示されている。図1に
おいて、クライアントとサーバは別々のシステム101
上にあるが、あるシステム101がクライアント107
およびサーバ131の両方を含むことも可能であり、サ
ーバが多くのクライアントを有することも可能であり、
サーバとそのクライアントが同じシステム上にあること
も異なるシステム上にあることも可能である。さらに、
あるサーバプロセス131が他のサーバプロセス131
のクライアントプロセス107となることも可能であ
る。
【0013】サーバ131(a)は、A、B、およびC
という名前の3つのサービス116をクライアント10
7に提供する。サービスは図1にサービスA116
(1)、サービスB116(2)、およびサービスC1
16(3)として示されている。各サービス116に対
応してサービスコード117がある。サービスA116
(1)に対するコード117(1)はファイルシステム
103(c)にある。サービスB116(2)に対する
コード117(2)はファイルシステム103(b)に
ある。サービスC116(3)に対するコード117
(3)はファイルシステム103(d)にある。さら
に、ファイルシステム103(a)は各サービス117
(1から3)に対するコードのコピーを有する。サービ
スコード117は、呼出し側(クライアント107、ま
たは、クライアント107として動作するサーバ13
1)および被呼出し側(実際にそのサービスを実行する
サーバ131)によって実行されるコードを含む(詳細
は後述)。クライアント107は、ファイルシステム1
03(a)内のサーバリスト118(a)によってサー
バ131(a)を見つけることができる。サーバリスト
118(a)は、各サーバ131ごとに、クライアント
107にアクセス可能なエントリを有する。このエント
リは、サーバ131の名前と、サーバ131があるシス
テム名とを含む。このシステム名は、クライアント10
7が動作中のコンピュータシステム101のシステム名
空間の一部であるため、コンピュータシステム101
は、クライアント107とサーバ131の間の通信を確
立するためにこのエントリ内の情報を使用することがで
きる。サーバ131は他のサーバ131からもアクセス
可能であり、サーバ131のファイルシステムは、その
サーバ131からアクセス可能なサーバ131のリスト
であるサーバリスト118を含む(詳細は後述)。
【0014】サーバ131(a)は、サーバ名空間13
3をクライアント107および他のサーバ131に提供
する。サーバ名空間133は、サーバ131(a)がク
ライアント107または他のサーバ131に提供するす
べてのサービス116の名前を含む。サーバ131
(a)は、サービス116を自分自身に提供することも
可能であり、サービス116に対するクライアント10
7の要求を他のサーバ131に転送し、その後そのサー
バがサービス116を提供するようにすることも可能で
ある。サーバ131(a)がサービスを自分自身に提供
する場合、サーバ名空間133は、サービスの名前と、
システム101(c)内にあるサービスのコード117
のコピーとの間の対応を確立する。もう1つのサーバ、
例えば131(b)がサービス116を提供する場合、
サーバ131(a)のサーバ名空間133はさらに、サ
ービス116の名前と、サーバ131(b)の名空間1
33におけるその名前との間の対応を確立する。図1に
おいて、サービス116(1)は名前Aを有し、サービ
ス116(2)は名前Bを有し、サービス116(3)
は名前Cを有する。好ましい実施例では、サーバ131
(a)はサーバ名空間133内の名前を、名前の階層1
09に編成する。「/」は階層109のルートを表す。
クライアント107は、以下の形式を有するサービスパ
ス名により、サーバ131(a)が提供するサービス1
16を指定することができる。 <コンピュータシステム名>/<サーバ名>/<サービ
ス名>
【0015】従って、サーバリスト118(a)に、サ
ーバ131(a)は名前dcsを有し、condorと
いうシステムにあると示されている場合、クライアント
107は、サービスパス名/condor/dcs/A
によってサービスAを指定することができる。同様に、
他のサーバ131は、サーバ名空間133(図1には図
示せず)を、クライアントと、サービスを利用可能にす
るサーバとに提供する。
【0016】好ましい実施例では、クライアント107
は、サービス116のサービスコード117の被呼出し
側部分を実行することによってサービス116を実行す
る。サービスコード117のこの部分は、サーバ131
(a)内のサービス116を呼び出すServiceC
all関数(ServiceCall <パスポインタ
>,<引数ポインタ>,<結果>)を含む。この関数に
対する引数は、サービスのサービスパス名である文字列
へのポインタ、引数のリストへのポインタ、およびサー
ビス呼出しの結果のバッファである。クライアント10
7はServiceCallを使用して、サーバ131
(a)に、サービス116Bを提供してほしいことを示
す場合、第1変数の指すパス名は/condor/ds
c/Bである。
【0017】クライアント107によるService
Callの実行の結果、メッセージがシステム101
(c)に送られる。このメッセージは、サーバ131
(a)を宛先として指定し、サービス116Bの名前お
よび引数を含む。サーバ131(a)は、このメッセー
ジを受け取ると、サービスパス名を使用してサーバ名空
間133内のサービスを調べる。サービスが、サーバ1
31(a)で実行すべきものである場合、サーバ名空間
133は、サーバ131(a)がそのサービスを実行す
るのに必要とする情報を含む。このサービスが他のサー
バ131で実行すべきものである場合、サーバ名空間1
33は、「リンクパス名」を含む。これは、他のサーバ
131に属するサーバ名空間133内のサービスに対す
るサービスパス名である。
【0018】サーバ131(a)がサービスを提供する
場合、サーバ131(a)は、被呼出し側で実行すべき
コード117の部分を単に実行し、その結果のメッセー
ジをクライアント107に返し、続いてクライアント1
07で実行すべきコード117の部分の実行を完了す
る。他のサーバ131がサービスを提供する場合、サー
バ131(a)は、呼出し側で実行すべきコード117
の部分を実行するが、サーバ131(a)がクライアン
ト107から受け取った引数とともにServiceC
allでサーバ名空間133によって提供されたリンク
パス名を使用する。サービスBの場合、サーバ名空間1
33は、サービス116がシステム101(b)上のサ
ーバ131(b)によって提供されることを示し、Se
rviceCallによって生成されたメッセージはサ
ーバ131(b)に転送され、サーバ131(b)が上
記のようにサービスコード117の被呼出し側部分を実
行する。結果メッセージはサーバ131(a)に返さ
れ、続いてサーバ131(a)はそのメッセージをクラ
イアント107に返す。上記のことから明らかなよう
に、クライアント107におけるServiceCal
lの起動によって生成されたメッセージは何度でも転送
することが可能である。
【0019】[2.サービスコード117:図2]各サ
ービス116はサービスコード117によって定義され
る。上記のように、サービス116を要求することがで
きる各クライアント107は、サービス116のサービ
スコード117のコピーにアクセスすることができる。
同様に、サービス116を提供することができる各サー
バ131もコピーにアクセスすることができる。クライ
アント107およびサーバ131が同じシステム101
にある場合、いずれもサービスコード117の同じコピ
ーを使用することができる。好ましい実施例では、クラ
イアント107が使用するサービスコード117は、サ
ービスコード117によって実装されたサービス116
を呼び出すクライアント107によって実行されるコー
ドに静的にリンクされる。サーバ131が使用するサー
ビスコード117は、静的にリンクされることも動的に
リンクされることも可能である(詳細は後述)。サービ
スコード117の動的リンクにより、サーバ131の動
作を中断せずに、サーバ131にサービス116を加え
ることまたはサーバ131からサービス116を削除す
ることが可能となる。他の実施例では、クライアント1
07によって使用されるサービスコード107も動的に
リンクすることができる。
【0020】図2に、サービスコード117の詳細を示
す。好ましい実施例では、サービスコード117は6つ
の部分を有する。 ・引数コンバータ201は、サービス116に対する引
数を通信システム105による使用に適した形式に符号
化し、通信システム105から受信した引数をクライア
ント107またはサーバ131による使用に適した形式
に復号するコードである。 ・結果コンバータ203は、サービス116の実行の結
果に対して同じことを行うコードである。 ・init205は、サービスコード117がサーバ1
31にインストールされるときに実行されるコードであ
る。 ・関数207は、サービスコード117に実装されてい
るサービス116によって実行される関数のコードであ
る。これはさらに2つの部分からなる。 ・・呼出し側コード210は、サーバ131を呼び出し
ているクライアント107またはサーバ131によって
実行される。 ・・被呼出し側コード213は、実際にサービスを提供
するサーバ131によって実行される。
【0021】現代の分散システムで使用されるネットワ
ークは一般的にデータをバイトの列として表現するた
め、コンバータ201および203が必要である。その
結果、サービス116に対する引数とサービス116か
らの結果とは、サービス116が実行されるシステムで
要求される形式と、ネットワークによって要求される形
式との間で変換しなければならない。好ましい実施例で
は、引数コンバータ201、結果コンバータ203、お
よびinit205のコードは、サービスコード117
が生成されるときに自動的に提供される。サービスコー
ド117を書いている人は、関数207内のコードのみ
を与えればよい。
【0022】呼出し側コードおよび被呼出し側コードは
好ましい実施例ではif文の分岐としてかかれる。if
文で使用される関数IsCaller()209は、シ
ステム102を実装するのに使用される特殊関数であ
る。この関数は、サービスコード117が呼出し側によ
って実行されている場合にはある値を返し、サービスコ
ード117が被呼出し側によって実行されている場合に
は別の値を返す。クライアント107による実行の場
合、この関数は常に呼出し側の値を返す。サーバ131
の場合、この関数は、サーバがサービス要求を転送して
いるのでなければ被呼出し側の値を返し、転送している
場合は呼出し側の値を返す。
【0023】[3.サービスコード117の書き方:図
3]図3に、好ましい実施例でサービスコード117を
書く方法を示す。4つのステップがある。 ・サービスインタフェースを指定する 好ましい実施例は、サービスインタフェースを指定する
ためにサン(Sun)コンピュータシステムで使用され
ている遠隔手続き言語を拡張したものを使用する。この
指定は、入力引数および出力結果のデータ構造をCライ
クな文法で定義する。これは、以下の文法でサービス関
数の宣言も行う。 “service” 型指定子 識別子 “(” 型指
定子 “)”“;” ただし、“service”はキーワードであり、最初
の“型指定子”はサービス関数によって返される値の型
を指定し、“識別子”は関数の名前を指定し、括弧内の
“型指定子”は関数の引数の型を指定する。
【0024】・RPCスタブおよびサービステンプレー
トを生成する サービスコード117は、ServiceGen305
と呼ばれるサービスコンパイラを使用して書かれる。S
erviceGen305は、サービスインタフェース
を入力(例えば、spec.x303)としてとり、3
個の出力を生成する。3個の出力は、XDRルーチン
(例えば、ファイルxdr.c307)、テンプレート
(例えば、ファイルtemplate.c309)、お
よび初期関数(例えば、ファイルinit.c311)
である。XDRルーチンは、好ましい実施例では引数コ
ンバータ201および結果コンバータ203である。テ
ンプレートは、プログラマがサービス関数を実装するた
めに編集することができる。初期関数は、サービスコー
ド117がサーバ131にインストールされるときに使
用されるコードを含む。
【0025】・サービス関数を実装する アプリケーションプログラマは、テンプレート309を
編集することによってサービス関数を実装し、サービス
関数service.c315のコードを生成する。
【0026】・サービスライブラリを作成する サービスコード117は、サービス関数315、xdr
ルーチン307、および初期関数311をコンパイルし
リンクすることによって生成される。サービス関数31
5は関数207となり、XDRルーチン307は引数コ
ンバータ201および結果コンバータ203となり、初
期関数311はinitコード205となる。コンパイ
ラのスイッチによって、サービスコード117をサーバ
またはクライアントのプログラムに組み込むのが、リン
ク時、システム初期化時、および実行時とすることが可
能な形式にサービスコード117のコンパイルを行う。
【0027】強調すべきことであるが、サービスインタ
フェースを指定するステップおよびサービス関数を実装
するステップのみが、アプリケーションプログラマによ
って実際に行われる。XDRルーチン307、テンプレ
ート309、および初期関数はすべてServiceG
en305によって自動的に提供される。その結果、ア
プリケーションプログラマは、サービスコード117を
書くために実装されているサービス関数を理解するだけ
でよい。
【0028】他の実施例では、テンプレート309がな
いことも可能である。この場合、アプリケーションプロ
グラマは、ServiceGen305へのサービス指
定303を含むサービス関数315のコードを提供す
る。続いてServiceGen305はXDRルーチ
ン307および初期ルーチン311を生成し、コンパイ
ラにサービス指定303、XDRルーチン307、およ
び初期ルーチン311を提供する。
【0029】[4.サービスコード117の実装の例]
以下の例で、サービス実装システム301がサービスc
p()を実装するために使用される方法を示す。c
p()はサーバ131内で動作し、サーバ131がアク
セス可能なソースファイルをサーバがアクセス可能なデ
スティネーションファイルにコピーする。このサービス
は2個の引数をとる。それらの引数は、ソースファイル
のパス名およびデスティネーションファイルのパス名で
ある。cp()関数によって返される結果は整数であ
り、実行が成功した場合は値0であり、それ以外の場合
はシステムエラー番号(例えば、UNIXのerrn
o)である。
【0030】cp()のサービスインタフェースは以下
の通りである。 struct InArgument { char from[128]; char to[128]; }; (a). service int cp(InArgument); このインタフェースは、入力引数の宣言(すなわち、s
truct InArgument)、および、サービ
ス関数の宣言(すなわち、行(a))を含む。
【0031】次に、ServiceGenは、このサー
ビスに対するXDRルーチン307、初期関数311、
およびテンプレート309を自動生成する。サービスc
p()に対する初期関数311は次のようになる。 bool_t XdrInArgument(); /* 入力用XDR関数: InArgument */ bool_t XdrInt(); /* 出力用XDR関数: int */ int init(char *pathname); char *pathname; caddr_t cp(); /* サービス関数 */ int init(pathname) { if (creatnode(pathname, SERVICE, cp, XdrInArgument, XdrInt)) return (0); else return (-1); } この関数は、サービス116がサーバ131によってリ
ンクされるとサーバ131によって呼び出される。これ
は関数creatnode()を呼び出す。これは、名
前cpをサーバ名空間133に入れる。名前空間133
内の各名前はノードによって表現され、creatno
de()はそのようなノードを作成する(詳細は後
述)。この関数は5個の引数をとる。それらは、サーバ
名に続くサービスパス名の一部、ノードの型(SERV
ICE、LINK、またはDIRECTORY)、関数
コード207への関数ポインタ、引数コンバータ201
への関数ポインタ、および結果コンバータ203への関
数ポインタである。
【0032】cp()に対するテンプレート309は次
のようになる。 int* cp(argp, objp) struct InArgument *argp; char *objp; { static int res; if (IsCaller()) * { * if (ServiceCall(objp, argp, &res)!=SUCCESS) * return (NULL); * else * return (&res); * } /* ここにサービスを実装する */ return (&res); } 上記のように、サービス関数207は2つの部分を含
む。それらは、呼出し側コード210および被呼出し側
コード213である。各部分はif文の分岐であり、上
記のように、関数IsCaller()によって返され
る値はどの分岐が実行されたかを示す。この関数によっ
て返される値は、サービス関数207が呼出し側または
被呼出し側のいずれによって起動されたかを示し、さら
に、呼出し側コード210または被呼出し側コード21
3のうちのいずれが実行されたかを定める。テンプレー
トにおいて、左端に*で印を付けたコードが呼出し側コ
ード210である。被呼出し側コード213は、コメン
ト(/*ここにサービスを実装する*/)で示された箇
所に実装する。呼出し側コード210は、Servic
eCall関数210を含む。これがサーバ131上の
サービス207を実際に起動する。
【0033】上記のことからわかるように、テンプレー
トは、サービス関数207の実装を他の関数の実装と同
様に簡単にする。完全に実装したサービス関数207は
次のようになる(「+」で始まる行は、テンプレートに
追加された被呼出し側コード213である)。 int* cp(argp, objp) struct InArgument *argp; char *objp; { static int res; + int rfd; + int wfd; + int length; + char buf[1024]; if (IsCaller()) { if (ServiceCall(objp, argp, &res)!=SUCCESS) return (NULL); else return (&res); } + if ((rfd = open(argp->from, O_RDONLY)) < 0 || + (wfd = open(argp->to, O_CREAT | o_WRONLY, 0600)) < 0) + { + res = errno; + return (&res); + } + + while ((length = read(rfd, buf, 1024)) > 0) + write(wfd, buf, length); + + close(rfd); + close(wfd); + res = 0; return (&res); }
【0034】続いて、サービス116のサービスコード
117は、上記のように、サービス関数、XDR関数、
および初期関数をコンパイルしリンクすることによって
作成される。
【0035】[5.クライアント107の実装:図1
0]上記のように、クライアント107およびサーバ1
31はいずれもサービスコード117のコピーを有し、
サービスコード117のサービス関数部分207はクラ
イアント107によって実行される呼出し側コードを有
する。好ましい実施例では、クライアント107は、サ
ービスコード117によって実装されるサービスを使用
するアプリケーションプログラムのオブジェクトコード
を実行する。アプリケーションプログラムのオブジェク
トコードには、サービスコード117、IsCalle
r()関数209のオブジェクトコード、Servic
eCall関数のオブジェクトコード、およびシステム
提供の遠隔手続き呼出しのオブジェクトコードがリンク
される。図10に、サービスコード117の各部とクラ
イアント107の他の要素との間の関係を示す。IsC
aller1005は、IsCaller()関数20
9のオブジェクトコードである。これが返す値は、状態
変数ME1007に保持される。クライアント107に
おいて、ME1007は常に被呼出し側を示す。Ser
viceCall1016はServiceCall関
数211のオブジェクトコードである。Service
Call1016によって使用されるデータはArgs
1003、Results1004、およびサーバリス
ト118を含む。Args1003は、Service
Call1016の起動において指定された実際の引数
である。Results1004は、サービス116の
実行の結果を保持するバッファである。サーバリスト1
18は、クライアント107がアクセス可能な各サーバ
のサーバ名1013と、そのサーバのサーバ位置101
5とを含む。サーバ位置1015は、通信システム10
5内でのサーバのネットワークアドレスである。最後
に、遠隔手続き呼出し1017は、クライアント107
を実行中のオペレーティングシステムによって提供され
る遠隔手続き呼出し1017である。遠隔手続き呼出し
1017は、呼出しメッセージ1019をサーバ131
へ送り、そのサーバから復帰メッセージ1021を受け
取る。IsCaller関数1005、Service
Call関数1016、および遠隔手続き呼出し101
7はあわせてクライアント107の呼出し側スタブ10
23を構成する。サーバ131も呼出し側スタブ102
3を有する(詳細は後述する)。
【0036】クライアント107の動作は以下の通りで
ある。クライアント107によって実行されているプロ
グラムは、サーバインタフェース指定303に指定され
た関数名および引数を使用してサービスを起動する。こ
の起動の結果、サーバ関数207内のコードが実行され
る。クライアント107がサービス関数207を実行し
ているので、IsCallerは、呼出し側がサービス
関数を実行しており、呼出し側部分210内のコードが
実行されていることを示す。このコードは、Servi
ceCall1016の起動211を含む。この起動は
サービスパス名116を指定する。サービスパス名11
6は、上記のように、サーバ131が実行されているシ
ステム101と、サーバ131の名前空間内のサーバ1
31の名前およびサービス116のパス名と、サービス
116に対する引数1003と、サーバによるサービス
の実行の結果のためのバッファ1004とを含む。例え
ば、システム名がcondorであり、サーバ名がds
csであり、dscsのサーバ名空間133におけるパ
ス名が/bin/cpである場合、サービスパス名は/
condor/dscs/bin/cpとなる。
【0037】サービス呼出し1016は、サービス11
6に対する引数をArgs1003に置き、パス名中の
サーバ名を用いてサーバリスト118内でそのサーバの
ネットワークアドレスを見つけ、遠隔手続き呼出し10
17を起動する。この起動は、引数として、ネットワー
クアドレスと、サーバ名空間133におけるサービスの
パス名と、引数1003と、結果のバッファ1004
と、引数コンバータ201と、結果コンバータ203と
を指定する。遠隔手続き呼出し1017は引数コンバー
タ201を使用してサービス116に対する引数を通信
システムに適当な形式に変換し、サーバ131宛にサー
ビスパス名および符号化した引数を含む呼出しメッセー
ジを作成し、最後にその呼出しメッセージ1019をサ
ーバ131へ送る。
【0038】サーバ131は、被呼出し側コード213
の実行を終了すると、その結果を含む復帰メッセージ1
021をRPC1017へ送る。RPC1017は結果
コンバータ203を使用してその結果を復号し、復号し
た結果を結果バッファ1004に入れ、Service
Callに復帰し、続いてサービス関数207の呼出し
側部分210に復帰する。これで呼出し側部分210の
実行は完了する。一般的に、呼出し側部分210の実行
の終了は、サービス関数207を起動した実行に結果バ
ッファ1004の内容を返すことを含む。
【0039】[6.サーバ131の実装:図11]図1
1に、サーバ131の実装のうちサービス116の実行
に直接関係する部分の詳細を示す。サーバ131は、サ
ービス116のサービスコード117の自分用のコピー
を有し、さらに、クライアント107内の呼出し側スタ
ブ1023と同じ要素を有する呼出し側スタブ1023
を含む。呼出し側スタブ1023およびサービス116
の実行に直接関係するサーバ131のその他の要素は全
体で被呼出し側スタブ1103を構成する。被呼出し側
スタブ1103の最も重要な追加要素はdispatc
h1105である。dispatch1105は、クラ
イアント107からの呼出しメッセージに応答して、そ
の呼出しメッセージで指定されたサービス116のサー
ビス関数207を実行するオブジェクトコードである。
【0040】サーバ131の実装についてさらに詳細に
説明する。dispatch1105で受信された呼出
しメッセージ1019は、サービスコード117のサー
バ名空間133内のサービスパス名を指定する。dis
patch1105はサーバ名空間133において関数
FindServiceを起動する。これは、サービス
のサービスパス名1117をとり、そのサービスが提供
される場所を指定する情報1119を返す。次に、di
spatch1105は、復号関数1109を起動す
る。これは、メッセージと、引数コンバータ203への
ポインタをとり、メッセージ内の引数を復号し、それを
Args1115に入れる。その後、dispatch
1105は、情報1119に、サービスがサーバ131
または他のサーバ131’のいずれによって提供される
べきであると指定されているかを判断する。他のサーバ
131’によって提供されるべきであると指定されてい
る場合、この情報は、サーバ131’に属するサーバ名
空間133’内のサービス116のサービスパス名を指
定する、サービスのリンクパス名を含む。サービスがサ
ーバ131によって提供されるべきである場合、dis
patch1105は、被呼出し側を指定するように状
態変数ME1111を設定する。そうでない場合、di
spatch1105は、呼出し側を指定するように状
態変数ME1111を設定する。その後、dispat
ch1105は、Args1115内の引数およびサー
ビスパス名によってサービス関数207を起動する(矢
印1121)。サービス116がサーバ131で提供さ
れるべきである場合、サービスパス名はサーバ131の
サーバ名空間133内のサービス116のパス名であ
る。サービス116がサーバ131’で提供されるべき
である場合、サービスパス名は、サーバ131’のサー
バ名空間133’内のサービス116のパス名である。
【0041】クライアント107のところで説明したよ
うに、サービス関数207の呼出し側部分210または
被呼出し側部分213のいずれが実行されるかは、呼出
し側スタブ1023のIsCaller1005によっ
て返される値に依存し、さらにこれはME1111の値
に依存する。従って、サービス位置1119が他のサー
バ131’上の位置を指定している場合、dispat
ch1105は呼出し側を指示するようにME1111
を設定し、呼出し側部分210がサービス位置1119
および引数1115をServiceCall1016
に対する引数として実行される。ServiceCal
l1016の起動は、クライアント107について説明
したのとほぼ同様に行われるが、ServiceCal
l1016がRPC1017から受信する結果が結果バ
ッファ1113に入れられること、および、呼出し側部
分210からの復帰後に実行を再開する関数がdisp
atch1105である(矢印1123)ことが異な
る。
【0042】情報1119に、サーバ131がサービス
116を提供すべきであると指定されている場合、di
spatch1105は被呼出し側を指示するようにM
E1111を設定し、IsCallerがそう指示し、
サービスの実際の機能を実行するコードを含む被呼出し
側部分213が、Args1115の内容を使用して実
行される。実行の結果はResults1113に置か
れ、dispatch1105に復帰する。呼出し側部
分210または被呼出し側部分213のいずれが実行さ
れるかにかかわらず、dispatch1105は結果
コンバータ205を使用して結果1113を符号化し、
その符号化した結果を復帰メッセージ1021に入れて
遠隔手続き呼出しのソースへ送る。このソースは、クラ
イアント107または他のサーバ131である。
【0043】[7.サービス116の呼出しおよび転
送:図4および図5]図4および図5に、クライアント
107とサーバ131が協力して、クライアント107
によって実行されるユーザプログラムのサービス116
を実行する方法を示す。図4に、クライアント107の
サーバリスト118に指定されたサーバ自体がサービス
の被呼出し側コード213を実行する場合を示す。クラ
イアント107とサーバ131はサービスコード117
のコピーをそれぞれ有する。クライアント107では、
IsCallerは、サービスコード117が呼出し側
によって実行されていることを示す値を常に返す。従っ
て、ユーザプログラム401がサービスコード117内
のサービス関数207を起動すると、サービス関数20
7の呼出し側部分210が実行され、ServiceC
all関数211の起動の結果、呼出し側スタブ102
3がサーバ131への呼出しメッセージ1019を生成
する。
【0044】このメッセージは被呼出し側スタブ110
3によって受信される。被呼出し側スタブ1103は、
サーバ名空間133から、サーバ131がサービス11
6を実行すべきかどうかを判断する。図4の場合、サー
バ131はサービスを実行すべきであり、その結果、被
呼出し側スタブ1103はME変数1111を「被呼出
し側」を示すように設定する。その後、被呼出し側スタ
ブ1103はサービス関数207を起動する。IsCa
llerは今度はサービス関数207が被呼出し側によ
って実行されていると示し、その結果、被呼出し側部分
213が実行される。被呼出し側部分213の実行が終
了すると、被呼出し側スタブ1103は復帰メッセージ
1021を呼出し側スタブ1023に返し、呼出し側ス
タブ1023は、呼出し側部分213の残りの部分を実
行する。上記のように、この残りの部分は一般に復帰メ
ッセージ1021に含まれる結果をユーザプログラム4
01に返す。
【0045】図5の場合、2つのサーバがある。サーバ
131(i)は、クライアント107のサーバリスト1
18にリストされたサーバであり、サーバ131(j)
は、サービス207の被呼出し側部分213が実行され
るときにはサーバとしてサーバ131(i)のサーバ名
空間133にリストされている。クライアント107は
上記のように呼出しメッセージ1019を生成する。し
かし、サーバ131(i)内の被呼出し側スタブ110
3は、サーバ名空間133から、サービス116に対し
ては、サーバ131(i)はサーバ131(j)のエー
ジェント(代理)である、すなわち、サービス116は
サーバ131(j)によって実行されるべきであると判
断する。その結果、被呼出し側スタブ1103はサービ
ス131(i)が有するサービスコード117のコピー
を実行する。IsCallerは「呼出し側」を示し、
実行されるのはサービスコード117の呼出し側部分2
10である。被呼出し側スタブ1103は、呼出し側ス
タブ1023およびサービスリスト118を含み、Se
rviceCall211が呼出し側部分210内で実
行されると、その結果はサーバ131(j)へのサービ
ス116についての呼出しメッセージ1019である。
サーバ131(j)のサーバ名空間133はサーバ13
1(j)がサービス116を実行すべきであることを示
すため、サーバ131(j)が上記のように被呼出し側
部分213を実行する。次に、サーバ131(j)は復
帰メッセージ1021をサーバ131(i)に返し、サ
ーバ131(i)は呼出し側部分210の残りの部分を
実行する。その結果、サーバ131(i)の被呼出し側
スタブ1103は復帰メッセージ1021をクライアン
ト107に送り、クライアント107はその返された結
果を、サービス116を起動したユーザプログラム40
1の実行に提供する。もちろん、サーバ131(j)も
またエージェントであることが可能であり、その場合に
は、被呼出し側部分213の実行はさらに他のサーバ1
31(k)に転送される。代理の連鎖の長さには一般に
制限はない。しかし、好ましい実施例では、クライアン
ト107からの呼出しメッセージは実行を転送すること
ができる回数を制限する値を含み、これによって、サー
ビス116に対する要求がサーバ131のループを回っ
て転送されることを防いでいる。
【0046】[8.サーバ名空間133の実装:図1]
図12に、好ましい実施例において、サーバ131のサ
ーバ名空間133の実装の概観を示す。サーバ名空間1
33は、サービスパス名をサービスの位置情報1119
にマッピングする。位置情報には3つの可能な種類があ
る。サービス116がサーバ131によって提供される
べきである場合、位置情報は、サーバ131が動作して
いるシステム101のメモリ内のサービスコード117
のコピーへのポインタであるか、または、システム10
1に属するファイルシステム103内のサービスコード
117を含むファイルのシステムパス名である。サービ
ス116が他のサーバ131’によって提供されるべき
である場合、位置情報はそのサーバ131’のサーバ名
空間133’内のサービス116のサービスパス名であ
る。その結果、1117、1119とラベルされた矢印
によって示したように、被呼出し側スタブ1103内の
dispatch1105は、サーバ名空間133を使
用してサービスパス名1117をサービス位置情報11
19に還元することができる。
【0047】サーバ名空間133の要素には、階層表現
1212と、名前空間プリミティブ1203と、サービ
スリンカ1205と、名前空間サービス1201とが含
まれる。階層表現1212は、サーバ名空間133を構
成する名前の階層を表現する。名前空間プリミティブ1
203は、階層表現1212に作用する。サービスリン
カ1205は、ディスクドライブ103内のサービスコ
ード117と、階層表現1212で指定される名前との
間のマッピングを実行する。名前空間サービス1201
は、クライアント107がサーバ名空間133を操作す
ることができるようにサーバ131がそのクライアント
107に提供するサービス116のセットである。矢印
1202によって示したように、サービスは、名前空間
プリミティブ1203を使用して、実際の操作を実行す
る。
【0048】[8.1 階層表現1212:図12およ
び図8]階層表現1212についてさらに詳細に説明す
ると、階層表現1212は3種類のノード1206を有
するツリーである。3種類のノードとは、ディレクトリ
ノード1207と、サービスノード1209と、エージ
ェントノード1211である。ディレクトリノード12
07は、サーバ名空間133内のディレクトリを表す。
サービスノード1209は、このサーバ131によって
実行されるサービス116を表す。エージェントノード
1211は、このサーバ131に対する他のサーバ13
1によって実行されるサービス116を表す。図8に、
ノード1206が実装される方法を示す。各ノードは2
つの部分、すなわち、ノード構造体801と、コンテク
スト構造体803とを有する。ノード構造体801は、
そのノード自体を表す。コンテクスト構造体803は、
ノード1206によって表されるディレクトリまたはサ
ービス116のいずれかを表す。図8には、ノード構造
体801の詳細も示されている。これは、name80
4と、attributes833と、parentポ
インタ807と、cont_ptr809とを含む。n
ame804は、ノード1206によって表されるサー
バ名空間133内の名前である。attributes
833は、そのノードの属性を示す。parentポイ
ンタ807は、階層表現1212におけるノード120
6の親を指す。cont_ptr809は、そのノード
のコンテクスト構造体803を指す。
【0049】属性は、フィールド805にそのノード1
206の型を含み、サービスノード1209の場合に
は、マップドビットフィールド835も含む。マップド
ビットフィールド835は、そのサービスノードが、サ
ービスコード117を含むファイルにマッピングされて
いるかどうかを示し、そのノードがマッピングされてい
ない場合は、サービスコード117のファイル属性を示
す。ファイル属性は、フィールド837、839および
841を含む。フィールド837には、サーバ131に
よってアクセスされた最終時刻を含む。フィールド83
9には、サービスコード117を含むファイルが作成さ
れた時刻を含む。フィールド841には、アクセス制御
リストを含む。アクセス制御リストは、そのサービスへ
のアクセスを許可されたユーザのリストである。
【0050】サービスに対するコンテクスト構造体80
3の内容を811に示す。最初の3つのフィールドは、
サーバ131が動作しているシステム101のメモリに
サービスコード117がロードされるときに設定され
る。func_ptr813はそのサービスの関数コー
ド207へのポインタである。in_dec_ptr8
15は、引数コンバータ201へのポインタであり、o
ut_dec_ptr817は、結果コンバータ203
へのポインタである。SL_path819は、ファイ
ルシステム103におけるサービスコード117のシス
テムパス名である。システムパス名は、ファイルシステ
ム103内でサービスコード117を検索するためにサ
ービスリンカ1205によって使用される。SL_ha
ndle821は、サービスリンカ1205がサービス
コード117をオープンするときにファイルシステム1
03によって返される値である。link_info8
23は、ノード1206がエージェント1211を表す
ときに使用される。その場合、link_info82
3は、サービス116を提供すべきであるサーバ13
1’におけるサービス116のサービスパス名を含む。
【0051】ディレクトリに対するコンテクスト構造体
803の内容を825に示す。最初のフィールドmap
_path827は、サーバ名空間におけるディレクト
リ名をファイルシステム103におけるディレクトリ名
にマッピングするために使用される。これが行われる
と、サーバ131は、マッピングされたディレクトリ内
にサービスコード117を有するサービス116をその
サーバ名空間133に自動的に追加する。このフィール
ドは、コンテクスト構造体803が属するサーバ名空間
133内のディレクトリに対応するディレクトリのファ
イルシステム103におけるシステムパス名を含む。コ
ンテクスト構造体825内の残りのフィールドは、di
r_struc825によって表されるディレクトリ内
のサービスまたはディレクトリを表すノード1206へ
のポインタである。各サービスまたはディレクトリに対
してnode_ptr831があり、ポインタのリスト
はnode_ptr_list829を構成する。
【0052】[8.2 名前空間プリミティブ1203
の詳細]サーバ名空間133におけるプリミティブオペ
レーションは次の2つのクラスに分かれる。すなわち、
ノード1206によって表されるエンティティに対する
パス名が与えられたときにそのノードを検索すること
と、階層表現1212においてノード1206を追加・
削除することである。
【0053】ノードを検索するプリミティブはname
iである。nameiはサーバ名空間133におけるパ
ス名を引数としてとり、そのパス名を表すノード120
6へのポインタを返す。この関数は、階層表現1212
のルートから始めて、パス名および階層表現1212を
一度に1要素ずつ下へ進む。nameiは、パス名内の
名前を使い果たした場合、もしくは、表現1212内の
ノードを使い果たした場合、または、サービスノード1
209もしくはエージェントノード1211を発見した
場合、カレントノード1206およびパス名の残りの部
分へのポインタを返す。
【0054】ノードを追加するプリミティブはcrea
tnodeである。その引数は、ノードの型と、ノード
構造体801およびコンテクスト構造体803の関係の
あるフィールドを埋めるのに必要な情報とを含む。この
プリミティブは、ノード構造体801を作成し、フィー
ルド804、833、および807を埋め、適当な型の
コンテクスト構造体803を作成し、ノード型によって
要求されるコンテクスト構造体のフィールドを埋め、ノ
ード構造体801のフィールド809を埋める。ノード
を削除するプリミティブは、階層表現1212からノー
ド構造体801を単にアンリンクし、必要に応じて、削
除したノード1206の親のnode_ptr_lis
t829を更新するだけである。
【0055】[8.3 プリミティブの使用法]プリミ
ティブは、サービス116を実行し、名前空間サービス
1201を実行するために使用される。上記のように、
サービスの実行は、サーバ131において、被呼出し側
スタブ1103の要素であるdispatch1105
によって行われる。dispatchは、名前空間13
3内のサービスのパスを有するメッセージを受信し、関
数FindServiceを使用してサービスを検索す
る。FindServiceはnameiを使用して、
リーフノードに到達するまで階層表現1212を下降す
る。
【0056】次に行われることはノード型に依存する。
リーフノードがサービスノード1206またはエージェ
ントノード1211である場合、FindServic
eは単にそのノードにdispatchを返す。ノード
がディレクトリノードであってマップパス(map_p
ath)827を有する場合、FindService
はパス名の残りの部分をDLServiceと呼ばれる
関数に渡す。DLServiceは、マップパス827
を使用してファイルシステム103内のディレクトリを
検索し、パス名の残りの部分を使用してそのディレクト
リから始めてサービスコード117を検索する。DLS
erviceは、サービスコード117を発見すると、
そのサービスコードのinit関数205を実行し、こ
のinit関数205はcreatnodeを実行して
階層表現1212内にサービス116に対する必要なノ
ードを作成する。その後、DLServiceはそのサ
ービス116に対するサービスノード1209をdis
patchに返す。他のすべての場合には、FindS
erviceは失敗を示す値を返す。
【0057】FindServiceが失敗を示した場
合、dispatchは、サービスが発見されなかった
ことを示すメッセージを呼出し側へ送る。そうでない場
合、dispatchはサービス116の提供を開始す
る。まず、dispatchは、ノード1206のse
rvice_struc811内のin_dec_pt
r815を使用してサービスコード117内の引数コン
バータ201を検索し、サービスの引数を復号する。次
にdispatchが行うことはノード1206の内容
に依存する。ノード1206がエージェントノード12
11である場合、dispatchはME1111を
「呼出し側」を示すように設定し、サービスのハンドル
を、link_info823から呼び出されるように
設定する。ノード1206がサービスノード1209で
ある場合、dispatch1105はME1111を
「被呼出し側」を示すように設定する。いずれの場合に
も、dispatch1105は次にfunc_ptr
813を使用して関数207を起動する。この関数のマ
ップドビット835が設定されている場合、この起動の
前に、サービスコード117のアクセス制御リストのチ
ェックが行われる。そうでない場合、サービス116の
ノード構造体801内のアクセス制御リスト841につ
いてこのチェックが行われる。この起動から復帰する
と、dispatch1105はout_dec_pt
rを使用してサービスコード117内の結果コンバータ
203を検索し、サービスの実行の結果を符号化する。
続いて、符号化した結果は呼出し側に返される。
【0058】名前空間プリミティブは名前空間サービス
1201によっても使用される。図6は、好ましい実施
例におけるそれらのサービスのリストである。null
621を除いて、各サービス602はノード1206を
読み出すか変更するかのいずれかである。好ましい実施
例では、ディレクトリノード1207はmkdirサー
ビス671によって追加される。mkdir671は、
名前空間133における新しいディレクトリのパス名を
引数としてとる。nameiがパス名の既存部分を検索
した後、creatnodeが新しいディレクトリのノ
ード構造体801およびdir_struc825を単
に作成し、必要に応じてこの新しいディレクトリのノー
ド構造体801内のフィールドを設定し、作成したディ
レクトリの親であるノード1206内のnode_pt
r_list829に新しいノード1206へのポイン
タを追加する。rmdirは、削除するノードのパス名
を引数としてとる。削除時に、ディレクトリノード12
07は子を有しないこともある。この削除プリミティブ
は、指定されたノード1207を単にアンリンクし、そ
れに従って、削除したノードの親ノード内のnode_
ptr_list829を更新する。
【0059】mkserviceサービス605は、階
層表現1212にサービスノード1209を追加する。
mkserviceに対する引数は、サーバ名空間13
3における新しいサービスのサービスパス名と、ファイ
ルシステム103においてサービスコード117を含む
ファイルのシステムパス名とである。mkservic
eは、nameiを使用して、追加するサービス116
のサービスノード1209の親であるディレクトリノー
ド1207を検索する。正しいディレクトリノード12
07が検索されると、mkserviceは、サービス
リンカ1205によって提供されるdlopenプリミ
ティブを使用してサービスコード117をオープンし、
サービスリンカ1205によって提供されるもう1つの
プリミティブdlsymを使用して、mkservic
eの引数によって、サービスコード117のinit部
分205を実行する。次に、init部分205はcr
eatnodeを使用して新しいノードを作成し、ノー
ド構造体801内のフィールド804〜809およびs
ervice_struc811を埋める。サービスノ
ード1209はrmserviceサービス607によ
って削除される。これは、上でディレクトリについて説
明したのとほぼ同様にして削除プリミティブを使用す
る。
【0060】symlinkサービス609はサービス
ノード1209をエージェントノード1211に変更す
る。引数は、現在のサーバ131のサーバ名空間133
内のサービス116のサービスパス名と、新しいサーバ
131’のサーバ名空間133内のサービスのサービス
パス名である。symlinkは、nameiととも
に、現在のサーバにおけるサービスのサービスパス名を
使用して、サービスノード1209へのポインタを取得
し、そのサービスノードの型をLINKに変更し、新し
いサーバ131’内のサービスのサービスパス名をse
rvice_struc811のlink_infoフ
ィールド823に入れる。unsymlinkサービス
611は、エージェントノード1211をサービスノー
ドに変更する。このサービスは、その引数として、サー
バ131におけるエージェントノード1211のパス名
をとる。このサービスは、nameiを使用してそのノ
ードを検索し、そのノードの型をSERVICEへとリ
セットする。
【0061】bindサービス613およびmapサー
ビス615は、ノード1206と、サーバ131が動作
するシステム101のシステム名空間の一部との間の関
係を確立する。bind613は、その引数として、サ
ーバ名空間133におけるサービスパス名をとる。bi
nd613は、nameiおよびそのサービスパス名を
使用してそのサービスに対するノード1209を検索す
る。次に、bind613は、サービス116がサービ
スコード117を含むファイルに結合されていることを
示すようにマップドビット835を設定する。マップド
ビット835はsetstatによってリセットするこ
とができる(後述)。
【0062】mapサービス615は、階層表現121
2内のディレクトリノード1207をファイルシステム
103内のディレクトリにマッピングする。mapの引
数は、ディレクトリノード1207のサービスパス名
と、ファイルシステム103においてディレクトリノー
ド1207に結合されるべきディレクトリのシステムパ
ス名である。このサービスはnameiを使用してディ
レクトリノード1207を検索し、ファイルシステム1
03におけるそのディレクトリのシステムパス名をma
p_pathフィールド827に書き込む。
【0063】名前空間サービスstat601およびd
ir603は、サービス116またはディレクトリに関
する情報を返す。stat601はサービス116の属
性を返す。dirはサーバ名空間113内のディレクト
リの内容のリストを返す。いずれのサービスもサービス
パス名を引数としてとる。いずれもnameiおよびそ
のサービスパス名を使用してそのサービスパス名によっ
て指定されるノード1206を検索し、これらのサービ
スが返す情報は指定されたノードから取得される。st
atの場合、この情報は常に、ノード構造体801から
のノード型805およびマップドビットフィールド83
5の設定である。マップドビットフィールド835がマ
ッピングを示していない場合、この情報はさらに、アク
セス時刻フィールド837、作成時刻フィールド83
9、およびアクセス制御リストフィールド841の内容
を含む。マップドビットフィールド835がマッピング
を示している場合、この情報はサービスコード117を
含むファイルから取得される。setstat623
は、クライアント107が、マップドビットフィールド
835と、フィールド837〜841の内容とを設定す
ることを可能にする。引数は、ノードのサービスパス名
と、設定する属性の値である。この関数はnameiを
使用してノード1206を検索し、関連するフィールド
に値を設定する。
【0064】getservice625およびput
service627は、サービスコード117をクラ
イアント107からサーバ131にアップロードするこ
と、および、サーバ131からクライアント107にダ
ウンロードすることを可能にする。アップロードはpu
tservice627によって行われる。putse
rvice627は、その引数としてサービス116の
サービスパス名とサービスコード117のバッファとを
とる。サーバ131は、そのファイルシステム内にサー
ビスコード117に対するファイルを作成し、アップロ
ードされるサービスコード117を含むファイルを指定
するサービス116のサービスノード1206を作成す
ることによって、この関数を実行する。ダウンロードは
getservice625によって行われる。get
service625は2個の引数、すなわち、サービ
ス116のサービスパス名と、サービスコード117の
ためのバッファをとる。サーバ131では、getse
rviceはnameiを使用してサービス116のサ
ービスノード1209を検索し、サービスコード117
をクライアント107に返送する。クライアント107
では、サービスコードはバッファからクライアント10
7のシステム名空間内の位置に移動され、クライアント
107によって実行されているコードに動的にリンクさ
れる。
【0065】[9.サーバ131の応用:図7および図
9]サーバ131は、分散システムの問題点を解決する
ためにいくつかの方法で使用することができる。そのよ
うな問題点の1つはフォールトトレランスである。図9
のシステム901に示すように、サーバ131(a)
は、サーバ131(b〜n)のうちの1つの故障に応答
して、symlink609を使用し、サービスに対す
る要求が動作中のサーバ131に転送されるようにその
サービスのエージェントノード1211を変更すること
ができる。
【0066】サービスの転送要求は、サーバ131(b
〜n)間で負荷をバランスさせるために使用することも
できる。サーバ131(a)は、いくつの要求が各サー
バ131(b〜n)に転送されたかを追跡し、必要に応
じてエージェントノード1211を変更するだけでよ
い。もちろん、このような負荷バランスは、サーバ13
1(b〜n)が動作するシステムの状態や、時刻のよう
な他の情報に応答することも可能である。実施例によっ
ては、link_info823は、どのサーバ131
(b〜n)にサービス要求を転送すべきかを判断するス
ケジューリング関数へのポインタとすることができる。
【0067】また、サービス116がサーバ名空間13
3によってアクセスされるということは、サービスの動
的更新を容易にする。サービス116のサービスコード
117の新しいコピーが利用可能になるときに必要なこ
とは、rmservice605を使用して古いサービ
ス116をサーバ名空間133から削除し、mkser
viceまたはputservice627を使用して
再びサービス116をサーバ名空間133に入れること
だけである。mkserviceは、クライアント10
7とサーバ131とがシステム名空間を共有していると
きに使用され、putserviceは、クライアント
107とサーバ131が異なるシステム名空間に属する
ときに使用される。変更中のサービスノード1209へ
のクライアント107によるアクセスは、多くのロック
機構のうちの1つの使用によって回避することができ
る。
【0068】サーバ131およびサービス116によっ
て広げられた可能性を十分に利用する1つの方法は、分
散システムにスーパサーバを含めることである。図7
に、スーパサーバ703を有する分散システム701を
示す。通常のサーバ131と同様に、スーパサーバ70
3はいくつかのサービスに対するサービスコード117
(a〜n)を含むファイルシステム103(a)を有す
る。もちろん、スーパサーバ703は、それらのサービ
スに対するノード1206を含むサーバ名空間133も
有する。スーパサーバ703とサーバ131の相違は、
スーパサーバ703がサービス116を実行するだけで
なく分配することである。
【0069】このようなスーパサーバ703を使用可能
な1つの方法は、サービス116をクライアント107
に分配することである。サービス116を受け取るため
に、クライアントは単にgetservice625を
使用してそのサービスのサービスコード117のコピー
を取得する。このようなスーパサーバを使用可能なもう
1つの方法は、サービスを他のサーバ131に分配する
ことである。スーパサーバ703は、このように使用さ
れているとき、クライアントによる要求107に応答し
て、サービス116のコード117(j)をサーバ13
1(0〜m)のうちのサーバ131(i)にダウンロー
ドし(矢印709)、サービス116(j)に対する要
求がサーバ131(i)へ転送されるようにスーパサー
バ703内のサーバ名空間133を設定することによっ
て、コード117(a〜n)に含まれるコードを有する
サービス116(j)を実行する。もちろん、ダウンロ
ードはputservice627を使用して行われ
る。
【0070】他の実施例では、スーパサーバ703はサ
ービス116(i)のmkservice605に対す
るクライアント107の要求に応答して、サービス11
6(i)のサービスコード117(i)をサーバ131
(0〜m)のうちのサーバ131(k)にダウンロード
し、サーバ131(k)におけるサービス116(i)
のハンドル707をクライアント107に返す。もちろ
ん、このハンドルは、サーバ131(k)の名前と、サ
ーバ131(k)の名前空間におけるサービス116
(i)のパス名である。次に、クライアント107はハ
ンドル707を使用してサーバ131(k)にサービス
116(i)を実行することを直接要求することができ
る。もちろん、スーパサーバ703によるサーバ131
(k)の選択は、負荷バランスの観点から行うことがで
きる。同様に、サーバ131(k)が故障した場合、ク
ライアントは新しいサーバ131を取得するためにmk
service要求を繰り返すだけでよい。
【0071】クライアント107、サーバ131、およ
びサービス116が特に有効に使用される領域の1つは
電話交換システムである。現代の電話交換システムは、
大規模な分散コンピューティングシステムを含む。交換
システムの要素は相互にクライアントおよびサーバとし
て機能することが多い。例えば、800番(米国におけ
る無料電話サービス番号)を使用する呼が発呼される
と、交換システムは、データベースから、現在その80
0番に対応する実際の電話番号を取得しなければならな
い。800番を受信した交換機はそのデータベースのク
ライアントであり、データベースはその800番のサー
バである。クライアント107、サーバ131、および
サービス116のいくつかの性質が電話交換システムに
おいて特に有用である。まず、サービス116は、サー
バ131の動作を中断することなく、サーバ131の名
前空間に追加すること、または、その名前空間から削除
することができる。また、システムは、サーバ間の負荷
をバランスさせるいくつかの方法を提供する。さらに、
サービス116と、サービスコード117を含むファイ
ルシステムとの間の関係の近接度を変更することができ
る。最後に、サービス116は、サーバ131からサー
バ131へ、または、サーバ131とクライアント10
7の間で、容易に伝達することができる。
【0072】クライアント107、サーバ131、およ
びサービス116が電話システムで使用される方法の一
例を以下に述べる。クライアント107は応答装置のよ
うなプログラマブル装置である。サーバ131は、交換
機と応答装置の間の対話を定義したサービス116を含
む。例えば、サービス116は、応答装置が応答してい
る呼の発呼者の番号を交換機に要求することを可能にす
る。応答装置の所有者は、ある800番に発呼して、与
えられた電話番号でサービスが応答装置に提供されるよ
う指定することができる。電話システムは、呼に応答し
て、サーバ131がサービス116を応答装置にダウン
ロードし、応答装置がそのサービスによって定義された
対話を実行することができる。
【0073】[結論]以上、当業者に理解可能なよう
に、本発明の原理を実現するクライアント・サーバシス
テムを作成し使用する方法を説明した。本発明の実施例
の変形例も可能である。例えば、クライアントとサーバ
の間の通信は遠隔手続き呼出し以外の機構を使用するこ
とができる。同様に、サーバ名空間は階層的ではなく平
坦にすることも可能である。また、サービスコードは引
数コンバータおよび結果コンバータまたは初期化コード
を含まないことも可能である。さらに、サービスがクラ
イアントに動的にリンクされるような応用、または、サ
ーバに静的にリンクされるような応用も可能である。
【0074】
【発明の効果】以上述べたごとく、本発明によれば、以
下のような利点を有するクライアント・サーバシステム
が実現される。 ・標準的なプログラミング言語において関数を実装する
のと同程度に容易にサービスを実装することができる。 ・クライアントは、クライアント自身の名前空間でプロ
グラムを指定するのと同様に容易にサーバ内のサービス
を指定することができる。 ・クライアントは、サーバにサービスを追加し、サーバ
からサービスを削除し、サーバの名前空間を操作するこ
とができる。 ・サーバの動作を中断することなくサーバにサービスを
追加することまたはサーバからサービスを削除すること
が可能である。 ・サーバは、自分自身にサービスを提供することも、他
のサーバにサービスを転送することも可能である。
【図面の簡単な説明】
【図1】本発明の技術を使用したクライアントおよびサ
ーバのシステムの図である。
【図2】サービスのコードの図である。
【図3】サービスのコードを生成する方法の図である。
【図4】サービスを呼び出す方法の図である。
【図5】サービスを転送する方法の図である。
【図6】サーバが提供するあらかじめ定義されたサービ
スの図である。
【図7】スーパサーバの図である。
【図8】サーバ名空間を定義するために使用されるデー
タ構造の図である。
【図9】サーバがフォールトトレランスを実現するため
に使用可能となる方法の図である。
【図10】クライアントの詳細図である。
【図11】サーバの第1の詳細図である。
【図12】サーバの第2の詳細図である。
【符号の説明】
101 コンピュータシステム 102 分散システム 103 ファイルシステム 105 通信システム 107 クライアントプロセス 116 サービス 117 サービスコード 118 サーバリスト 131 サーバプロセス 133 サーバ名空間 201 引数コンバータ 203 結果コンバータ 207 関数 210 呼出し側コード 213 被呼出し側コード 301 サービス実装システム 401 ユーザプログラム 701 分散システム 703 スーパサーバ 707 ハンドル 801 ノード構造体 803 コンテクスト構造体 835 マップドビットフィールド 1013 サーバ名 1015 サーバ位置 1017 遠隔手続き呼出し 1019 呼出しメッセージ 1021 復帰メッセージ 1023 呼出し側スタブ 1103 被呼出し側スタブ 1117 サービスパス名 1119 サービス位置情報 1201 名前空間サービス 1203 名前空間プリミティブ 1205 サービスリンカ 1206 ノード 1207 ディレクトリノード 1209 サービスノード 1211 エージェントノード 1212 階層表現

Claims (12)

    【特許請求の範囲】
  1. 【請求項1】 プログラム(117)を実行するプロセ
    ス(107)が呼出し側プロセスまたは被呼出し側プロ
    セスのいずれであるかを判断する手段(1005)から
    なり、コンピュータシステムで動作する呼出し側プロセ
    スと被呼出し側プロセスの間でプログラムの実行を分割
    する装置において、前記プログラムが、呼出し側部分
    (210)と、被呼出し側部分(213)と、前記判断
    に従って前記プロセスの実行のために前記呼出し側部分
    または被呼出し側部分のいずれかを選択する選択部分
    (209)とからなることを特徴とするプログラム実行
    分割装置。
  2. 【請求項2】 他のプロセス(131(a))と、 前記プロセス(107)による前記呼出し側部分の実行
    に応答して、前記他のプロセスが前記プログラムを実行
    するよう要求するメッセージ(1019)を送るメッセ
    ージ送信手段と、 前記他のプロセス内にあって、前記メッセージを受信
    し、それに応答して前記判断を行い、前記プログラムの
    前記選択部分の実行を開始して、前記他のプロセスが呼
    出し側プロセスまたは被呼出し側プロセスとして前記プ
    ログラムを実行することができるようにするメッセージ
    受信手段とをさらに有することを特徴とする請求項1の
    装置。
  3. 【請求項3】 前記他のプロセスが、前記プログラムを
    識別する第1の名前を、前記プログラムのコピーの位置
    に関係づける名前空間手段(133)にアクセスするこ
    とが可能であり、 前記プログラムが、前記名前空間手段内のプログラムを
    インストールする、前記他のプロセスによって実行され
    る初期化部分(205)をさらに有することを特徴とす
    る請求項2の装置。
  4. 【請求項4】 前記他のプロセスと同様のメッセージ受
    信手段を有するもう1つのプロセス(131(b))を
    さらに有し、 前記他のプロセスが、前記呼出し側部分に応答して、前
    記網1つのプロセスが前記プログラムを実行するよう要
    求するメッセージ(1019)を前記もう1つのプロセ
    スに送る手段を有し、 前記メッセージ受信手段は、前記被呼出し側部分が前記
    他のプロセスまたは前記もう1つのプロセスのいずれに
    よって実行されるべきかを判断し、この判断は、前記被
    呼出し側部分が前記他のプロセスによって実行されるべ
    き場合には被呼出し側プロセスを示し、前記被呼出し側
    部分が前記もう1つのプロセスによって実行されるべき
    場合には呼出し側プロセスを示すことを特徴とする請求
    項2の装置。
  5. 【請求項5】 前記他のプロセスがアクセス可能であ
    り、前記プログラムを識別する第1の名前を、前記プロ
    グラムのコピーの位置または前記もう1つのプロセスを
    識別する第2の名前のいずれかに関係づける名前空間手
    段(133)をさらに有し、 前記メッセージ受信手段が、前記名前空間手段に応答し
    て、前記被呼出し側部分が前記他のプロセスまたは前記
    もう1つのプロセスのいずれによって実行されるべきで
    あるかを判断することを特徴とする請求項4の装置。
  6. 【請求項6】 複数の処理ノード(101)を含む分散
    コンピューティングシステムとして実現され、 前記プロセスおよび前記他のプロセスは異なるノードで
    実行され、 前記メッセージ送信手段は、前記プロセスが実行されて
    いるノードから前記他のプロセスが実行されているノー
    ドへ前記メッセージを送信することを特徴とする請求項
    2の装置。
  7. 【請求項7】 前記メッセージ送信手段が、前記プログ
    ラムの実行の結果を含む復帰メッセージを前記他のプロ
    セスから受信する復帰メッセージ受信手段(1023)
    を有し、 前記メッセージ受信手段が、前記復帰メッセージを前記
    プロセスに送る復帰メッセージ送信手段(1016)を
    有することを特徴とする請求項2、4、または5の装
    置。
  8. 【請求項8】 前記メッセージ送信手段、前記メッセー
    ジ受信手段、前記復帰メッセージ送信手段、および前記
    復帰メッセージ受信手段が遠隔手続き呼出し手段(10
    17)によって提供されることを特徴とする請求項7の
    装置。
  9. 【請求項9】 前記メッセージおよび前記復帰メッセー
    ジが、前記コンピュータシステムで使用される第2の表
    現のデータとは異なる第1の表現のデータを使用し、 前記メッセージは引数値を含み、 前記復帰メッセージは結果値を返し、 前記プログラムは、引数コンバータ部分(201)と、
    結果コンバータ部分(203)とをさらに有し、 前記メッセージ送信手段および前記メッセージ受信手段
    は、前記引数コンバータ部分を使用して前記第1表現と
    前記第2表現の間で引数値を変換し、 前記復帰メッセージ送信手段および前記復帰メッセージ
    受信手段は、前記結果コンバータ部分を使用して前記第
    1表現と前記第2表現の間で引数値を変換することを特
    徴とする請求項7の装置。
  10. 【請求項10】 コンピュータシステムで実行されるサ
    ーバプロセス(131)がクライアントプロセス(10
    7)にサービスを提供するような型のクライアント・サ
    ーバシステムにおいて、 前記コンピュータシステムによって前記サーバプロセス
    に提供されるシステム名空間とは異なるサーバ名空間に
    属する前記サービスの名前を、前記サービスを提供する
    サービス提供手段(117)に関係づける、前記サーバ
    プロセスによって使用されるサーバ名空間手段(13
    3)と、 前記サービスの名前を含むメッセージを前記サーバプロ
    セス送る、前記クライアントプロセスによって使用され
    るサービス呼出し手段(1016)と、 前記メッセージ内の前記サービスの名前に応答して前記
    サーバ名空間手段を使用して前記サービス提供手段を検
    索し、前記サービス提供手段を使用して前記サービスを
    前記クライアントプロセスに提供する、前記サーバプロ
    セスによって使用されるサービス発送手段(1105)
    とからなることを特徴とするクライアント・サーバシス
    テム。
  11. 【請求項11】 前記サーバプロセスが前記クライアン
    トプロセスに提供し、前記クライアントプロセスが前記
    サーバ名空間を操作するために使用する1つ以上の名前
    空間操作サービス(1201)をさらに有することを特
    徴とする請求項10のシステム。
  12. 【請求項12】 前記名前空間操作サービスが、前記サ
    ーバ名空間内の新しい名前を、新しいサービスを提供す
    る手段に関係づけるサービス作成サービス(605)を
    含むことを特徴とする請求項11のシステム。
JP6130903A 1993-05-21 1994-05-23 プログラム実行分割装置およびクライアント・サーバシステム Pending JPH06348511A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US6669693A 1993-05-21 1993-05-21
US066696 1993-05-21

Publications (1)

Publication Number Publication Date
JPH06348511A true JPH06348511A (ja) 1994-12-22

Family

ID=22071112

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6130903A Pending JPH06348511A (ja) 1993-05-21 1994-05-23 プログラム実行分割装置およびクライアント・サーバシステム

Country Status (3)

Country Link
EP (1) EP0625750A3 (ja)
JP (1) JPH06348511A (ja)
CA (1) CA2121612A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08278934A (ja) * 1995-04-06 1996-10-22 Sony Corp ミラーサイト情報サーバおよびミラーサイト情報提供方法

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6272559B1 (en) 1997-10-15 2001-08-07 Sun Microsystems, Inc. Deferred reconstruction of objects and remote loading for event notification in a distributed system
US6463446B1 (en) 1998-02-26 2002-10-08 Sun Microsystems, Inc. Method and apparatus for transporting behavior in an event-based distributed system
US6560656B1 (en) 1998-02-26 2003-05-06 Sun Microsystems, Inc. Apparatus and method for providing downloadable code for use in communicating with a device in a distributed system
US6421704B1 (en) 1998-03-20 2002-07-16 Sun Microsystems, Inc. Method, apparatus, and product for leasing of group membership in a distributed system
US6578044B1 (en) 1997-11-17 2003-06-10 Sun Microsystems, Inc. Method and system for typesafe attribute matching
US6138238A (en) 1997-12-11 2000-10-24 Sun Microsystems, Inc. Stack-based access control using code and executor identifiers
US6282652B1 (en) 1998-02-26 2001-08-28 Sun Microsystems, Inc. System for separately designating security requirements for methods invoked on a computer
US6393497B1 (en) 1998-03-20 2002-05-21 Sun Microsystems, Inc. Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system
US6247026B1 (en) 1996-10-11 2001-06-12 Sun Microsystems, Inc. Method, apparatus, and product for leasing of delegation certificates in a distributed system
US6237024B1 (en) 1998-03-20 2001-05-22 Sun Microsystem, Inc. Method and apparatus for the suspension and continuation of remote processes
US6598094B1 (en) 1998-03-20 2003-07-22 Sun Microsystems, Inc. Method and apparatus for determining status of remote objects in a distributed system
US6438614B2 (en) 1998-02-26 2002-08-20 Sun Microsystems, Inc. Polymorphic token based control
US6466947B2 (en) 1998-03-20 2002-10-15 Sun Microsystems, Inc. Apparatus and method for dynamically verifying information in a distributed system
US6832223B1 (en) 1996-04-23 2004-12-14 Sun Microsystems, Inc. Method and system for facilitating access to a lookup service
US6226746B1 (en) 1998-03-20 2001-05-01 Sun Microsystems, Inc. Stack-based system and method to combine security requirements of methods
US6487607B1 (en) 1998-02-26 2002-11-26 Sun Microsystems, Inc. Methods and apparatus for remote method invocation
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
US6185611B1 (en) 1998-03-20 2001-02-06 Sun Microsystem, Inc. Dynamic lookup service in a distributed system
US5961601A (en) * 1996-06-07 1999-10-05 International Business Machines Corporation Preserving state information in a continuing conversation between a client and server networked via a stateless protocol
US6304893B1 (en) * 1996-07-01 2001-10-16 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server event driven message framework in an interprise computing framework system
US6272555B1 (en) * 1996-07-01 2001-08-07 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server-centric interprise computing framework system
US6233620B1 (en) * 1996-07-02 2001-05-15 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a presentation engine in an interprise computing framework system
US6052711A (en) * 1996-07-01 2000-04-18 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server session web access in an interprise computing framework system.
US6434598B1 (en) * 1996-07-01 2002-08-13 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server graphical user interface (#9) framework in an interprise computing framework system
US5999972A (en) * 1996-07-01 1999-12-07 Sun Microsystems, Inc. System, method and article of manufacture for a distributed computer system framework
US5848246A (en) * 1996-07-01 1998-12-08 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server session manager in an interprise computing framework system
US5832529A (en) 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
US6237009B1 (en) 1996-10-11 2001-05-22 Sun Microsystems, Inc. Lease renewal service
US6728737B2 (en) 1996-10-11 2004-04-27 Sun Microsystems, Inc. Method and system for leasing storage
US6253256B1 (en) 1997-10-15 2001-06-26 Sun Microsystems, Inc. Deferred reconstruction of objects and remote loading in a distributed system
US6604127B2 (en) 1998-03-20 2003-08-05 Brian T. Murphy Dynamic lookup service in distributed system
JP2002505467A (ja) * 1998-02-26 2002-02-19 サン・マイクロシステムズ・インコーポレーテッド 分散システムにおける動的参照サービス
JP2002505473A (ja) 1998-02-26 2002-02-19 サンマイクロシステムズ インコーポレーテッド 決定性ハッシュでリモートメソッドを識別する方法とシステム
US6711157B1 (en) * 1999-08-24 2004-03-23 Telefonaktiebolaget L M Ericsson (Publ) System and method of creating subscriber services in an IP-based telecommunications network
US8082491B1 (en) 2000-05-09 2011-12-20 Oracle America, Inc. Dynamic displays in a distributed computing environment
US6862594B1 (en) 2000-05-09 2005-03-01 Sun Microsystems, Inc. Method and apparatus to discover services using flexible search criteria
US6934755B1 (en) 2000-06-02 2005-08-23 Sun Microsystems, Inc. System and method for migrating processes on a network
US7756969B1 (en) 2001-09-07 2010-07-13 Oracle America, Inc. Dynamic provisioning of identification services in a distributed system
US7660887B2 (en) 2001-09-07 2010-02-09 Sun Microsystems, Inc. Systems and methods for providing dynamic quality of service for a distributed system
US7792874B1 (en) 2004-01-30 2010-09-07 Oracle America, Inc. Dynamic provisioning for filtering and consolidating events

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01288954A (ja) * 1988-05-16 1989-11-21 Nec Corp マルチプロセッサシステムにおけるサービスプログラム実行方式
JPH03121558A (ja) * 1989-10-04 1991-05-23 Matsushita Electric Ind Co Ltd 遠隔タスク実行制御装置
JPH03241454A (ja) * 1990-02-20 1991-10-28 Mitsubishi Electric Corp 異機種間のロードモジュールシエアリング方式
JPH04230567A (ja) * 1990-10-02 1992-08-19 Digital Equip Corp <Dec> 計算システムのための分散型構成プロフィル
JPH04233654A (ja) * 1990-07-11 1992-08-21 American Teleph & Telegr Co <Att> コンピュータシステム
JPH04353955A (ja) * 1991-05-31 1992-12-08 Nec Corp サーバ・クライアント型通信プロトコル
JPH0573339A (ja) * 1991-09-13 1993-03-26 Nippon Telegr & Teleph Corp <Ntt> 分散サービスの並列実行方式
JPH05113959A (ja) * 1991-10-23 1993-05-07 Hitachi Ltd リモ−トプロシジヤコ−ル要求代行処理方法および装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0778775B2 (ja) * 1991-06-12 1995-08-23 インターナショナル・ビジネス・マシーンズ・コーポレイション アプリケーション・プログラム間における情報交換システム及び方法
EP0587880A1 (en) * 1992-04-07 1994-03-23 Digital Equipment Corporation Entity management system with remote call feature

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01288954A (ja) * 1988-05-16 1989-11-21 Nec Corp マルチプロセッサシステムにおけるサービスプログラム実行方式
JPH03121558A (ja) * 1989-10-04 1991-05-23 Matsushita Electric Ind Co Ltd 遠隔タスク実行制御装置
JPH03241454A (ja) * 1990-02-20 1991-10-28 Mitsubishi Electric Corp 異機種間のロードモジュールシエアリング方式
JPH04233654A (ja) * 1990-07-11 1992-08-21 American Teleph & Telegr Co <Att> コンピュータシステム
JPH04230567A (ja) * 1990-10-02 1992-08-19 Digital Equip Corp <Dec> 計算システムのための分散型構成プロフィル
JPH04353955A (ja) * 1991-05-31 1992-12-08 Nec Corp サーバ・クライアント型通信プロトコル
JPH0573339A (ja) * 1991-09-13 1993-03-26 Nippon Telegr & Teleph Corp <Ntt> 分散サービスの並列実行方式
JPH05113959A (ja) * 1991-10-23 1993-05-07 Hitachi Ltd リモ−トプロシジヤコ−ル要求代行処理方法および装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08278934A (ja) * 1995-04-06 1996-10-22 Sony Corp ミラーサイト情報サーバおよびミラーサイト情報提供方法

Also Published As

Publication number Publication date
EP0625750A3 (en) 1995-08-16
EP0625750A2 (en) 1994-11-23
CA2121612A1 (en) 1994-11-22

Similar Documents

Publication Publication Date Title
JPH06348511A (ja) プログラム実行分割装置およびクライアント・サーバシステム
CA2049143C (en) Methods and apparatus for providing a client interface to an object-oriented invocation of an application
EP0578207B1 (en) Method for naming and binding objects
AU639802B2 (en) Methods and apparatus for providing dynamic invocation of applications in a distributed heterogeneous environment
AU638138B2 (en) Methods and apparatus for implementing data bases to provide object-oriented invocation of applications
US7152090B2 (en) Metadata-aware enterprise application integration framework for application server environment
JP4799668B2 (ja) リソースデータを要求側プロセスに対してアクセス可能にする方法
US5339435A (en) Heterogenous software configuration management apparatus
JP2779587B2 (ja) コンピュータシステムに用いる名前スペースの一部分を別の名前スペースの一部分として利用可能にするための装置及びその方法
US5732270A (en) System and method for providing interoperability among heterogeneous object systems
US5943497A (en) Object-oriented apparatus and method for controlling configuration of object creation
EP0471442A2 (en) Methods and apparatus for implementing server functions in a distributed heterogeneous environment
US7240072B2 (en) Dynamic generic framework for distributed tooling
JPH08339355A (ja) 分散形システムでの処理タスク実行呼び出し方法及び装置
JPH09171465A (ja) 異なる命名サービス・プロバイダが動的に命名フェデレーションに接合することを可能とするシステムおよび方法
JP2002132739A (ja) スタブ検索ローディングシステム及び方法、サーバ装置、クライアント装置並びにコンピュータ可読記録媒体
Andrews et al. The design of the Saguaro distributed operating system
Siegel et al. The Cyc System: Notes on Architecture
Rao Distributed application framework for large scale distributed systems
bin Uzayr et al. Knockout
GB2370658A (en) A modular software framework
WO1995016956A1 (en) Object-oriented rule-based directory system
Newcomer et al. STDL as a high-level interoperability concept for distributed transaction processing systems
Observing Communicating Near and Far
Kofler Visual Basic, C#, ODBC