(57)【特許請求の範囲】
【請求項１】
オブジェクトと、該オブジェクトをクライアント装置に応じた実行コードに変換するためのトランスレータとを配信するサーバから、前記オブジェクトと前記トランスレータとを受信するクライアント装置であって、
受信した前記オブジェクトが実行可能であるか否かを判断する判断手段と、
前記判断手段が実行可能と判断した場合に、受信した前記トランスレータにより前記オブジェクトを実行コードに変換する変換手段として機能し、得られた実行コードによりその実行コードに応じた動作を行う動作実行手段として機能する実行処理手段と、
前記判断手段が実行不可と判断した場合に、前記サーバに対して他のクライアント装置に対応したトランスレータの配信を要求し、該要求に対し配信されて受信したトランスレータを前記オブジェクトと共に前記他のクライアント装置に配信する移管処理手段とを有する、
ことを特徴とするクライアント装置。
【請求項２】
オブジェクトと移管処理用実行コードとを配信するサーバから、前記オブジェクトと移管処理用実行コードとを受信するクライアント装置であって、
受信した前記オブジェクトが実行可能であるか否かを判断する判断手段と、
前記判断手段が実行可能と判断した場合に、受信した前記オブジェクトに応じた動作を行う動作実行手段として機能する実行処理手段と、
前記判断手段が実行不可と判断した場合に、前記移管処理用実行コードにより、配信された前記オブジェクトと前記移管処理用実行コードとを他のクライアント装置に配信する移管処理手段として機能する移管処理手段とを有する、
ことを特徴とするクライアント装置。
【請求項３】
オブジェクトと、該オブジェクトをクライアント装置に応じた実行コードに変換するためのトランスレータと、移管処理用実行コードとを配信するサーバから、前記オブジェクトと前記トランスレータと前記移管処理用実行コードとを受信するクライアント装置であって、
受信した前記オブジェクトが実行可能であるか否かを判断する判断手段と、
前記判断手段が実行可能と判断した場合に、受信した前記トランスレータにより前記オブジェクトを実行コードに変換する変換手段として機能し、得られた実行コードによりその実行コードに応じた動作を行う動作実行手段として機能する実行処理手段と、
前記判断手段が実行不可と判断した場合に、前記移管処理用実行コードにより、前記サーバに対して他のクライアント装置に対応したトランスレータの配信を要求し、該要求に対し配信されて受信したトランスレータを前記オブジェクト及び前記移管処理用実行コードと共に前記他のクライアント装置に配信する移管実行手段として機能する移管処理手段とを有する、
ことを特徴とするクライアント装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、分散配置されたクライアント装置に、処理の分散などを目的にオブジェクトを配信するためのオブジェクト配信方式に係り、特に、オブジェクトを受取ったクライアント装置が自身の都合等により処理できないような場合に、他のクライアント装置に処理を移管することができるクライアント装置（以下、クライアントという）に関する。
【０００２】
【従来の技術】
分散処理システムは、ひとつのコンピュータで処理してきたジョブを複数のコンピュータに分散させて処理することにより、１台当りの負荷低減を図るものであり、ネットワークの発展に伴い、クライアント／サーバ・システム（Ｃ／Ｓシステム）などが登場し、処理効率の向上がもたらされた。
【０００３】
一方で、パソコン機器の高機能化に伴って、クライアントに様々な機能を持たせた結果、アプリケーションの配布や維持等の管理コストが増大するなど、クライアントの肥大化が問題になってきた。また、システムのオープン化により、異なるプラットフォーム同士が接続して処理を行う必要が生じ、プラットホーム毎にアプリケーションを開発しなければならないなど、アプリケーションの配布や維持のみならず、アプリケーションの開発コストの増大も問題となってきた。
【０００４】
そこで、アプリケーション・サーバによる３階層Ｃ／Ｓシステム、Ｗｅｂサーバを利用したイントラネットやエクストラネット、クライアント・パソコンの運用コスト削減を意識したシン・クライアント(Thin Client) などのシステム形態が登場し、また、異なるプラットホーム間を連携するために、ＶＰ(Virtual Processor＝仮想プロセッサ）アセンブリ、ＨＴＭＬ(hypertext markup language) 、Ｊａｖａなど、プラットホームに依存しない処理コードが利用されている。
【０００５】
更にまた、複数のコンピュータに配置したオブジェクト（データとこれを操作する手続きとを一体化させたもの）群が、サーバとクライアントの関係を動的に形成しながら連携して、一つのシナリオに沿ったアプリケーションを実行する分散オブジェクトという概念が注目されている。
【０００６】
このような技術により、プラットホーム毎にアプリケーションを開発したり、プラットホーム毎に異なるアプリケーションを配布したりする手間は軽減された。しかし、アプリケーションをクライアント上で動作させるためには、クライアントが属するプラットホームに応じたネイティブな実行コードに変換する必要があり、そのためのコンパイラ、インタプリタ、ブラウザなどのトランスレータがクライアント毎に必須である。これらトランスレータは各プラットホーム毎に開発して、各クライアントに配布する必要があり、また、バージョンアップ等の際には各クライアントに再配布しなければならない。
【０００７】
そこで、このトランスレータの配布という問題を解決するために、図３に示すような分散オブジェクトの配信方式が考えられる。
【０００８】
オブジェクトを提供するサーバ１と、提供されたオブジェクトを実行するクライアント２ａ、クライアント２ｂ、・・・、クライアント２ｎが、ネットワーク等で接続されている。サーバ１は、オブジェクト１０ａにクライアント２ａ用のトランスレータ２０ａを添付して、クライアント２ａに配信する。同様に、クライアント２ｂにはオブジェクト１０ｂにトランスレータ２０ｂを添付して配信し、クライアント２ｎにはオブジェクト１０ｎにトランスレータ２０ｎを添付して配信する。
【０００９】
クライアント２ａは、受信した配信オブジェクト１０ａをトランスレータ２０ａでネイティブな実行コード１１ａに翻訳して実行する。同様に、クライアント２ｂは、オブジェクト１０ｂをトランスレータ２０ｂで翻訳して実行し、クライアント２ｎは、配信オブジェクト１０ｎをトランスレータ２０ｎで翻訳して実行する。
【００１０】
このように、必要に応じて、オブジェクトにトランスレータを添付して配信することによって、異なるプラットホームを組み合せた分散オブジェクト・システムにおいても、トランスレータを配布する手間を軽減でき、また、クライアントはトランスレータを常時保持する必要がなく、クライアントのスリム化などの効果も期待できる。
【００１１】
また、オブジェクトのコードをネイティブな実行コードに翻訳するだけでなく、例えば、圧縮したオブジェクトを復元するための処理や、暗号化したオブジェクトを複合化するための処理などを、トランスレータに含有させておくこともできる。
【００１２】
【発明が解決しようとする課題】
このような従来の分散オブジェクト・システムでは、独立して動作する各オブジェクトの一貫性をどのように確保するかという問題がある。
【００１３】
例えば、処理の途中で予期せぬ障害等が発生して、或るクライアントで処理が中断したり、処理時間が予想以上にかかったりすると、処理全体の足並みが乱れ、収集がつかなくなる恐れもある。
【００１４】
サーバからクライアントにオブジェクトを配信する時点で異常が確認できれば、サーバ側で別のクライアントを選択しなおす、などの対応も可能であるが、一旦クライアントがオブジェクトを受取ってから処理不能などの事態に陥ってしまうと、そのままサーバとの通信が途絶えてしまうなど、復旧させるのは困難である。
【００１５】
以上に述べたような問題を鑑み、本発明は、何らかの理由でクライアントが受取ったオブジェクトを処理できないような場合に、別の（代替の）クライアントに処理を移管することで、サーバとの通信が途絶えてしまうような事態を回避し、個々のオブジェクトが高速に応答し、且つ、安全に動作することができるクライアント装置を提供することを目的とする。
【００１６】
【課題を解決するための手段】
上記課題を解決するために、本発明に係るオブジェクト配信方式におけるクライアント装置は、以下の特徴を有する。
【００１７】
第１の特徴は、オブジェクトと、該オブジェクトをクライアント装置に応じた実行コードに変換するためのトランスレータとを配信するサーバから、前記オブジェクトと前記トランスレータとを受信するクライアント装置であって、受信した前記オブジェクトが実行可能であるか否かを判断する判断手段と、前記判断手段が実行可能と判断した場合に、受信した前記トランスレータにより前記オブジェクトを実行コードに変換する変換手段として機能し、得られた実行コードによりその実行コードに応じた動作を行う動作実行手段として機能する実行処理手段と、前記判断手段が実行不可と判断した場合に、前記サーバに対して他のクライアント装置に対応したトランスレータの配信を要求し、該要求に対し配信されて受信したトランスレータを前記オブジェクトと共に前記他のクライアント装置に配信する移管処理手段とを有することを特徴とする。
【００１８】
第２の特徴は、オブジェクトと移管処理用実行コードとを配信するサーバから、前記オブジェクトと移管処理用実行コードとを受信するクライアント装置であって、受信した前記オブジェクトが実行可能であるか否かを判断する判断手段と、前記判断手段が実行可能と判断した場合に、受信した前記オブジェクトに応じた動作を行う動作実行手段として機能する実行処理手段と、前記判断手段が実行不可と判断した場合に、前記移管処理用実行コードにより、配信された前記オブジェクトと前記移管処理用実行コードとを他のクライアント装置に配信する移管処理手段として機能する移管処理手段とを有することを特徴とする。
【００１９】
第３の特徴は、オブジェクトと、該オブジェクトをクライアント装置に応じた実行コードに変換するためのトランスレータと、移管処理用実行コードとを配信するサーバから、前記オブジェクトと前記トランスレータと前記移管処理用実行コードとを受信するクライアント装置であって、受信した前記オブジェクトが実行可能であるか否かを判断する判断手段と、前記判断手段が実行可能と判断した場合に、受信した前記トランスレータにより前記オブジェクトを実行コードに変換する変換手段として機能し、得られた実行コードによりその実行コードに応じた動作を行う動作実行手段として機能する実行処理手段と、前記判断手段が実行不可と判断した場合に、前記移管処理用実行コードにより、前記サーバに対して他のクライアント装置に対応したトランスレータの配信を要求し、該要求に対し配信されて受信したトランスレータを前記オブジェクト及び前記移管処理用実行コードと共に前記他のクライアント装置に配信する移管実行手段として機能する移管処理手段とを有することを特徴とする。
【００２０】
第１〜第３の特徴により、クライアント側が、サーバから受取ったオブジェクトを実行可能かどうか判定し、状況に応じて別のクライアントに処理を移管することで、そのままサーバとの通信が途絶えてしまうような事態や処理の遅延等を回避することができる。
【００２１】
また、第１及び第３の特徴により、異なるプラットホームを組み合せた分散オブジェクト・システムにおいても、トランスレータを配布する手間を軽減でき、また、クライアントはトランスレータを常時保持する必要がなくなる。
【００２２】
また、第２及び第３の特徴により、トランスレータだけでなく、他のクライアントへの要請処理をも、サーバから配信するようにしたため、クライアントのリソースを減らす効果も期待できる。更に、常に最新のトランスレータや移管処理を配信できるため、クライアントの維持・管理にかかるコストも低減できる。
【００２３】
【発明の実施の形態】
以下、本発明の実施形態について説明する。
【００２４】
（第１実施例）
図１は本発明に係るオブジェクト配信方式を適用した分散処理システムの一実施例を示す概略図である。サーバ１はクライアントにオブジェクトを配信するオブジェクト・サーバであり、配信されたオブジェクトを実行するクライアント２ａとクライアント２ｂとはそれぞれ異なるプラットホームで構成されている。サーバ１はクライアントに配信するオブジェクト群１０とクライアントに応じたトランスレータ群２０とを有し、クライアントａは後述する他クライアント移管処理４０ａを有している。また、クライアントｂも同様に他クライアント移管処理４０ｂを有している。
【００２５】
図１に示すように、サーバ１は、オブジェクト１０ａにトランスレータ２０ａを添付して配信オブジェクト10aとして、クライアント２ａに配信する（矢印５１）。ここで配信されるトランスレータ２０ａは、あくまでクライアント２ａ用のトランスレータであって、プラットホームが異なるクライアント２ｂ用ではない。
【００２６】
クライアント２ａは自身の状況を判断し、あるいは、配信されたオブジェクト１０ａを解析し、当該オブジェクト１０ａを実行することが可能かどうかを判定する。判定材料としては、例えば、ＣＰＵやメモリなどの資源の使用状況を参照するパフォーマンス・モニターや、処理性能評価(benchmark) 、障害発生の有無などが考えられる。
【００２７】
判定の結果、実行可能であれば、配信されたオブジェクト１０ａを、同じく配信されてきたトランスレータ２０ａで翻訳し、実行した後、処理結果等をサーバ１に返す。
【００２８】
逆に、実行不可能と判定した場合は、クライアント２ａが保有する他クライアント移管処理４０ａを実行する。
【００２９】
先ず、サーバ１に対して別のクライアントのトランスレータを送付してもらうように要請する（矢印５４）。この時、クライアント２ａ自身が、どのクライアントを代替にするか選択した上でサーバ１に要求しても良いし、代替のクライアントの選択をサーバ１に委ね、その選択結果をサーバ１から受け取るようにしても良い。前者の場合はサーバの負荷を低減できるし、後者の場合はクライアントのリソースを低減できる。
【００３０】
クライアント２ａからの要請を受けたサーバ１は、代替のクライアント（ここでは、クライアント２ｂとする）用のトランスレータ２０ｂをクライアント２ａに送付する（矢印５５）。
【００３１】
クライアント２ａはサーバ１から受取ったトランスレータ２０ｂを、先に受取ったオブジェクト１０ａに添付してクライアント２ｂに配信する（矢印５６）。
【００３２】
クライアント２ｂは、先程のクライアント２ａの動作と同様に、自身の状況を判断し、あるいは、配信されたオブジェクト１０ａを解析し、配信されたオブジェクト１０ａを実行することが可能かどうかを判定する。
【００３３】
判定の結果、実行可能であれば、配信されたオブジェクト１０ａを、同じく配信されてきたトランスレータ２０ｂで翻訳し、翻訳済みのオブジェクト１１ａを実行した後、処理結果等（図示せず）をサーバ１に返す。処理結果をサーバ１に返す際には、直接サーバ１に対して処理結果を返すようにしても良いし、一旦クライアント２ａに処理結果を返し、クライアント２ａが改めてサーバ１に処理結果を返すようにしても良い。
【００３４】
クライアント２ｂもまた実行不可能であると判定した場合は、クライアント２ｂが保有する他クライアント移管処理４０ｂを実行し、他の代替クライアントに処理を移管する。
【００３５】
このように、クライアント側が、サーバから受取ったオブジェクトを実行可能かどうか判定し、状況に応じて別のクライアントに処理を移管するようしたことにより、そのままサーバとの通信が途絶えてしまうような事態を回避することができ、処理全体の信頼性が向上し、また、処理の遅延等も回避できることから、個々のオブジェクト応答性も向上する。
【００３６】
オブジェクト実行中に障害等が発生した際には、エラー割込み(error interrupt) などを利用して、他クライアント移管処理４０ａが実行されるようにしても良い。
【００３７】
本実施例では、サーバがトランスレータをオブジェクトに添付して、クライアントに配信する処理、即ち、異なるプラットホームを組み合せた分散オブジェクト・システムを例示した。これにより、上記作用・効果に加えて、トランスレータを配布する手間を軽減でき、また、クライアントはトランスレータを常時保持する必要がなくなる。
【００３８】
もちろん、本発明のオブジェクト配信方式は、クライアントがトランスレータを保有している処理形態、つまり、サーバはオブジェクトのみをクライアントに配信するような処理形態でも適用可能である。
【００３９】
この場合、サーバ１は、オブジェクト１０ａをクライアント２ａに配信する。クライアント２ａは自身の状況を判断し、あるいは、配信されたオブジェクト１０ａを解析し、配信されたオブジェクト１０ａを実行可能かどうかを判定する。判定の結果、実行可能であれば、配信されたオブジェクト１０ａを、クライアント２ａ自身で保有するトランスレータ２０ａで翻訳し、実行した後、処理結果等をサーバ１に返す。逆に、実行不可能と判定した場合は、クライアント２ａが保有する他クライアント移管処理４０ａを実行する。
【００４０】
クライアント２ａは、どのクライアントを代替にするか選択した上で、先に受取ったオブジェクト１０ａをクライアント２ｂに配信する。クライアント２ｂは、先程のクライアント２ａの動作と同様に、自身の状況を判断し、または、配信されたオブジェクト１０ａを解析し、配信されたオブジェクト１０ａが実行可能かどうかを判定する。実行可能であれば、クライアント２ｂ自身が保有するトランスレータ２０ｂを用いてオブジェクト１０ａを翻訳すれば良い。
【００４１】
また、トランスレータを全く必要としない処理形態、例えば、クライアントが全て同一のプラットフォームで構成されるような処理形態においても、同様に適用可能である。
【００４２】
（第２実施例）
図２は本発明に係るオブジェクト配信方式を適用した分散処理システムの他の実施例を示す概略図である。尚、第１実施例と同様の部分には同一符号を付し、詳細な説明を省略する。
【００４３】
図２に示すように、サーバ１は、オブジェクト１０ａにトランスレータ２０ａと他クライアント移管処理用実行コード４０を添付して、クライアント２ａに配信する（矢印５１）。クライアント２ａは自身の状況を判断し、あるいは、配信されたオブジェクト１０ａを解析し、当該オブジェクト１０ａを実行することが可能かどうかを判定する。
【００４４】
判定の結果、実行可能であれば、配信されたオブジェクト１０ａを、同じく配信されてきたトランスレータ２０ａで翻訳し、実行した後、処理結果等をサーバ１に返す。
【００４５】
逆に、実行不可能と判定した場合は、サーバ１から配信された他クライアント移管処理用実行コード４０をトランスレータ２０ａで翻訳して、翻訳済みの他クライアント移管処理４０ａを実行する。
【００４６】
第１実施例と同様、まず、サーバ１に対して別のクライアントのトランスレータを送付してもらうように要請する（矢印５４）。
【００４７】
次に、クライアント２ａはサーバ１から受取ったトランスレータ２０ｂを、先に受取ったオブジェクト１０ａ及び他クライアント移管処理用実行コード４０に添付して、クライアント２ｂに配信する（矢印５６）。
【００４８】
クライアント２ｂは、先程のクライアント２ａの動作と同様に、自身の状況を判断し、あるいは、配信されたオブジェクト１０ａを解析し、配信されたオブジェクト１０ａを実行することが可能かどうかを判定する。
【００４９】
判定の結果、実行可能であれば、配信されたオブジェクト１０ａを、同じく配信されてきたトランスレータ２０ｂで翻訳し、翻訳済みのオブジェクト１１ｂを実行した後、処理結果等をサーバ１に返す。
【００５０】
クライアント２ｂも実行不可能であると判定した場合は、クライアント２ａから配信された他クライアント移管処理用実行コード４０をトランスレータ２０ｂで翻訳して、翻訳済みの他クライアント移管処理４０ｂを実行する。
【００５１】
このように本実施例では、トランスレータだけでなく、他のクライアントへの要請処理をもサーバから配信するようにしたため、第１実施例で説明した作用・効果に加えて、クライアントのリソースを減らす効果も期待できる。更に、常に最新のトランスレータや移管処理を配信できるため、クライアントの維持・管理にかかるコストも低減できる。
【００５２】
本実施例でも、サーバがトランスレータをオブジェクトに添付して、クライアントに配信する処理を例示したが、クライアントがトランスレータを保有している処理形態、つまり、サーバはオブジェクトと他クライアント移管処理だけをクライアントに配信するような処理形態でも適用可能である。
【００５３】
もちろん、トランスレータを全く必要としない処理形態、例えば、クライアントが全て同一のプラットフォームで構成されるような処理形態においても、同様に適用可能である。
【００５４】
以上、本発明の実施形態について第１実施例乃至第２実施例を用いて詳細に説明したが、本発明は本実施例に限定されず、本発明の主旨を逸脱しない範囲において、種々の改良や変更を成し得るであろう。
【００５５】
例えば、サーバから配信するオブジェクトや他クライアント移管処理手続きは、ＶＰアセンブリ言語、ＨＴＭＬ(hypertext markup language) 、Ｊａｖａ以外にも、例えば、Ｃ言語などの高級言語でも良い。対応するトランスレータは、Ｃ言語などの高級言語の場合にはコンパイラ、ＶＰアセンブリ言語の場合にはＶＰアセンブラ、ＨＴＭＬの場合にはブラウザ、Ｊａｖａの場合にはインタプリタになる。
【００５６】
また、サーバやクライアントの機器構成は、ワークステーションやパソコン以外にも、例えば、ＰＤＡ(Personal Digital Assistants) や情報家電なども想定される。
【００５７】
従って、本発明はこの開示から妥当な特許請求の範囲に係わる発明特定事項によってのみ限定されるものでなければならない。
【００５８】
【発明の効果】
本発明に係るオブジェクト配信方式におけるクライアント装置によれば、クライアント側が、サーバから受取ったオブジェクトを実行可能かどうか判定し、状況に応じて別のクライアントに処理を移管するようしたことにより、そのままサーバとの通信が途絶えてしまうような事態を回避することができ、処理全体の信頼性が向上し、また、処理の遅延等も回避できることから、個々のオブジェクト応答性も向上する。
【００５９】
更に、トランスレータや他のクライアントへの要請処理を、サーバから配信することにより、クライアントのリソースを減らす効果も期待できる。また、常に最新のトランスレータや移管処理を配信できるため、クライアントの維持・管理にかかるコストも低減できる。
【図面の簡単な説明】
【図１】本発明のオブジェクト配信方式による分散オブジェクト処理の一実施例を示す概略図。
【図２】本発明のオブジェクト配信方式による分散オブジェクト処理の他の実施例を示す概略図。
【図３】従来のオブジェクト配信方式による分散オブジェクト処理の他の実施例を示す概略図。
【符号の説明】
１....サーバ
２ａ，２ｂ，２ｎ....クライアント
１０ａ，１０ｂ，１０ｎ....オブジェクト
２０ａ，２０ｂ，２０ｎ....トランスレータ
３０ａ，３０ｂ，３０ｎ....配信オブジェクト
４０....他クライアント移管処理用実行コード
４０ａ，４０ｂ....他クライアント移管処理
４１....他クライアント用のトランスレータ要求処理
４２....他クライアントへのオブジェクト移管処理
５１〜５６....データの流れを示す矢印
【図１】
0003743245.tif 000002
【図２】
0003743245.tif 000003
【図３】
0003743245.tif 000004