(57)【特許請求の範囲】
【請求項１】
分散型演算環境の下でオブジェクト指向型プログラミングおよびソフトウェアキャッシング技術を用いるシステムにあって、オブジェクトハンドルを受信したクライアント（以下受信クライアントと言う）が、ターゲットオブジェクトの参照をする際、ローカルキャッシュマネージャを用いる方法であって、前記オブジェクトハンドルが、フロントハンドルとバックハンドルとを含められることによって拡張されたオブジェクトハンドルであり、
ａ）バックハンドルにターゲットオブジェクトへの参照を、フロントハンドルに第１キャッシュマネージャへの参照をそれぞれ含む拡張されたオブジェクトハンドルを受信する過程と、
ｂ）前記第１キャッシュマネージャが前記受信クライアントとは同じマシーン上にはないが、その同じマシーン上に前記ターゲットオブジェクトのためにキャッシングサービスを行える第２キャッシュマネージャが存在する場合に、前記受信する過程で受信した拡張されたオブジェクトハンドルのフロントハンドルに含まれる前記第１キャッシュマネージャへの参照を、前記受信クライアントから見てローカルな第２キャッシュマネージャへの参照でもって置き替えることによって、新規な拡張されたオブジェクトハンドルを構成する過程と、
ｃ）前記第１キャッシュマネージャが前記受信クライアントとは同じマシーン上になく、且つ、その同じマシーン上に前記ターゲットオブジェクトのためにキャッシングサービスを行えるキャッシュマネージャが存在しない場合に、前記受信する過程で受信した拡張されたオブジェクトハンドルのフロントハンドルに含まれる前記第１キャッシュマネージャへの参照を、前記受信する過程で受信した拡張されたオブジェクトハンドルのバックハンドルに含まれる前記ターゲットオブジェクトへの参照でもって置き替えることによって、新規な拡張されたオブジェクトハンドルを構成する過程と、
ｄ）その新規な拡張されたオブジェクトハンドルのフロントハンドルを用いてターゲットオブジェクトの動作を呼び出す過程と
を備えることを特徴とする、ローカルキャッシュマネージャを用いる方法
【請求項２】
分散型演算環境の下でオブジェクト指向型プログラミングおよびソフトウェアキャッシング技術を用いるシステムであって、オブジェクトハンドルを受信したクライアント（以下受信クライアントと言う）が、ターゲットオブジェクトの参照をする際、ローカルキャッシュマネージャを用いるようにした装置であって、前記オブジェクトハンドルが、フロントハンドルとバックハンドルとを含められることによって拡張されたオブジェクトハンドルであり、
ａ）  受信クライアントを含むコンピュータを備え、その受信クライアントには、バックハンドルにターゲットオブジェクトへの参照を、フロントハンドルに第１キャッシュマネージャへの参照をそれぞれ含む拡張されたオブジェクトハンドルを他のクライアントから受信する機能が含まれ、
ｂ）  前記コンピュータには、前記第１キャッシュマネージャが前記コンピュータ上になく、且つ、前記コンピュータ上に前記ターゲットオブジェクトのためにキャッシングサービスを行える第２キャッシュマネージャが存在する場合に、前記受信した拡張されたオブジェクトハンドルのフロントハンドルに含まれる前記第１キャッシュマネージャへの参照を、前記コンピュータから見てローカルな第２キャッシュマネージャへの参照へと変更することによって、拡張されたオブジェクトハンドルを変化させる第１の論理手段が備えられ、
ｃ）  前記コンピュータには、前記第１キャッシュマネージャが前記コンピュータ上になく、且つ、前記コンピュータ上に前記ターゲットオブジェクトのためにキャッシングサービスを行えるキャッシュマネージャが存在しない場合に、前記受信した拡張されたオブジェクトハンドルのフロントハンドルに含まれる前記第１キャッシュマネージャへの参照を、前記受信した拡張されたオブジェクトハンドルのバックハンドルに含まれる前記ターゲットオブジェクトそれ自体への参照へと変更することによって、拡張されたオブジェクトハンドルを変化させる第２の論理手段が備えられ、
それにより、前記受信クライアントが、変化させられた拡張されたオブジェクトハンドルのフロントハンドルを用いてターゲットオブジェクトの動作を呼び出せる
ことを特徴とする装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、分散型コンピュータシステム、クライアント・サーバ演算ならびにオブジェクト指向型プログラミングに関する。特に、クライアントプログラムを提供する方法および装置に関するもので、オブジェクトが利用されている各マシーンにおいて、ソフトウェアキャッシングの完全な利益が得られるようなオブジェクトに関する参照を利用したり、これと通信する能力が得られるものである。
【０００２】
【技術的背景】
オブジェクト指向型システムにおいて、このオブジェクトとは、データおよびオペレーションを含むコンポーネントであり、これらのオペレーションは、データを操作するために呼出されるようになっている。これらオペレーションは、コールをオブジェクトに送ることによって、このオブジェクトに呼び出される。各オブジェクトはそれぞれタイプを有する。このオブジェクトのタイプが、そのタイプのオブジェクトで実行できるオペレーションを規定する。オブジェクトオペレーションはオブジェクト自身から独立して実行される。さらに、１つのオブジェクトタイプによって、他のオブジェクトタイプ用に規定されると共に実行されるオブジェクトのオペレーションを禁止することが可能となる。これらオブジェクト指向型設計およびプログラム技術に関する更に詳細な説明は、Ｐｒｅｎｔｉｃ−Ｈａｌｌ社より１９８８年に発行されたＢｅｒｔｒａｎｄ  Ｍａｙｅｒ（バートランドメイヤー）著による「Ｏｂｊｅｃｔ−ｏｒｉｅｎｔｅｄ  Ｓｏｆｔｗａｒｅ  Ｃｏｎｓｔｒｕｃｔｉｏｎ  （オブジェクト指向型ソフトウェア設計）」に記載されている。
【０００３】
代表的なクライアント・サーバ演算システムにおいては、一連のコンピュータが設置されており、これらコンピュータ相互は、コンピュータ間を接続しているネットワークを介して通信することができる。これらコンピュータの幾つかは、サービスの提供者として作用するか、または他のコンピュータに対する機能提供者として作用する。このようなサービスまたは機能の提供者は「サーバ」として知られており、これらサービスまたは機能の顧客は、「クライアント」と呼ばれている。また、クライアント・サーバモデルは、同一コンピュータ上で動作している個々のプログラムが、ある保護されたメカニズムを介して互いに通信すると共に、機能の提供者および顧客として動作すると概括することができる。
【０００４】
クライアント・サーバモデルによるオブジェクト指向型分散システムでは、オブジェクト指向型インターフェイスをこれらクライアントに提供するサーバが存在する。それらのサーバは、データおよびこれと組合わされたソフトウェアから成るオブジェクトをサポートする。クライアントは、それらのオブジェクトにアクセスすると共に、そのオブジェクトに関するコールを実行してもよい。これらのコールはクライアントからサーバへ転送され、サーバでオブジェクトに組合わされたソフトウェアを介して実行される。これらコールの結果が、次に、クライアントに送り戻される。
【０００５】
クライアントプログラムは、オブジェクトハンドル手段によって特定のオブジェクトに参照を付すことができる。この「オブジェクトハンドル」とは、オブジェクトを位置決めする方法（ターゲットオブジェクト）およびこのオブジェクトのをコールを実行する方法を与える識別子である。一般に、クライアントプログラムは、動作の開始時に他のプログラムまたは動作中のシステムの核によってオブジェクトハンドルが与えられる。所定のクライアントプログラムが特定のオブジェクトを参照するオブジェクトハンドルを有する場合に、このクライアントプログラムはこのオブジェクトハンドルのコピーを他のクライアントプログラムへ渡すことができる。その第２のクライアントプログラムはオブジェクトにアクセスするためにこのオブジェクトハンドルを用いることができる。
【０００６】
これらオブジェクトハンドルは種々の方法で実現できる。例えば、１つの既知のシステムは２つのコンポーネントから成るオブジェクトハンドルを利用する。コンポーネントＡはサーバのネットワークアドレスであり、コンポーネントＢはこのサーバに関するターゲットオブジェクトの識別子である。オブジェクト呼出しが行われると、クライアントはこのオブジェクト呼出しをコンポーネントＡによって特定されたネットワークアドレスへ送ると共に、コンポーネントＢによって特定された識別子を送る。次に、サーバはコンポーネントＢを用いて呼出されている特定のオブジェクトを識別する。他のシステム、即ちエメラルド（Ｅｍｅｒａｌｄ）システムでは、同様に２つのコンポーネントから成るオブジェクトハンドルを利用する。「オブジェクト識別子」と呼ばれる第１のコンポーネントはそのオブジェクトに対する独特な識別子として機能する整数値である。「フォワードアドレス」と呼ばれる第２のコンポーネントは、オブジェクトが最近まで存在しているネットワークアドレスについてのヒントが包含されている。エメラルドクライアントがオブジェクトと通信を所望する場合には、このオブジェクトの現在のネットワークアドレスを決定する必要がある。１９８８年発行でＡＣＭ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍｓの「  Ｆｉｒｅ−Ｇｒａｉｎｅｄ  Ｍｏｂｉｌｉｔｙ  ｉｎ  ｔｈｅ  Ｅｍｅｒａｌｄ  Ｓｙｓｔｅｍ」の第１０９−１３３頁、Ｅｒｉｃ  Ｊｕｌ、Ｈｅｎｒｙ  Ｌｅｖｙ，  Ｎｏｒｍａｎ  ＨｕｔｃｈｉｎｓｏｎおよびＡｎｄｒｅｗ  Ｂｌａｃｋ  著を参照のこと。他のシステムでは、これらオブジェクトハンドルに対して他の種々のフォーマットを利用している。これらオブジェクトハンドルは、本明細書では、「シンプルオブジェクトハンドル」として特徴付けられると共に、これら種々のフォーマットは、以下に説明してあるように、本発明とは無関係である。
【０００７】
これら「シンプルオブジェクトハンドル」は、分散型システムによってソフトウェア「キャッシング」の完璧な利益が得られるようにするためには、適当なものではない。システムの性能を改善するために「ソフトウェアキャッシュ」が多くのオペレーティングシステムに利用されている。例えば、ファイルキャッシングは、ディスクブロックの内最も最近にアクセスしたもののいくつかをメインメモリ中に保存することによって実現される。ファイルキャッシングは同じデータをディスクからフェッチするときより５〜１０倍も速く提供することができる。このソフトウェアキャッシングは、分散型システムにおいても同様の効率が得られる。このキャッシング技術を利用して、クライアントはこのサーバと直接通信しせずに、むしろキャッシュマネージャプログラムと通信する。このキャッシュマネージャプログラムは、一般に、それ自身用のマシーンで動作するものである。このキャッシュマネージャは、サーバの状態の一部分を反映させた内部状態を維持するように実行するので、キャッシュマネージャが、このサーバと通信する必要性なく、クライアントのリクエストに応答することができる。この技術によって、実行されるべきクライアントのオペレーションのための時間を減少させることができ、サーバによって実行すべきオペレーションの数も減少できる。
【０００８】
【発明が解決しようとする課題】
このようなソフトウェアキャッシングをオブジェクト指向型分散型システムで実現でき、ここではオブジェクトを利用してキャッシングが実行される。しかしながら、「シンプルオブジェクトハンドル」の限定条件のために、クライアントマシーンレベルでのキャッシングの利益が、或る状況の下ではなくなることがある。例えば、１つのマシーンで動作しているクライアントプログラムによって、「シンプルオブジェクトハンドル」を別のマシーンで動作している他のクライアントプログラムに送った場合は、いつでも問題が生じる。この問題点については後述する詳細な説明中に開示されている。一般に、第１のプログラムを利用していたオブジェクトハンドルが第１プログラムのマシーン上のキャッシュマネージャに対するポインタであり、ターゲットオブジェクト自身に対するポインタでは無いために、この問題が生じる。すなわち、この第１プログラムがそのオブジェクトハンドルを他のマシーンのプログラムに渡した場合に、受けとったプログラムは、このオブジェクトハンドルが何処を指示しているか知ることができない。このような状況の下では、以下の理由により非効率が発生してしまう。その理由は、ターゲットオブジェクトのオペレーションの受信中のプログラムの呼出しによって、受信中のプログラムのマシーンのキャッシュマネージャを呼び出すか、またはむしろ、オブジェクトハンドルを受信中のプログラムへ送信したプログラムのマシーンにおけるキャッシュマネージャの呼び出しが行われる。この不都合は状況によってローカルマシーンキャッシングによる利益が完全に無効になる。本発明はこのような問題点を、受信中のプログラムにターゲットオブジェクトに対する追加的な参照を与える送信中のプログラムを持つことによって解決するものである。
【０００９】
従って、本発明の目的は、オブジェクト指向型の分散型コンピュータシステムにおいて、ソフトウェアキャッシングサービスを可能な限り効果的に利用できる手段を提供することである。
【００１０】
【課題を解決するための手段】
従って、本発明によれば、増大されたオブジェクトハンドル（実施例中では、「拡張されたキャシャブルハンドル」と呼ぶ）を有する方法および装置を用意している。この拡張されたオブジェクトハンドルによってクライアントに以下の能力が得られる。即ち、クライアントはそれ自身のマシーンで動作させているキャッシュマネージャを自動的に選択できる（必要に応じて選択する）。また、このマシーンが、異なった種類のオブジェクトをキャッシュ処理する特定化する数種類のキャッシュマネージャを有するならば、この拡張されたキャシャブルハンドルは、ターゲットオブジェクトの実際の特性に基づいて、キャッシュマネージャの自動選択が実行できる。ローカルキャッシュマネージャが利用できない場合には、受信中のプログラムはターゲットオブジェクトに直接アクセスできる能力を有し、これは送信中のプログラム用のマシーンに対して参照作業を行わないでも実現する。
【００１１】
また、本発明によれば、クライアントプログラムに、キャッシュマネージャおよびターゲットオブジェクトに対する参照が包含されている拡張されたオブジェクトハンドルを受信するような方法が与えられている。また、受信中のクライアントプログラムには、この拡張されたオブジェクトハンドルを変更できる能力が与えられている。すなわち、これを受信したキャッシュマネージャ参照を、受信中のプログラムのマシーン上のローカルマネージャに対する参照で差替えるか、またはターゲットオブジェクト自身に対する参照で差替えるかによって変更できる。このことによって、受信中のクライアントプログラムに、変更した拡張型のオブジェクトハンドルを利用できる能力が与えられ、これによりターゲットオブジェクトのオペレーションを効率的に呼び出すことができる。
【００１２】
本発明の一実施例においては、前述した増大されたオブジェクトハンドルは拡張されたキャッシャブルハンドルと呼ばれており、このハンドルにはターゲットオブジェクトに対する参照が包含されており、このターゲットハンドルはバックハンドルと呼ばれ、更に、追加の参照が包含されている。これら追加の参照はフロントハンドルおよびキャッシュサービスネームと呼ばれる。この拡張されたキャッシャブルハンドルを受信するクライアントプログラムは、ローカルマシーンネーミング（名称化）サービスを利用して、この拡張されたキャシャブルハンドルのキャッシュサービスネーム部分を、このマシーン上のキャッシュマネージャ（即ち、「ローカル」キャッシュマネージャ）上にマッピングする。このローカルキャッシュマネージャは、拡張されたキャッシャブルハンドルのバックハンドル部分によって表示されたターゲットオブジェクトの種類をキャッシングするために有効なものである。次にこのクライアントプログラムはこのバックハンドルを識別したキャッシュマネージャに与えると共に、キャッシュマネージャがそのためのキャッシングサービスを与えるように要求する。このキャッシュマネージャがそのようなサービスを提供できる場合に、キャッシュマネージャ中のローカルオブジェクトを参照するハンドルを戻すようになり、更に、クライアントプログラムは、これを新規なフロントハンドルとして利用する。次に、このクライアントプログラムによって利用するための新規な拡張型キャッシャブルハンドルを構築する。これはバックハンドルとキャッシュサービスネームとを組合わせることによって実現し、これは元来、上述の新規なフロントハンドルを受信する。キャッシュマネージャが識別されたり、または識別されたキャッシュマネージャがこのキャッシングサービスを実行することを拒否した場合、このクライアントプログラムは、この新規な拡張型キャシャブルハンドルを、単にバックハンドルをフロントハンドルにコピーするだけで構築する。
【００１３】
また、他の実施例によれば、この拡張されたオブジェクトハンドルを「シンプルキャッシャブルハンドル」と呼んでいる。このシンプルキャッシャブルハンドルにおいて、ターゲットオブジェクトハンドルをバックハンドルと称し、更に、フロントハンドルと称する僅か１つの追加の参照が存在する。この実施例では、この受信号のクライアントプログラムは、それ自身のマシーン上で適当なキャッシャブルマネージャを選択する固有の能力を持つ必要がある。これに関して、この選択作業は、本例においては自動的に実行される。しかしながら、このローカルキャッシュマネージャを選択した実施例においては、これらフロントおよびバックハンドルを利用した後続の手順が、他の実施例で同一なものとなる。
【００１４】
【実施例】
表記法および用語集
以下の詳細な説明を、コンピュータまたはコンピュータのネットワーク上で実行されるプログラム手順によって表現することができる。これらの手順の記載および表現方法は、当事者によって利用される手段であり、この手段によって作業の本質を他の当業者に最も効果的に伝えることができる。
一般、本明細書において、手順としては、所望の結果を導出するためのステップの自己完結型のシーケンスが考えられる。これらステップは、物理量の物理的な操作が必要となるステップである。通常、必ずしも必要ではないが、これら物理的な量は、電気的または磁気的信号の形態をとり、これら信号は記憶したり、伝送したり、結合したり、比較したり、または操作したりできるものである。通常の利用法の理由により、原理的には、これら信号をビットや、値や、エレメントや、記号や、文字や、期間や、数量等として参照することが望ましいものである。しかしながら、これらすべて用語および同様な用語を適当な物理的な量と組合わせて用いるべきで、および単にこれら量に与えられた便利なラベルとなる。
【００１５】
更に、実行された操作を場合によっては、人間のオペレータによって行われる精神的なオペレーションである例えば加算や比較のような用語で呼ばれる。人間のオペレータは必要ではなく、多くの場合において好ましくない。本明細書で発明の一部として記載したオペレーションは全てマシーンオペレーションである。本発明のオペレーションを実行するための有用なマシーンには、汎用のディジタルコンピュータや類似のデバイスが包含されている。
また、本発明は、これらオペレーションを実行する装置に関するものである。本発明の装置は、所望の目的のために特に構成されており、これには、汎用のコンピュータが具備されている。このコンピュータは、これに記憶されたコンピュータプログラムによって選択的に作動すると共に変更されるものである。本例で表された手順は、特定のコンピュータや他の装置に固有のものではない。本例で記載された技術に基づいて書かれたプログラムで、種々の汎用マシーンを利用できる。または、所望の方法のステップを実行するための更に特別設計された装置を構築することによって、更に便利なものとなる。これらマシーンの種々のものに必要な構成は、以下の記載から明らかとなる。
以下の記載では、ローカルマシーンキャッシングの種々の利点を改善することができる方法によって、オブジェクトと通信できる能力と、オブジェクトを参照して利用する能力とを有するクライアントプログラム間の装置および方法が説明されている。以下の記載では、説明のために特殊なデータおよび構造が開示されており、これによって本発明の全体の理解を助けている。しかしながら、本発明を特別な詳しい情報なしで実現できることは当業者にとって明白である。また他の実施例では、周知のシステムがブロックダイヤグラムや概略的な形態で示されており、これによって不必要に本発明を不明確なものにしないようにする。
【００１６】
先ず、図１のブロックダイヤグラムに、分散型コンピュータシステムの代表的なクライアント／サーバが開示されている。ここではクライアントとサーバとはそれぞれ異なったマシーンに存在しており、これら両者は、オブジェクトを利用して実行されるキャッシングを採用している。サーバプログラム１２は「オブジェクト−Ｏ２」１４を実行するもので、このオブジェクト−Ｏ２は「ハンドル−Ｈ２」１６によって識別される。また、キャッシュマネージャ２２は「オブジェクト−Ｏ１」２４を実行し、これは「ハンドル−Ｈ１」２６によって識別される。このキャッシュマネージャ２２の独特の義務は、オブジェクト−Ｏ２    １４のキャッシングを支持することである。キャッシングの利益を確保しながら、このオブジェクト−Ｏ２にアクセスを望むクライアントは、キャッシュマネージャ２２を指示するハンドル−Ｈ１２６を利用する。クライアントによってこのハンドル−Ｈ１２６のオペレーションを発行する場合に、これがキャッシュマネージャ２２中のオブジェクト−Ｏ１２４に伝送される。次に、このキャッシュマネージャ２２は、それ自身のオペレーションを実行するか、またはそのハンドル−Ｈ２    １６を利用してリクエストを、サーバプログラム１２中に存在しているオブジェクト−Ｏ２１４へ転送する。クライアントプログラムＡ２８は、このハンドル−Ｈ１２６のコピーをクライアントプログラムＢ３０に渡すことができ、またこれらクライアントプログラム２８と３０とは、オブジェクトハンドル−Ｈ１２６を利用して、オブジェクトをアクセスする。しかしながら、それぞれ異なったマシーンに存在するクライアントプログラムが、同一のハンドル−Ｈ１２６を用いて、同一のオブジェクトをアクセスしようとする場合に複雑になる。
【００１７】
図２を参照しながら説明する。マシーンＭ１２０のクライアントプログラム２８、３０が、そのハンドルＨ１２６をマシーンＭ３３４のクライアントプログラムＣ３２に渡すと、マシーンＭ３３４のクライアントプログラムＣ３２はマシーンＭ１２０のキャッシュマネージャ２２を利用する。この状況では、キャッシングの種々の利点を損なうようになると共に、クライアントプログラムＣ３２がサーバプログラム１２を直接アクセス出来る場合よりも、実際上能率が低下してしまう。マシーンＭ３３４のクライアントプログラムは、常時、マシーンＭ３３４上を動作するキャッシュマネージャを通過することが好ましいものである。
【００１８】
本発明の以下の記載にはこの問題点に対する２つの解決法が開示されている。第１の解決法の一つの実施例は、オブジェクトハンドルを受信するクライアントプログラムが、自分自身のマシーンの何れのキャッシュマネージャを各オブジェクト用に利用するかを前もって知った場合に応用するものである。本発明の他の好適な実施例では、適当なキャッシュマネージャの自動的な選択が実行できるようにこの第１解決法を拡大する。これら２つの解決法において、利用されたシンプルオブジェクトハンドルの正確なフォーマットは、本発明に対しては重要なことではない。両方の解決メカニズムは、どのような種類のシンプルオブジェクトハンドルかのシステムで常に利用されているかに基づくものである。例えば、エメラルドシステムにおいては、シンプルオブジェクトハンドルがエメラルドの整数識別子および前進アドレスを含み、一方、上述した他の例では、このシンプルオブジェクトハンドルがネットワークアドレスや関連したオブジェクト識別子を含む。
【００１９】
この第１の解決法には、「シンプルキャッシャブルハンドル」と称される新しい種類のオブジェクトハンドルが設定されており、このシンプルキャッシャブルハンドルは、シンプルオブジェクトハンドルより多くの情報を含むように設計されている。この結果、適切なキャッシングが利用できる。シンプルキャッシャブルハンドルの表示は２つの部分より成り、これら２つの部分は、それら自身がシンプルオブジェクトハンドルである。このシンプルオブジェクトハンドルの第１部分が「フロントハンドル」と呼ばれている。通常、このフロントハンドルによって、ローカルマシーン上のキャッシュマネージャ（ローカルキャッシュマネージャと称す）を指示する。また、このシンプルキャッシャブルハンドルの第２部分は、「バックハンドル」と呼ばれており、これは下に存在するサーバオブジェクト（ターゲットオブジェクト）を常時指示する。また、図３では、典型的なクライアント・サーバ構造が図示されており、ここでは、クライアントプログラムＡとＢ２８、３０がマシーンＭ１３０に存在し、クライアントプログラムＣ３２がマシーンＭ３３４に存在し、さらに、サーバプログラム１２がマシーンＭ２１０に存在している。この図示の例において、クライアントプログラムＡとＢ２８、３０が表されており、各々には、シンプルキャッシャブルハンドル５８、５９が設けられている。開示したシンプルキャッシャブルハンドル５８、５９には、フロントハンドル６０、６１とバックハンドル５２、５３とが設けられている。これらフロントハンドル６０、６１はキャッシュマネージャＣ１５４中のオブジェクトＯ１５６を指示し、このキャッシュマネージャはバックハンドル５２を利用してマシーンＭ２１０上のサーバプログラム１２中に位置するオブジェクトＯ２５０を指示する。また、クライアントプログラムＡとＢ２８、３０は、これらのシンプルキャッシャブルハンドルのバックハンドル５２、５３部分を利用して、必要に応じてオブジェクトＯ２５０を直接指示する。マシーンＭ３３４上のクライアントプログラムＣ３２はシンプルキャッシャブルハンドル６６をも有する。しかしながら、シンプルキャッシャブルハンドル６６のフロントハンドル６８は、マシーンＭ１２０のクライアントプログラムＡ、Ｂ２８、３０に表されたシンプルキャッシャブルハンドル５８、５９のフロントハンドル６０、６１とは異なるものである。このシンプルキャッシャブルハンドル６６のフロントハンドル６８は、マシーンＭ３３４上に位置したキャッシュマネージャＣ３６２中のオブジェクトＯ３６４を指示する。このようなシンプルキャッシャブルハンドルを利用した例において、通常、シンプルキャッシャブルハンドル上のオペレーションを、フロントハンドルのオペレーション内に向けている。１つのプログラム（受信用プログラムと称す）が、他のプログラムからシンプルキャッシャブルハンドルを受信する状況の下では、以下の動作が行われる。
【００２０】
１．フロントハンドルをチェックして、このハンドルが、前述した受信用プログラムが設置してあるマシーンと同一のマシーン上のキャッシュマネージャを指しているかどうかを決定する。もし、指していれば、受信したシンプルキャッシャブルハンドルのフロントハンドルを利用すると共に、これ以上チェックを行わず、さらに残りの動作がスキップされる。
【００２１】
２．フロントハンドルが、受信用のプログラムが設置されたマシーンと同一のマシーンのキャッシュマネージャを指示しない場合には、このマシーンのキャッシュマネージャを選択する（即ち、ローカルキャッシュマネージャである）。この選択動作は、受信中のオブジェクトハンドルとは独立した静止情報に基づいて実行しなければならない。例えば、ローカルキャッシュマネージャをオブジェクトの予期されたタイプのものに基づいて選択したことが考えられる。
【００２２】
３．選択されたローカルキャッシュマネージャがシンプルキャッシャブルハンドルのバックハンドル部分に与えられると共に、受信用プログラムに対するキャッシングを実行するように要求する。
【００２３】
４．この選択されたローカルキャッシュマネージャによって、キャッシュマネージャ中のローカルオブジェクトを参照するハンドルが戻されると共に、このハンドルはこのマシーン上のシンプルキャッシャブルハンドル中のフロントハンドルとなる。このローカルキャッシュマネージャは、下に存在するオブジェクトを参照する以前に創作されたオブジェクトを再び利用することができ、または、受信用プログラム向きのこのキャッシュオブジェクトを創作することもできる。
【００２４】
５．次に、この受信用プログラムによって新たなシンプルキャッシャブルハンドルが構築され、このハンドルはローカルキャッシュマネージャプログラムからのフロントハンドルと、受信用プログラムへ送信したバックハンドルとから構成される。
【００２５】
また、上述のステップ２〜５まで、すべて失敗すればこの受信用プログラムは、バックハンドルを単にフロントハンドルとして使用する。従って、所定のマシーンが適当なキャッシュマネージャを有しない場合、またはこのキャッシュマネージャが協動しない場合には、受信用プログラムは、以下の条件であったとしても下に存在するサービスと未だ通信することが可能となる。即ち、ローカルマシーン上にキャッシングの利益が存在しないのみならず、図２で示したように送信用マシーン上にキャッシュマネージャを不必要に使うことによって生じる欠点が存在しなくても可能となる。この受信用プログラムによって、シンプルキャッシャブルハンドルを他のアプリケーションプログラムへ再び送信した場合に、このアプリケーションは、それ自身のマシーンの適当なキャッシュマネージャとコンタクトを取る機会を再び持つようになる。
【００２６】
要約すると、シンプルキャッシャブルハンドルは、常に、同一の下側に存在するオブジェクトを参照するように変更されるオブジェクトのカテゴリであるが、これらのハンドルを他のアプリケーションプログラムへ送信した時は、そのハンドルを異なったキャッシュマネージャを利用するように再び仕向けられる。フロントハンドルは変更可能であるが、バックハンドルは一定のままである。
【００２７】
上述した本発明の択一的な実行には、これには、どのキャッシュマネージャがそれを利用することを望んでいるかを決定するシンプルキャッシャブルハンドルを受信するプログラムを必要とする欠点がある。しかしながら、マシーンには、異なった種類のオブジェクトを、オブジェクトの位置または、利用しているキャッシングアルゴリズムに基づいて特定化している数種類のキャッシュマネージャが設けてある。従って、本発明の一実施例では、「拡張されたキャッシャブルハンドル」と称する新しい種類のオブジェクトハンドルを採用している。この新しいオブジェクトハンドルによって、ローカルキャッシュマネージャの自動的な選択が、ターゲットオブジェクトの実際の特性に基づいて実行できるように設計されている。
【００２８】
この拡張されたキャッシャブルハンドルの表示は３つの部分より構成されており、これら部分の２つは前述したシンプルオブジェクトハンドルである。拡張されたキャッシャブルハンドルの第１部分は、「フロントハンドル」と呼ばれ、これは通常、ローカルマシーン上のキャッシュオブジェクトを指示する。また、このハンドルの第２部分は、「バックハンドル」と呼ばれ、これによって事実上下側に存在するオブジェクト（ターゲットオブジェクト）を指す。また、この拡張されたキャッシャブルハンドルの第３部分は、「キャッシュサービスネーム」または、単に「キャッシュネーム」と呼ばれる。このキャッシュネームによって、キャッシングサービスの種類を識別し、このサービスによってこの特定のオブジェクト用のキャッシングをどのように管理するかを理解する。前述したシンプルキャッシャブルハンドルの場合のように、拡張されたキャッシャブルハンドルは、転送中に変更できるオブジェクトハンドルのカテゴリであるので、その結果、これら拡張されたキャッシャブルハンドルは、常時、同一の下側に存在するオブジェクトを参照するようになるが、これらハンドルを他のアプリケーションプログラムへ転送した時は何時でも、異なったキャッシュマネージャを利用するために再び仕向けることができる。このフロントハンドルを変更できるが、バックハンドルおよびキャッシュサービスネームは一定のままである。
【００２９】
一実施例において、拡張されたキャッシャブルハンドルが、下側に存在するオブジェクトが創作されたときに、サーバプログラムによって創生される。キャッシュサービスネームおよびバックハンドルがサーバプログラムによって規定され、またこのサーバプログラムによって、当所からフロントハンドルがバックハンドと等価となるようにセットされる。また、一実施例において、各マシーンによってネーミングサービスが得られる。このネーミングサービスによってキャッシュサービスネームからキャッシュマネージャプログラムへプログラムがマッピングされる。このキャッシュマネージャプログラムは、このマシーン上で動作されると共に、キャッシングの所定のスタイルを支持することが可能となる。キャッシュマネージャプログラムが開始されると、これらプログラム自身がこのネーミングサービスと一緒に、キャッシュサービスネームを特定のキャッシュマネージャプログラムに関連付ける用法で登録される。この結果、マシーンネーミングサービスを利用することによって、キャッシュマネージャプログラムをこのマシーンで動作するクライアントプログラムにより見つけることが可能となる。これら拡張されたキャッシャブルハンドルの利用が図４に表示されている。
【００３０】
ここで、図４を参照しながら、クライアント・サーバの代表的な構成を説明する。ここでは、クライアントプログラムＡとＢ２８、３０がマシーンＭ１２０に存在し、クライアントプログラムＣ３２がマシーンＭ３３４上に存在し、更にマシーンプログラム１２が、マシーンＭ２１０に存在する。この図４では、各々が拡張されたキャッシャブルハンドル７０、７１を有するクライアントプログラムＡ、Ｂ２８、３０が図示されている。これら拡張されたキャッシャブルハンドル７０、７１はフロントハンドル６０、６１と、バックハンドル５２、５３と、キャッシュサービスネーム（キャッシュネーム）７６、７７とを有している。これらキャッシュネーム７６、７７はクライアントプログラムＡ、Ｂ２８、３０によって利用されて、ネーミングサービス８０からキャッシュマネージャＣ１５４へのポインタを得ていた。次に、クライアントプログラムＡとＢ２８、３０はキャッシュマネージャＣ１５４と通信しており、これはバックハンドル５２、５３を送信し、フロントハンドル６０、６１を応答としてそれぞれ受信する。これらフロントハンドル６０、６１によってキャッシュマネージャＣ１５４中のオブジェクトＯ１５６を指示する。このマネージャはバックハンドル５１を利用して、マシーンＭ２１０のサービスプログラム１２に存在するオブジェクトＯ２５０を得ている。また、クライアントプログラムＡ、Ｂ２８、３０は、それらの拡張されたキャッシャブルハンドルのバックハンドル５２、５３部分を用いて、必要に応じてオブジェクトＯ２５０を直接指示することができる。マシーンＭ３３４のクライアントプログラムＣ３２は、また拡張されたキャッシャブルハンドル７４を有している。しかしながら、このハンドル７４のフロントハンドル６８は、マシーンＭ１２０のクライアントプログラムＡとＢ２８、３０に示した拡張されたキャッシャブルハンドル７０、７１のフロントハンドル６０、６１とは異なる。拡張されたキャッシャブルハンドル７４のフロントハンドル６８は、マシーンＭ３３４に存在するキャッシュマネージャＣ３６２におけるオブジェクトＯ３６４を指示する。このフロントハンドル６８は、クライアントプログラムＣ３２によって以下の方法によって得られた。即ち、最初、マシーンＭ３３４上のネーミングサービス８２を利用して、キャッシュサービスネーム７９をローカルキャッシュマネージャＣ３６２へのポインタに変える。次に、プログラムＣ３２とキャッシュマネージャＣ３６２とを、バックハンドル５５を送信すると共に、フロントハンドル６８を応答として受信することにより通信していた。
【００３１】
拡張されたキャッシャブルハンドルを利用した例において、通常、この拡張されたキャッシャブルハンドルのオペレーションは、フロントハンドルのオペレーションに向けられる。図５において、プログラムが他のプログラム  １００からの拡張されたキャッシャブルハンドルを受信（即ち、受信用プログラム）する状況の下で、以下の動作が実行される。
【００３２】
１．フロントハンドルをチェックして、このハンドルがステップ  １０２で受信用プログラムが載っているマシーンと同一マシーン上のキャッシュマネージャを指示するかどうかを決定する。ステップ１０４で指示（ＹＥＳ）であれば、受信した拡張型キャッシャブルハンドルのフロントハンドルを用いると共に、これ以上のテストを行わず、残余の動作をスキップする。
【００３３】
２．若し、このフロントハンドルが同一マシーン  １０６のキャッシュマネージャを指示しない（ＮＯ）場合には、受信したプログラムはそのマシーンに関するネーミングサービスを利用して、拡張されたキャッシャブルハンドルのキャッシュサービスネーム部分をローカルキャッシュマネージャに対する参照部分にマッピングする。このローカルキャッシュマネージャは、この拡張型キャッシャブルハンドル  １０８によって表されたオブジェクトの種類を扱うように設置されている。
【００３４】
３．このような参照がステップ  １１２で利用できる場合に、次に、受信用プログラムによって、表示されたローカルマネージャがこの拡張型キャッシャブルハンドルのバックハンドル部分と一緒に表されると共に、このキャッシュマネージャがステップ  １１４で受信用プログラム用のキャッシングを行うように要請する。
【００３５】
４．このローカルキャッシュマネージャがそのようなサービスを提供することに同意した場合  １１６に、このキャッシュマネージャはハンドルを戻す。このハンドルによって、受信用プログラムに対するキャッシュマネージャ中のローカルオブジェクトを参照する。このプログラムは、それ自身の拡張されたキャッシャブルハンドル中にこの参照事項をフロントハンドルとして利用するようになる。このキャッシュマネージャによって、下側に存在するオブジェクトを参照する以前に創作されたオブジェクトを再度利用することができ、または、このキャッシュオブジェクトを受信用プログラム用に創作することもできる。
【００３６】
５．次に、受信用プログラムによって、キャッシュマネージャから得たフロントハンドルをバックハンドルおよびキャッシュサービスネームに追加する。これらバックハンドルおよびキャッシュサービスネームは受信用プログラムへ送信されており、これにより訂正された拡張型キャッシャブルハンドル表示１２２を構成する。
【００３７】
６．若し、この手順のステップ３または４で、ＮＯならば、この受信用プログラムは、このバックハンドルを単に、フロントハンドル１２０として利用する。次に、所定のマシーンが適当なキャッシュマネージャ１１０を有しない場合、またはこのキャッシュマネージャが協動作業しなければ、受信用プログラムは依然として下側のオブジェクトと通信可能となる。これは、ローカルキャッシングの利益を損なうのみならず、他のマシーンと不必要に通信する不利益がなくても行う。受信用プログラムによって、この拡張型キャッシャブルハンドルが他のアプリケーションプログラムへ送信されると、このアプリケーションプログラムは、それ自身のマシーン上の適当なキャッシュマネージャとコンタクトを取る機会に恵まれる。
【００３８】
拡張型キャッシャブルハンドルを利用した実施例およびシンプルキャッシャブルハンドルを利用した他の実施例の両者において、要求があった場合には、何時でもこれらのハンドルのすべてのコンポーネントを送信する。また拡張型キャッシャブルハンドルまたはシンプルキャッシャブルハンドルのいずれか一方を用いる本発明の他の実施例では、フロントハンドルの送信を回避することができる。この場合、受信用プログラムは常時、適当なフロントハンドルを見つける責任を負うものである。これは、上述した手順のいずれかのステップ１をスキップすることにより達成される。
【００３９】
上述したように、本発明を好適な実施例を利用して説明したが、本発明は上述した実施例のみに限定されず、種々の変更を加え得ることは明白である。従って、上述の記載によって本発明の趣旨が限定されるものでなく、請求の範囲に記載された技術的思想に基づいて決められるものである。
【図面の簡単な説明】
【図１】従来のシンプルオブジェクトハンドルを利用したオブジェクト指向型の分散型システムのソフトウェアキャッシング方法を示す線図。
【図２】従来のシンプルオブジェクトハンドルを用いた場合の問題点を示す線図。
【図３】本発明のシンプルキャッシャブルハンドルを利用した分散型システムを示す線図。
【図４】同じく、拡張されたキャッシャブルハンドルを利用した分散型システムを示す線図。
【図５】本発明の一実施例の動作を示すフローチャート。
【符号の説明】
１２サーバプログラム
１４、２４  オブジェクト
１６、２６、５８、５９、６０、６１ハンドル
２２キャッシュマネージャ
２８、３０、Ｃ３２クライアントプログラム
１０、２０、３４  マシーン
６２ローカルキャッシュマネージャ
【図１】
0003621432.tif 000002
【図２】
0003621432.tif 000003
【図３】
0003621432.tif 000004
【図４】
0003621432.tif 000005
【図５】
0003621432.tif 000006