(57)【特許請求の範囲】
【請求項１】
サーバプログラムによって提供されるサービスへのアクセスをクライアントプログラムに提供する、コンピュータにより実施される方法であって、
該サービスについて複数の特性を有するドメインポートを確立する段階であって、該複数の特性の各々が該ドメインポートを介して通信するクライアントプログラムとサーバプログラムとの間の通信を制御するために使用されるものである、段階と、
該クライアントプログラムから該サービスの要求を受理する段階と、
該ドメインポートの該特性を使用して該クライアントプログラムと該サーバプログラムとの間の通信を選択的に制御する段階と、
該ドメインポートを介して該クライアントプログラムと該サーバプログラムとの間の通信リンクを確立する段階と、
該ドメインポートの該特性を使用して該クライアントプログラムと該サーバプログラムとの間で伝送されるメッセージの順序づけを選択的に制御する段階と、
を具備する方法。
【請求項２】
該ドメインポートの該特性を使用して異なるタイプのエラー条件について選択的に監視する段階、を更に具備する、請求項１に記載の方法。
【請求項３】
該ドメインポートの該特性を使用して該クライアントプログラムから該サーバプログラムまで何回メッセージが送信されるかを選択的に制御する段階、
を更に具備する、請求項１に記載の方法。
【請求項４】
該ドメインポートの該特性を使用して異なるタイプのエラー条件について選択的に監視する段階、を更に具備する、請求項３に記載の方法。
【請求項５】
該ドメインポートを確立する段階が、
グローバルネーマーモジュールでポート登録ハンドルを登録する段階と、
該グローバルネーマーモジュールから戻された第１のポートサービスハンドルを該ポート登録ハンドルと結びつける段階と、
ドメインポートテーブル内に該ドメインポートの該特性を格納する段階と、
を具備する、請求項１に記載の方法。
【請求項６】
ポートサービスモジュールに対し該ポート登録ハンドルを用いて要求を送る段階と、
該ポート登録ハンドルと対応付けされたドメインポートの特性を使用して、該サーバプログラムのインスタンスを選択する段階と、
該クライアントプログラムに対し該サーバプログラムのインスタンスと対応付けされたポートサービスハンドルを戻す段階と、
を更に具備する、請求項５に記載の方法。
【請求項７】
該ドメインポートの該特性を使用して異なるタイプのエラー条件について選択的に監視する段階、を更に具備する、請求項６に記載の方法。
【請求項８】
該ドメインポートの該特性を使用して、該クライアントプログラムから該サーバプログラムまで何回メッセージが送信されるかを選択的に制御する段階、
を更に具備する、請求項６に記載の方法。
【請求項９】
該ドメインポートの該特性を使用して異なるタイプのエラー条件について選択的に監視する段階、を更に具備する、請求項８に記載の方法。
【請求項１０】
該ドメインポートの該特性を使用して異なるタイプのエラー条件について選択的に監視する段階、
を更に具備する、請求項６に記載の方法。
【請求項１１】
複数のサーバプログラムによって提供されるサービスへのアクセスを複数のクライアントプログラムに提供する、コンピュータにより実施される方法であって、
各々複数の特性を有する複数のドメインポートを確立する段階であって、該複数の特性の各々が該ドメインポートを介して通信するクライアントプログラムとサーバプログラムとの間の通信を制御するために使用されるものである、段階と、
該クライアントプログラムから該サービスの要求を受理する段階と、
該ドメインポートの該特性を使用して該クライアントプログラムと該サーバプログラムとの間の通信を選択的に制御する段階と、
該ドメインポートを介して該クライアントプログラムと該サーバプログラムとの間の通信リンクを確立する段階と、
該ドメインポートの該特性を使用して該クライアントプログラムと該サーバプログラムとの間で伝送されるメッセージの順序づけを選択的に制御する段階と、
を具備する方法。
【請求項１２】
サーバプログラムによって提供されるサービスへのアクセスをクライアントプログラムに提供する装置であって、
該サービスについて複数の特性を有するドメインポートを確立する手段であって、該複数の特性の各々が該ドメインポートを介して通信するクライアントプログラムとサーバプログラムとの間の通信を制御するために使用されるものである、手段と、
該クライアントプログラムから該サービスの要求を受理する手段と、
該ドメインポートの該特性を使用して該クライアントプログラムと該サーバプログラムとの間の通信を選択的に制御する手段と、
該ドメインポートを介して該クライアントプログラムと該サーバプログラムとの間の通信リンクを確立する手段と、
該ドメインポートの該特性を使用して該クライアントプログラムと該サーバプログラムとの間で伝送されるメッセージの順序づけを選択的に制御する手段と、
を具備する装置。
【請求項１３】
サーバプログラムによって提供されるサービスへのアクセスをクライアントプログラムに提供するようにコンピュータを誘発するプログラム命令を具備するコンピュータ読取り可能な媒体であって、該クライアントプログラムへの提供が、
該サービスについて複数の特性を有するドメインポートを確立する段階であって、該複数の特性の各々が該ドメインポートを介して通信するクライアントプログラムとサーバプログラムとの間の通信を制御するために使用されるものである、段階と、
該クライアントプログラムから該サービスの要求を受理する段階と、
該ドメインポートの該特性を使用して該クライアントプログラムと該サーバプログラムとの間の通信を選択的に制御する段階と、
該ドメインポートを介して該クライアントプログラムと該サーバプログラムとの間の通信リンクを確立する段階と、
該ドメインポートの該特性を使用して該クライアントプログラムと該サーバプログラムとの間で伝送されるメッセージの順序づけを選択的に制御する段階と、
を実行することによってなされる媒体。
【発明の詳細な説明】
同時係属出願に対するクロスレファレンス
本出願は、共に本発明の譲渡人に譲渡され共に本書に参考として内含されている、Rajeev Bharadhwajによって１９９６年１２月３０日に提出された「コンピュータプログラムの実行管理のためのシステム及び方法」及び１９９７年３月１２日に提出されたRajeev Bharadhwajによる「階層的に命名されたコンピュータアクセス可能なオブジェクトのための命名システム」という同時係属特許出願に関係づけされる。
発明の背景
１．発明の分野
本発明は、一般に、クライアントサーバタイプのデータ処理システムに関するものであり、より特定的には、クライアントプログラムとサーバプログラムとの間のメッセージ転送を制御するのに使用するための通信システムに関する。
２．背景技術の説明
クライアントサーバタイプのデータ処理システムの利用は、増大し続けている。クライアントサーバシステムは、ネットワーク上のさまざまなシステム間で処理タスクを分配する上での融通性を提供する。
これらは、見かけ上普及が進んでいるにもかかわらず、クライアントサーバシステムを容易に作成するには障害がある。クライアントサーバタイプのデータ処理システムを作成する上での１つの障害は、クライアントプログラム及びサーバプログラムが共通の通信プロトコルにプログラミングされなくてはならないという点にある。利用されるプロトコルが１つしかない場合には、クライアント及びサーバをプログラミングすることが大きな障害とならない可能性が最も高い。しかしながら、各々が異なるプロトコル又は或る点では、類似しているもののその他の点では異なっている類似のプロトコルを必要とする多数のサーバプログラムが存在する場合、さまざまなサーバプログラムプロトコルをプログラミングするのに必要とされる作業は増大する。
サーバプログラムのためのオブジェクト特性が固定されているかぎり、クライアントプログラムのプログラミングという観点から見て、クライアントはその演算パラメータを変更する必要はないだろう。しかしながら、１つのサーバアプリケーションのためのネットワークアドレスが変更された時点で、クライアントは新しいアドレスについて知らされていなければならない。１つのクライアントプログラムしか存在しない場合、変更を行なうことは、全く取るに足らないことである。しかしながら何百さらには何千ものクライアントプログラムが存在する場合、変更を行なうには多大な努力が必要となる可能性がある。
従って、必要とされているのは、クライアントとサーバプログラムとの間の通信を調整するプロセスを単純化し、包括的に命名されたオブジェクトを支援する通信システムである。
発明の要約
本発明は、さまざまなタイプの通信プロトコルをもつ数多くのタイプのクライアントサーバシステムを確立し維持する上で関与してくる問題点を低減させる通信システムである。本発明は、クライアントプログラムとサーバプログラムとの間の異なるタイプの通信プロトコルを支援するのに各々使用される多数のドメインポートを定義づけする能力を提供する。さらに、メッセージ圧縮、メッセージ暗号化、メッセージロギング、ミラリング、ストライピングなどといった多彩な機能をサーバプログラムに提供するのに、ドメインポートを利用することができる。本発明は、同様に、分配されたサービスに対し命名されたアクセスをも提供し、かくして、クライアントプログラム及びサーバプログラムがサービスの命名／アドレス指定に関し直接互いと調整を行なう必要性を無くする。
各々の複数の特性をもつドメインポートが、ポートサービスモジュールにより確立される。１つのドメインポートの特性は、そのドメインポートを介して通信するクライアントプログラムとサーバプログラムとの間の通信を制御する上でポートサービスモジュールにより使用される。ポートサービスモジュールによるドメインポート特性を使用することで、クライアントプログラム及びサーバプログラムはさまざまな通信プロトコルセマンティクスを管理する義務から解放される。
クライアントプログラムとサーバプログラムとの間で交換されるメッセージを順序づけし計数するための特性をもつように、ドメインポートを定義づけすることが可能である。ドメインポートは、同様に、異なるタイプのエラー条件について監視するための特性をもつように定義づけすることもできる。メッセージを順序づけすべきであることを命令する定義づけされた特性をドメインポートが有する場合、ポートサービスモジュールは、特定のクライアント及びサーバプログラムの必要条件に従って予め決定される１つの順序に従ってクライアントプログラムとサーバプログラムとの間で送られたメッセージを順序づけする。同様にして、メッセージを計数すべきであることを命令する定義づけされた特性をドメインポートが有する場合、ポートサービスモジュールは、特定の必要条件に従ってクライアントプログラムとサーバプログラムとの間で交換されたメッセージを計数する。
メッセージ圧縮、メッセージ暗号化、メッセージロギング、ミラリング、ストライピングなどといった特性を有するようにドメインポートを定義づけすることが可能である。このような定義づけされた特性に応答して、ポートサービスモジュールは、特定された特性と対応付けされた機能を実行する。ポートサービスモジュールが希望の機能を提供することから、サーバプログラムはそれを行う必要がない。
本発明は、同様に、分配されたサービスに対する命名されたアクセスをも提供し、かくしてクライアントプログラム及びサーバプログラムがサービスの命名に関し直接互いに調整し合う必要性を無くする。ポートサービスモジュールは、命名されたサービスとのその結びつきがグローバルネーマーモジュールによって維持されているポート登録ハンドルに対する応答性をもつ。かくして、クライアントプログラムはサービス名を覚えている必要しかなく、一方、グローバルネーマーモジュールがドメインポートとの結びつきを提供し、ポートサービスモジュールはそのドメインポートをその特定のサーバプログラム及び／又はインスタンスと結びつける。
【図面の簡単な説明】
図１は、本発明に従ったクライアントサーバデータ処理システム例のブロック図である。
図２は、ポートサービスモジュールを例示するブロック図である。
図３は、ドメインポートについての特性テーブルのブロック図である。
図４は、ドメインポートを作り出すために行なわれる処理の流れ図である。
図５は、クライアントプログラムからの要求を処理すべくサーバプログラムを選択する上で行なわれる処理の流れ図である。
図６は、クライアントプログラムからの通信要求のためにポートサービスモジュールによって実行されサーバプログラムに対しアドレス指定される処理の流れ図である。
詳細な説明
図１は、本発明に従ったクライアントサーバデータ処理システムのブロック図である。システム例には、クライアントシステム１０４，サーバノード１０６及び１０８及びグローバルネーマーシステム１１０が内含されている。クライアントシステム１０４，サーバノード１０６及び１０８並びにグローバルネーマーシステム１１０の各々は、プログラムの処理ニーズに応じて特定のハードウェアが選択される従来のデータ処理システムである。クライアントシステム１０４，サーバノード１０６及び１０８及びグローバルネーマーシステム１１０はネットワーク１１１に統合されている。
クライアントシステム１０４はクライアントプログラム１０２のホストとなり、サーバノード１０６は第１のサーバプログラム１１２及び第２のサーバプログラム１１４ａの第１のインスタンスのホストとなり、サーバノード１０８は１１４ｂと呼ばれる第２のサーバプログラムの第２のインスタンス及び第３のサーバプログラム１１６のホストとなり、グローバルネーマーシステム１１０はグローバルネーマーモジュール１１８のホストとなる。サーバノード１０６及び１０８の各々は、同様に、それぞれのポートサービスモジュール１２２及び１２４をも有している。
クライアントプログラム例１０２は、第２のサーバプログラム１１４ａの第１のインスタンスのサービスを利用するように設計されている。第１のサーバプログラム１１２及び第３のサーバプログラム１１６は、例示目的でのみ示されている。
ポートサービスモジュール１２２及び１２４の各々は、サーバプログラム１１４ａ−ｂに対するアクセスについてクライアントプログラム１０２が行なった要求、並びにサーバプログラム１１２及び１１６に対してその他のクライアントプログラム（図示せず）により行なわれた要求に対する応答をもつ。ポートサービスモジュール１２２及び１２４は、各サーバプログラムについて１つずつの複数のドメインポートを維持する。ポートサービスモジュール１２２がドメインポート１３２と共に示され、ポートサービスモジュール１２４がドメインポート１３４と共に示されている。ドメインポート１３２及び１３４は、クライアントプログラム１０２とサーバプログラム１１２との間の通信を管理するためそれぞれのポートサービスモジュールによって使用される。ポートサービスモジュール１２２及び１２４は、同様に、その他のクライアントプログラム（図示せず）とサーバプログラム１１２及び１１６との間の通信をも管理する。
グローバルネーマーモジュール１１８は、グローバルネーマーシステム１１０をホストとしている。サービスの名前がわかっているため、グローバルネーマーモジュール１１８は、そのサービスに対する要求が導かれるべきドメインポート及びポートサービスモジュール１２２又は１２４についての識別子を供給する。グローバルネーマーモジュール１１８は、サーバプログラム１１２，１１４ａ−ｂ及び１１６の名前と、それらがアクセスされるドメインポート１３２及び１３４との間の結びつきを維持する。グローバルネーマーは、かくして、ドメインポート１３２及び１３４とサーバプログラム１１２，１１４ａ−ｂ及び１１６との間の結びつきを覚え維持する義務からクライアントプログラム１０２を解放する。クライアントプログラム１０２からグローバルネーマーモジュール１１８への要求には、そのサービスを利用するその他のクライアントプログラムにより同様に一般に知られているサービスの名前が含まれている。これらに応えて、グローバルネーマーモジュールは、ポート登録ハンドルを戻す。ポート登録ハンドルは、ポートサービスモジュールにより管理されるポート１３２又は１３４のうちの特定のポートと共に、特定のポートサービスモジュール１２２又は１２４を識別する。グローバルネーマーモジュール１１８は、当業者によって実現され得るものであり、そうでなければ、クロスレファレンスとして記した特許出願のグローバルネーマーシステムをグローバルネーマーモジュールとして使用することもできる。
図１の方向を示すラインは、クライアントプログラム１０２が第２のサーバプログラム１１４ａ−ｂのサービスを要求する、要求の流れの例を示している。クライアントプログラム１０２が第２のサーバプログラム１１４ａ及び１１４ｂの両方を明示的に要求せず、その代り、サーバプログラム１１４ａ及び１１４ｂにより提供されるサービスを名前で言及していることに留意されたい。
ライン１は、クライアントプログラム１０２からグローバルネーマーモジュール１１８への要求の流れを示す。要求は、サーバプログラム１１４ａ−ｂにより提供された１つのサービスの名前、つまりポートサービスハンドルを内含する。グローバルネーマーモジュール１１８は、ポート登録ハンドルをライン２に例示される通りクライアントプログラム１０２に戻す。ポート登録ハンドルは、ポートサービスモジュール１２２のアドレスを内含し、要求されたサーバプログラム１１４ａ−ｂにアクセスするのに用いられる特定のポート１５２を識別する。ライン３は、クライアントプログラムがポート登録ハンドルを介してポートサービスモジュール１２２に対し命名されたサービスについての要求を行なっていることを示す。ポートサービスモジュールは、このとき、その要求により識別されたドメインポート１５２を選択し、ライン４に示されているように、第２のサーバプログラム１１４ａの第１のインスタンスを開始する。
ドメインポート１５２の定義に基づき、かつ、ライン５に示されているように、ポートサービスモジュール１２４は、ドメインポート１５２からの複製要求を受理する。このとき、ポートサービスモジュール１２４は、ライン６により示されているようにサーバノード１０８上で第２のサーバプログラム１１４ｂを開始する。サーバノード１０８上の第２のサーバプログラム１１４ｂの開始は、クライアントプログラム１０２には見えない。ポートサービスモジュールは、ポート１５２の定義づけに基づき、第２のサーバプログラム１１４ｂを開始する。サーバプログラム１１４ｂの第２のインスタンスが開始される例としては、データ複製サービスが要求された場合がある。すなわち、サーバノード１０８上の第２のサーバプログラム１１４ｂは、サーバノード１０６上の第２のサーバプログラム１１４ａが行なっているのと同じ要求の同じ処理を行なう。第２のサーバプログラム１１４ａ−ｂは、ポート定義と組合わさってポートサービスモジュール１５２が望まれる複製を管理することから、サービスの複製（すなわち第１のインスタンス１１４ａ及び第２のインスタンスにおける）を管理する義務から解放される。サービスの複製は、ポートサービスモジュールが１つのサービスのために管理することのできる１つの機能にすぎない。その他の機能については、本明細書の他の場所で記述されている。
ライン７は、ポートサービスモジュール１２２からクライアントプログラム１０２まで第２のサーバプログラムの識別子が戻されていることを例示している。その後、クライアントプログラム１０２は、ライン８により示されているように、識別子に対する参照指示によりポートサービスモジュール１２２を介して、サーバプログラム１１４ａと通信する。サーバプログラムの識別子は、ポートサービスモジュール１２２が単一のドメインポートを通してサーバプログラムの多数のインスタンスを管理する場合に用いられる。
図２は、ポートサービスモジュール２０２を例示するブロック図である。ポートサービスモジュール１２２及び１２４は、ポートサービスモジュール２０２のインスタンスである。ポートサービスモジュール２０２は、ドメインポート２１２の定義により左右される形でクライアントプログラム及びサーバプログラムと相互作用するソフトウェアコンポーネントである。ドメインポート２１２についての定義は、ホストサーバノード２０６又は２０８のメモリ内に記憶される。ドメインポート２１２の各々が、それぞれのドメインポート名２１２ａ，２１２ｂ，２１２ｃ，…，２１２ｎ，それぞれの特性セット２１４ａ，２１４ｂ，２１４ｃ，…，２１４ｎ，それぞれのサーバノードリスト２１６ａ，２１６ｂ，２１６ｃ，…，２１６ｎ及びそれぞれのクライアント接続リスト２１８ａ，２１８ｂ，２１８ｃ，…，２１８ｎによって定義づけされる。
ドメインポート２１２ａ−ｎについての特性２１４ａ−ｎは、１つのドメインポートについてのさまざまな演算挙動を定義づけする。例えば、特性は、サーバプログラム１１２，１１４ａ−ｂ及び１１６のどのインスタンスを実行すべきかを選択するための選択基準、クライアントプログラム１０２とサーバプログラムの間のメッセージ順序付け及びさまざまなその他のメッセージ処理ディテールを定義づけする。
ドメインポートサーバノードリスト２１６ａ−ｎは、それぞれのドメインポート２１２ａ−ｎと対応付けされたサーバプログラムのホストであるさまざまなサーバノード１０６及び１０８を識別する。例えばドメインポート１５２で、サーバノード１０６及びサーバノード１０８は、ドメインポートサーバノードリスト内で識別されることになる。
クライアント接続リスト２１８ａ−ｎは、それぞれドメインポートに接続されたさまざまなクライアントシステム１０４を識別する。例えば図１において、クライアントシステム１０４は、ドメインポート１５２に接続され、ドメインポート１５２についてのクライアント接続リスト２１８ａ−ｎのそれぞれ１つずつ及びポートサービスモジュール１２４の対応するドメインポートについてのクライアント接続リスト内で識別されることになる。クライアント接続リスト２１８ａ−ｎは、クライアントシステムが通信していないとき又はネットワーク１１１から除去されているとき、サーバプログラム１１２，１１４ａ−ｂ又は１１６にそれを知らせるために使用され得る。
図３は、ドメインポート２１２ａ−ｎのための特性テーブル２１４のブロック図である。特性テーブル２１４は、６つの特性セット、すなわち選択基準３０６，ポートタイプ３０８，メッセージ順序づけ３１０，実行セマンティクス３１２，エラーセマンティクス３１４及び雑特性セット３１６から成る。どの特性が、ドメインポート２１２のそれぞれ１つに適用されるかを示すため、特性に対してメモリセルが割り当てられる。例えば、セル３１８ａは、find next特性と結びつけられる。以下の段落では各々のセットについて記述する。
選択基準３０６特性は、１つの要求を処理するため１１４ａ又は１１４ｂといったようなサーバプログラムのインスタンスを選択することに向けられる。find-next特性は、入要求を処理するためにサーバプログラム１１２，１１４ａ−ｂ，１１６の次に利用可能なインスタンスを選択すべきであることを示している。find-next特性は、その要求を処理するためにネットワーク１１トポロジー内でＳＰＭ１５２に最も近いノードをホストとするサーバプログラムを選択すべきであることを指示する。find-in-specific-node特性は、開始されるべきサーバプログラム１１２，１１４ａ−ｂ，１１６のホストであるサーバノード１０６又は１０８を特定する。当業者であれば、その他の選択基準も実現可能であることを認めるだろう。
ポートタイプ３０８特性は、例えば１５２といった対応付けされたドメインポートがアクセスを提供するオブジェクトタイプの特定に向けられている。本発明では、ポートタイプは、サーバプログラム１１２，１１４ａ−ｂ又は１１６のあらゆるタイプでありうる。しかしながら、例示を目的として、クロスレファレンスされた特許プログラム内に記述されているドメインアレイに関連するポートタイプが示されている。
ポートタイプの例としては、domain array, domain port, domain group及びdomain objectがある。domain arrayポートタイプは、サーバプログラムが、クロスレファレンスされた特許プログラム内で記述されているようなドメインアレイであることを表わしている。対応付けされたドメインポートがdomain portのポートタイプ３０８を有する場合、ドメインポートはもう１つのドメインポートを参照指示する。図示されてはいないものの、当業者であれば、もう１つのドメインポートを参照指示するために参照指示されたドメインポートのための名前を記憶する必要があるということを認識することだろう。domain group特性は、１つのプログラムを実行するのに協働するドメインオブジェクトのグループを参照指示する。domain object特性は、ドメインポート２１２を介してアクセスを得ることのできるその他のタイプのオブジェクトを包括的に参照指示するのに使用される。
ドメインポート２１２は、同様に、メッセージ順序づけ３１０特性を有する可能性もある。メッセージ順序づけ特性は、クライアントプログラム１０２とサーバプログラム１１２，１１４ａ−ｂ及び１１６の間でメッセージの交換を制御するためポートサービスモジュール１２２又は１２４よって使用される。メッセージ順序づけ特性の例としては、unordered, first-in-first-out, partial, priority及びtotalが内含される。unordered特性は、メッセージがいかなる順序でも到着及び送信しうることを表わす。かくして、ポートサービスモジュール１２２又は１２４は、交換されたメッセージの順序を調整する必要がない。first-in-first-out特性は、ポートサービスモジュール１２２又は１２４が、クライアントプログラム１０２からサーバプログラム１１２，１１４ａ−ｂ，１１６まで、ポートサービスモジュールにより受信された順序でメッセージを転送するということを指示する。メッセージの順序づけは、サーバプログラム１１２，１１４ａ−ｂ，１１６から受信したメッセージについて類似している。partial特性のためのメッセージの特定的順序づけは、順序づけがドメインポートに対応付けされたサーバプログラムについてのみ起こるというものである。priority順序づけ特性の利用例は、例えば先行する要求を打ち切るために急送メッセージを送信することである。total順序づけは、メッセージがドメインポート全体及びいずれかの対応付けされたポートのために順序づけされることを表わす。例えば、図１に関連する完全な順序づけは、第２のサーバプログラム１１４ａに対する全てのメッセージについてＰＭＳ１２２及び１２４間の全てのメッセージを順序づけすることができる。
実行セマンティクス３１２特性は、同様に、サーバプログラム１１２，１１４ａ−ｂ又は１１６に対し通信プロトコルを実施するために、ポートサービスモジュール１２２又は１２４によって使用される。at-most-once特性は、メッセージがただ１つのサーバプログラムｌ１２，１１４ａ−ｂ又は１１６に対してかつそのサーバプログラムに対し多くとも１回だけ送信されることを表わす。exactlyonce特性は、メッセージがサーバプログラム１１２，１１４ａ−ｂ又は１１６に対して１回限り送られることを表わし、at-least-once特性は、メッセージがサーバプログラムに対し少なくとも１回送られなくてはならないことを示す。
エラーを検出し予め定められた行動をとるためにもドメインポート２１２を使用することができる。エラーセマンティクス３１４特性には、bounded time及びorphan detectionが内含される。bounded time特性では、ポートサービスモジュール１２２又は１２４は、サーバプログラム１１２，１１４ａ−ｂ，又は１１６による要求の処理をタイミングどりし、プログラム必要条件に応じてクライアントプログラム１０２に、要求の処理時間が予め定められたしきい値を超えていることを通知することができる。orphan detection特性は、ポートサービスモジュール１２２又は１２４が失なわれたクライアントに対する接続を検出し、ドメインポート及びそれが支援するドメインオブジェクト内で必要となる可能性のあるすべてのクリーンナップを実施することを指示する。
雑３１６特性は、ドメインポート２１２の演算特性をさらに定義づけするために用いられる。voting, rerouting, filtering, mirroring, load balancing, striping, compression, encryption及びmessage loggingといった雑特性例は、当業者には周知のものであり、又当業者であれば、ドメインポート２１２を用いてその他の特性も実現できることを認識するであろう。
図４は、ドメインポート２１２を新規作成するために行なわれる処理の流れ図である。クライアントプログラム１０２がドメインポート２１２にアクセスできるようになる前に、ドメインポートを新規作成しなくてはならない。ポートサービスモジュール２０２は、入力として、ステップ４０２でドメインポート２１２のためのポート登録ハンドルを受理する。このポート登録ハンドルは、ドメインポート名エントリ２１２ａ−ｎの１つの中で使用される。ポート登録ハンドル及び対応付けされたポートサービスハンドルは、ステップ４０４においてグローバルネーマーモジュール１１８で登録される。グローバルネーマーモジュールは、好ましい実施形態においてはサーバプログラム１１２，１１４ａ−ｂ，１１６又はその他を一意的に識別する６４ビットの値であるポートサービスハンドルを戻す。ポート登録ハンドルがすでにグローバルネーマーモジュール１１８で登録されている場合には、グローバルネーマーモジュールはサーバノード１０６，１０８又はもう１つのサーバノードの識別子と共に６４ビットのポートサービスハンドルを戻す。
複製されたサービスの場合のようにポート登録ハンドルがすでに登録されている場合、決定ステップ４０６が制御ステップ４０８に導く。そうでなければ、制御はステップ４１０まで導かれる。グローバルネーマーモジュール１１８から戻されたサーバノードの識別子は、ステップ４０８でドメインポート２１２のサーバノードリスト例えば２１６ａに付加される。さらに、ノード名を指示するグローバルネーマーモジュール１１８でポート登録ハンドルをまず第１に登録したサーバノード（例えば１０６，１０８）に対しメッセージが送られる。このとき処理は完了する。
ポート登録ハンドル４０６がまだ登録されていないことを決定ステップ４０６が発見した場合、制御はステップ４１０に導かれ、ここでグローバルネーマーモジュール１１８から戻されたポートサービスハンドルはポート登録ハンドルと結びつけられる。この結びつきは、クライアントプログラム１０２がポートサービスハンドルで１つのサービスを参照指示するときドメインポート２１２を参照指示するのに用いられる。ドメインポート特性は、ドメインポートの動作を定義づけするためのステップ４１２で入力される。ステップ４１４では、特性テーブル２１４は入力特性で更新される。このときドメインポート２１２を新規作成するための処理は完了する。
図５は、クライアントプログラム１０２からの要求を処理するためサーバプログラム、例えば１１２を選択する上で実施される処理の流れ図である。処理は、ステップ５０２で開始し、ここで、クライアントプログラム１０２は、望ましいサービスと結びつけられているサーバノード例えば１０６、識別子及びポート登録ハンドルを得る。図１から、クライアントプログラム１０２がグローバルネーマーモジュール１１８からポート登録ハンドルを得ることを思い出して頂きたい。
ステップ５０４では、ステップ５０２において識別されたサーバノード１０６でポートサービスモジュール１２２に１つの要求が送られる。この要求は、同様にステップ５０２で識別されたポート登録ハンドルを内含する。ポートサービスモジュール１２２は、ステップ５０６で命名されたドメインポートのポート特性３０２を得る。特性２１４は、要求を処理するためサーバプログラム１１２，１１４ａ−ｂ又は１１６を選択する上で使用される。
決定ステップ５０８は、ドメインポート例えば２１２ａのポートタイプ３０８がdomain group又はdomain objectのいずれかであるか否かをテストする。そうである場合、制御はステップ５１０まで導かれ、ここでこの要求は命名されたサービスのためサーバ管理プログラムヘと転送される。
ポートタイプ３０８がdomain portである場合、決定ステップ５１２は制御をステップ５１４に導き、ここで要求は処理のためもう１つのドメインポート例えば２１２ｂへと転送される。
ポートタイプ３０８について最後の考えられる例は、domain arrayである。ドメインアレイポートタイプについては、制御はステップ５１６へと導かれ、ここで要求を処理するべく１つのドメインアレイが選択される。この選択は、ドメインポート特性３０２の選択基準３０６に基づいて行なわれる。選択されたドメインアレイは、ポートサービスモジュール２０２との関係においてローカルであっても又はリモートであってもよい。複製された又はミラリングされたサービスについては、ローカル及びリモートの両方のドメインアレイを選択することができる。ステップ５２０では、ローカルドメインアレイが選択された場合に要求を処理するためローカルドメインアレイの１インスタンスが開始される。要求はステップ５２２でリモートサービスモジュール例えば１２４に転送され、かくしてリモートドメインアレイが選択された場合にリモートドメイアレイが要求を処理できるようになっている。
ステップ５２４で、ドメインポートのためのクライアント接続リスト例えば２１８ａが更新される。クライアントシステム１０４の識別子がリストに付加される。ポートサービスハンドル及びサーバプログラム識別子がステップ５２６でクライアントプログラム１０２に戻される。その後、クライアントプログラムは、ポートサービスモジュール１２２を介してサーバプログラム例えば１２２にメッセージを送信するとき、ポートサービスハンドル及びサーバプログラム識別子を使用することができる。
図６は、サーバプログラム例えば１１４ａにアドレス指定されたクライアントプログラム１０２からの通信要求についてポートサービスモジュール例えば１２２が行なう処理の流れ図である。ステップ６０２において、ポートサービスモジュール２０２は、サーバプログラム識別子及びポートサービスハンドルを要求から得る。
ステップ６０４では、ポートサービスモジュール１２２又は１２４は、ポートサービスハンドルと対応付けされたドメインポート例えば２１２ａのポート特性３０２をルックアップする。両方が同じサーバノード１０６上でホストされている場合にはサーバプログラム１１２がポートサービスモジュール１２２との関係において「ローカル」であるという点に留意されたい。同様に、第３のサーバプログラム１１６は異なるサーバノード１０８上でホストされていることから、このプログラム１６はポートサービスモジュール１２２との関係において「リモート」である。サーバプログラム識別子により識別されたサーバプログラム例えばｌ１２がポートサービスモジュール１２２との関係においてローカルである場合、ステップ６０８で、要求は、ポート特性３０２により決定された制御を用いて、処理のためにローカルサーバプログラムまで転送される。ステップ６１０において、リモートサーバプログラムが選択される場合、要求は、リモートサーバプログラム例えば１１６をホストするサーバノード１０８のポートサービスモジュール例えば１２４に送られる。
ポートサービスモジュール１２２からサーバプログラム例えば１２２からの応答を受理するステップ６１２において、処理が続行する。ステップ６１４で、クライアントプログラム１０２に対し応答を戻す上で、ポート特性３０２が用いられる。
本書で記述された実施例は、例示を目的とするものであって、制限的意味をもつべく意図されていない。従って、当業者であれば、以下で規定するクレームの範囲及び精神から逸脱することなくその他の実施形態を実践することができるということを認識することだろう。
【図１】
0003989969.tif 000002
【図２】
0003989969.tif 000003
【図３】
0003989969.tif 000004
【図４】
0003989969.tif 000005
【図５】
0003989969.tif 000006
【図６】
0003989969.tif 000007