(57)【要約】【課題】運用環境が変化しても、容易に管理および維持するとともに、アプリケーションを効率的に実行する。【解決手段】サーバ２は、第１のプラットフォーム２０により構成情報を確定し、クライアント３はクライアント構成情報をサーバ２からダウンロードする。サーバ２およびクライアント３は、それぞれサーバ構成情報およびクライアント構成情報に応じて構造体を組み立てて、実行する。また、サーバ２およびクライアント３は、それぞれリバランスコントローラ２６２およびリバランスコントローラ３４２によってリバランスの処理を開始するか否かを決定するために、リバランスアドバイザー５２４を周期的にコールすることによりモニタリングし、現在の運用環境に応じて構造体を構成する機能単位の移動または交換をともなう動的な再展開（リバランス）を行う。【選択図】図３
2007226719.tif 000002
【特許請求の範囲】
【請求項１】
クライアントおよびサーバのいずれか一方のみ、または、双方において実行可能な１つ以上の機能単位により構成されるアプリケーションを実行するクライアントサーバシステムであって、
前記クライアントおよび前記サーバの運用環境に応じて、アプリケーションが前記機能単位ごとに前記クライアントまたは前記サーバのいずれかに配置されるように、アプリケーションを展開する展開手段と、
前記展開手段が展開したアプリケーションを組み立てて実行する実行手段と
を有するクライアントサーバシステム。
【請求項２】
前記実行手段は、
前記サーバに配置されて前記機能単位を実行する第１のプラットフォームと、
前記クライアントに配置されて前記機能単位を実行する第２のプラットフォームと
を有する
請求項１に記載のクライアントサーバシステム。
【請求項３】
前記展開手段は、前記クライアントおよび前記サーバの双方、または、これらのいずれか一方が前記機能単位のいずれかを実行していても、動的にアプリケーションを再展開可能である
請求項１または２に記載のクライアントサーバシステム。
【請求項４】
前記機能単位それぞれは、該機能単位を前記クライアントまたは前記サーバが実行するための運用環境が好ましいか否かを診断するアドバイザー部を有し、
前記展開手段は、前記アドバイザー部それぞれの診断結果に応じて、アプリケーションを再展開するか否かを判定する
請求項３に記載のクライアントサーバシステム。
【請求項５】
前記サーバ、及び、クライアントは、収集した全体運用環境条件がリバランスを必要か否か診断するリバランスコントローラを有し、
前記展開手段は、前記診断結果に応じて、アプリケーションを再展開するか否かを判定する
請求項３、又は、４に記載のクライアントサーバシステム。
【請求項６】
前記クライアントは、前記クライアントの環境情報、及び、必要な構成情報の要求を前記サーバへ送信し、前記サーバは、前記クライアントと前記サーバとで共有するシステム構成情報対を確定し、
前記展開手段は、前記確定したシステム構成情報対に基いて、必要なサーバ構成情報を前記サーバに配置し、必要なクライアント構成情報を前記クライアントに配置することにより、アプリケーションを展開する
請求項１〜５のいずれかに記載のクライアントサーバシステム。
【請求項７】
１つ以上の他のクライアントおよび１つ以上の他の自律システムに含まれる他のサーバの双方、または、これらのいずれか一方をさらに有し、
前記展開手段は、
前記クライアントおよび前記サーバの双方、またはこれらのいずれか一方が、前記他のクライアントおよび前記他のサーバの双方、または、これらのいずれか一方から取得した１つ以上の他の機能単位を連結してアプリケーションを展開する
請求項１〜６のいずれかに記載のクライアントサーバシステム。
【請求項８】
前記展開手段は、前記他の機能単位が信頼できるか否かを判定する認証手段を有し、
前記他の機能単位が信頼できないと前記認証手段が判定した場合、前記他の機能単位をアプリケーションに連結しない
請求項７に記載のクライアントサーバシステム。
【請求項９】
前記機能単位それぞれは、
ネットワークを介すことなく互いに連結可能な第１のインターフェイスと、
ネットワークを介して互いに連結可能な第２のインターフェイスと
を有し、
前記展開手段は、前記第１のインターフェイスおよび前記第２のインターフェイスの双方、または、これらのいずれか一方を用いることにより、前記機能単位それぞれを連結してアプリケーションを展開する
請求項１〜８のいずれかに記載のクライアントサーバシステム。
【請求項１０】
クライアントおよびサーバのいずれにおいても実行可能な１つ以上の機能単位により構成されるアプリケーションを実行するアプリケーション実行方法であって、
前記クライアントおよび前記サーバの運用環境に応じて、アプリケーションが前記機能単位ごとに前記クライアントまたは前記サーバのいずれかに配置されるようにアプリケーションを展開する展開ステップと、
展開したアプリケーションを組み立てて実行する実行ステップと
を有するアプリケーション実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クライアントがサーバからサービスを受けてアプリケーションを実行するクライアントサーバシステム、アプリケーション実行方法およびプログラムに関する。
【背景技術】
【０００２】
特許文献１は、各サーバの稼動状況を監視して、各サーバによるサービス構成を動的に変更することにより、クライアントの要求に対するサービスの待ち時間を解消するＷｅｂシステムを開示する。
また、特許文献２は、クライアントの要求に対するレスポンス、および複数のサーバの負荷に応じて、業務を分散処理するサーバに対する業務の割り振りを動的に変更することにより、サービスレベルを最適化する動的負荷分散システムを開示する。
しかしながら、上記従来例においては、クライアントが実行する機能と、サーバが実行する機能とのバランスを予め決めておかなければならず、例えばクライアントまたはネットワークの変更などの運用環境の変化に対し、システムの管理および維持が困難であるとともに、アプリケーションを効率的に実行することができないという問題があった。
【０００３】
【特許文献１】特開２００３−２８１００７号公報
【特許文献２】特開２００５−１８２６４１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明は、上述した背景からなされたものであり、運用環境が変化しても、容易に管理および維持することができるとともに、アプリケーションを効率的に実行することができるクライアントサーバシステム、アプリケーション実行方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
［クライアントサーバシステム］
上記目的を達成するために、本発明にかかるクライアントサーバシステムは、クライアントおよびサーバのいずれか一方のみ、または、双方において実行可能な１つ以上の機能単位により構成されるアプリケーションを実行するクライアントサーバシステムであって、前記クライアントおよび前記サーバの運用環境に応じて、アプリケーションが前記機能単位ごとに前記クライアントまたは前記サーバのいずれかに配置されるように、アプリケーションを展開する展開手段と、前記展開手段が展開したアプリケーションを組み立てて実行する実行手段とを有する。
ここで機能単位とは、一つのアプリケーションの中の、ある機能を実行する単位であって、クライアントおよびサーバのいずれか一方のみ、または、双方において実行可能であり、例として、表示機能、データソート機能、ファイル圧縮機能等を有するタスク等が挙げられる。
【０００６】
好適には、前記実行手段は、前記サーバに配置されて前記機能単位を実行する第１のプラットフォームと、前記クライアントに配置されて前記機能単位を実行する第２のプラットフォームとを有する。
【０００７】
また、好適には、前記展開手段は、前記クライアントおよび前記サーバの双方、または、これらのいずれか一方が前記機能単位のいずれかを実行していても、動的にアプリケーションを再展開可能である。
【０００８】
また、好適には、前記機能単位それぞれは、該機能単位を前記クライアントまたは前記サーバが実行するための運用環境が好ましいか否かを診断するアドバイザー部を有し、前記展開手段は、前記アドバイザー部それぞれの診断結果に応じて、アプリケーションを再展開するか否かを判定する。
【０００９】
また、好適には、前記サーバ、及び、クライアントは、収集した全体運用環境条件がリバランスを必要か否か診断するリバランスコントローラを有し、前記展開手段は、前記診断結果に応じて、アプリケーションを再展開するか否かを判定する。
【００１０】
また、好適には、前記クライアントは、前記クライアントの環境情報、及び、必要な構成情報の要求を前記サーバへ送信し、前記サーバは、前記クライアントと前記サーバとで共有するシステム構成情報対を確定し、前記展開手段は、前記確定したシステム構成情報対に基いて、必要なサーバ構成情報を前記サーバに配置し、必要なクライアント構成情報を前記クライアントに配置することにより、アプリケーションを展開する。
【００１１】
また、好適には、１つ以上の他のクライアントおよび１つ以上の他の自律システムに含まれる他のサーバの双方、または、これらのいずれか一方をさらに有し、前記展開手段は、前記クライアントおよび前記サーバの双方、またはこれらのいずれか一方が、前記他のクライアントおよび前記他のサーバの双方、または、これらのいずれか一方から取得した１つ以上の他の機能単位を連結してアプリケーションを展開する。
【００１２】
また、好適には、前記展開手段は、前記他の機能単位が信頼できるか否かを判定する認証手段を有し、前記他の機能単位が信頼できないと前記認証手段が判定した場合、前記他の機能単位をアプリケーションに連結しない。
【００１３】
また、好適には、前記機能単位それぞれは、ネットワークを介すことなく互いに連結可能な第１のインターフェイスと、ネットワークを介して互いに連結可能な第２のインターフェイスとを有し、前記展開手段は、前記第１のインターフェイスおよび前記第２のインターフェイスの双方、または、これらのいずれか一方を用いることにより、前記機能単位それぞれを連結してアプリケーションを展開する。
【００１４】
［アプリケーション実行方法］
また、本発明にかかるアプリケーション実行方法は、クライアントおよびサーバのいずれにおいても実行可能な１つ以上の機能単位により構成されるアプリケーションを実行するアプリケーション実行方法であって、前記クライアントおよび前記サーバの運用環境に応じて、アプリケーションが前記機能単位ごとに前記クライアントまたは前記サーバのいずれかに配置されるようにアプリケーションを展開する展開ステップと、展開したアプリケーションを組み立てて実行する実行ステップとを有する。
【発明の効果】
【００１５】
本発明にかかるクライアントサーバシステム、アプリケーション実行方法およびプログラムによれば、運用環境が変化しても、容易に管理および維持することができるとともに、アプリケーションを効率的に実行することができる。
【発明を実施するための最良の形態】
【００１６】
［クライアントサーバシステム１］
以下、本発明の実施形態を説明する。
図１は、本発明にかかるアプリケーション実行方法およびプログラムが適用されるクライアントサーバシステム１の構成を例示する図である。
図１に示すように、クライアントサーバシステム１は、例えばインターネット（エクストラネット）１０に接続されたルータ１２−１〜１２−３、ルータ１２−１に接続されたサーバ２、ルータ１２−２に接続されたクライアント３−１〜３−３、クライアント３−３を介してルータ１２−２に接続されたクライアント３−４およびルータ１２−３に接続されたサーバ１４を有し、広域ネットワークを構成している。
【００１７】
また、クライアント３−１〜３−３がイントラネット（ＬＡＮ）１６を介して互いに接続されており、サーバ２およびクライアント３−１〜３−４は、ルータ１２−１およびルータ１２−２などによりポリシを統一された自律システム（Autonomous System）１００に含まれ、サーバ１４は、ルータ１２−３を介してインターネット１０に接続された、例えば自律システム１００が信頼できるサードパーティの他の自律システム１０２に含まれている。
【００１８】
［ハードウエア］
図２は、図１に示したサーバ２、クライアント３−１〜３−４およびサーバ１４のハードウエアを例示する図である。
図２に示すように、サーバ２、クライアント３−１〜３−４およびサーバ１４は、ＣＰＵ４００およびメモリ４０２などを含む本体４０、表示装置およびキーボードなどを含む入出力装置４２、通信を行う通信装置４４、および、ＣＤ装置、ＦＤ装置およびＨＤＤ装置などの記憶装置４６から構成される。
つまり、サーバ２、クライアント３−１〜３−４およびサーバ１４は、それぞれコンピュータとしての構成部分を有している。ただし、サーバ２、クライアント３−１〜３−４およびサーバ１４は、例えばＣＰＵ４００の処理能力およびメモリ４０２の容量などがそれぞれ異なり、所定の処理を実行する処理時間が互いに異なっている。
以下、クライアント３−１〜３−４など複数ある構成部分のいずれかを特定せずに示す場合には、単に「クライアント３」などと略記することがある。
【００１９】
［クライアントサーバシステム１の詳細構成］
次に、クライアントサーバシステム１の詳細な構成について説明する。
図３は、クライアントサーバシステム１の詳細な構成を、プログラムを中心に例示する概念図である。
図３に示すように、クライアントサーバシステム１は、例えばサーバ２の記憶装置４６（サーバ側）が記憶するプログラムである第１のプラットフォーム２０と、クライアント３−１の記憶装置４６（クライアント側）が記憶するプログラムである第２のプラットフォーム３０とを有し、サーバ２およびクライアント３−１がそれぞれ第１のプラットフォーム２０および第２のプラットフォーム３０を実行することにより、後述するアプリケーション（構造体５：Organization）を実行する。
【００２０】
第１のプラットフォーム２０は、構成情報格納部（OCG Home）２２、サーバシステム生成部（Server Cultivator）２４および実行部（Dish）２６から構成されるファームウェアであり、後述する機能単位５０（Organ：図４参照）をサーバ構成情報６ａ（図７参照）に応じて組み立てて実行するプラットフォーム（Bed）である。
【００２１】
構成情報格納部２２は、図６を用いて後述する構成情報（Organization Culture Guide: OCG）６を格納するリポジトリである。
サーバシステム生成部２４は、構造体組立部（Organization Constructor）２４０を有し、構成情報格納部２２からサーバ構成情報６ａを受け入れ、サーバ構成情報６ａに応じてサーバシステムを構成するために必要な機能単位５０を組立て、実行部２６に対して出力（ロード)する。
【００２２】
実行部２６は、プラットフォーム本体(Platform）２６０およびリバランスコントローラ（Rebalance controller）２６２から構成され、構造体を実行するための実行環境を提供する。
プラットフォーム本体２６０は、例えばＪＶＭ（Java Virtual Machine：登録商標）などの汎用実行プラットフォームであり、ＡＰＩ（Application Program Interface）の提供なども行う。
【００２３】
リバランスコントローラ２６２は、後述するリバランスの処理を開始するか否かを決定するとともに、リバランスの処理を開始するために、第２のプラットフォーム３０の後述するリバランスコントローラ３４２と通信を行う。
例えば、リバランスコントローラ２６２は、クライアントサーバシステム１の運用環境条件を収集し、運用環境条件がリバランスを必要とする条件であるか否かに応じて、リバランスの処理を開始するか否かを決定する。
また、リバランスコントローラ２６２は、機能単位５０の後述するリバランスアドバイザー５２４を周期的にコールし、リバランスアドバイザー５２４が機能単位５０のリバランス診断を行った結果を取得して、例えばリバランスが必要であると診断された機能単位５０の数が所定値以上になった場合に、リバランスの処理を開始することを決定する。
【００２４】
第２のプラットフォーム３０は、クライアントシステム生成部（Client Cultivator）３２および実行部（Dish）３４から構成されるファームウェアであり、後述する機能単位５０をクライアント構成情報６ｂ（図８参照）に応じて組み立てて実行するプラットフォーム（Bed）である。
【００２５】
クライアントシステム生成部３２は、機能単位収集部（Organ Collector）３２０、機能単位認証部（Organ Authenticator）３２２、構造体組立部（Organization Constructor）３２４から構成される。
機能単位収集部３２０は、他のクライアント（クライアント３−２〜３−４）それぞれが記憶している機能単位５０をクライアントごとに示すクライアントリスト（図示せず）と、クライアント構成情報６ｂとをサーバ２からダウンロードし、クライアント構成情報６ｂに応じて、クライアントシステムを構成するために必要な機能単位５０を他のクライアント（クライアント３−２〜３−４）、サーバ１４またはサーバ２から収集し、機能単位認証部３２２に対して出力する。
【００２６】
機能単位認証部３２２は、機能単位収集部３２０から受け入れた機能単位５０の作成者サイン（図４を用いて後述）を読み取り、機能単位照合マップ６０６と比較して、機能単位５０が信頼できる作成者（またはメーカなど）によって作成されたものであるか否かを判定し、信頼できる作成者によって作成された機能単位５０のみを構造体組立部３２４に対して出力する。
【００２７】
構造体組立部３２４は、機能単位認証部３２２から受け入れたクライアントシステムを構成するために必要な機能単位５０を組立て、実行部３４に対して出力（ロード)する。
【００２８】
実行部３４は、プラットフォーム本体(Platform）３４０およびリバランスコントローラ（Rebalance controller）３４２から構成され、構造体を実行するための実行環境を提供する。
プラットフォーム本体３４０は、例えばＪＶＭ（Java Virtual Machine：登録商標）などの汎用実行プラットフォームである。
【００２９】
リバランスコントローラ３４２は、後述するリバランスの処理を開始するか否かを決定するとともに、リバランスの処理を開始するために、第１のプラットフォーム２０のリバランスコントローラ２６２と通信を行う。
例えば、リバランスコントローラ３４２は、クライアントサーバシステム１の運用環境条件を収集し、収集した運用環境条件がリバランスを必要とする運用環境条件であるか否かに応じて、リバランスの処理を開始するか否かを決定する。
また、リバランスコントローラ３４２は、機能単位５０の後述するリバランスアドバイザー５２４を周期的にコールし、リバランスアドバイザー５２４が機能単位５０のリバランス診断を行った結果を取得して、例えばリバランスが必要であると診断された機能単位５０の数（リバランス要求数）が所定値以上になった場合に、リバランスの処理を開始することを決定する。
【００３０】
このように、サーバ２がサーバ構成情報６ａに応じてサーバシステムを構成するために必要な機能単位５０を組立て、クライアント３−１がクライアント構成情報６ｂをサーバ２からダウンロードして、クライアント構成情報６ｂに応じてクライアントシステムを構成するために必要な機能単位５０をイントラネット１６またはインターネット１０などを介して収集し、収集した機能単位５０を組立てることにより、サーバ２およびクライアント３−１に分散された機能単位５０の組み合わせによるアプリケーション（構造体５）が構成される。
【００３１】
［機能単位５０の構成］
次に、機能単位５０の構成について詳述する。
図４は、機能単位５０の構成を示す図である。図４に示すように、機能単位５０は、管理部５２および機能部５４から構成され、インターネット１０またはイントラネット１６などを介して転送可能な独立したプログラム（データを含む）である。
また、機能単位５０は、サーバ２およびクライアント３のいずれにおいても利用可能な共通の開発ツールおよび言語でコード化されている。
【００３２】
管理部５２は、機能単位名５２０、管理情報格納部５２２およびリバランスアドバイザー５２４から構成される。
機能単位名５２０は、機能単位５０のいずれかを特定するための名前（ＩＤ）であり、ローカル名とグローバル名とを有する。ローカル名は、クライアント内またはサーバ内（ローカル）の所定の環境において、機能単位５０を特定するためのＩＤである。グローバル名は、機能単位５０を特定するためのオプションのＩＤであり、サーバドメイン名＋ローカル名で示され、他の自律システムにおいても共通に用いられる。
【００３３】
管理情報格納部５２２は、配置を示す展開制限情報５３０、操作特徴を示す属性情報５３２および作成者情報５３４から構成される。
展開制限情報５３０は、アプリケーション（構造体５）をサーバ２またはクライアント３などに分散させて展開する場合に、機能単位５０に対する配置制限および取得制限などを示す情報であり、オプションとされてもよい。
展開制限情報５３０が設定されている場合には、設定に応じて機能単位５０の配置および取得などが制限される。
展開制限情報５３０による機能単位５０に対する設定は、例えば、クライアント３またはサーバ２のいずれかのみで動作する（配置が許容される）という制限、他の自律システムから取得することを許容するか否かの制限（Ｙｅｓ／Ｎｏ）、信頼できる他のクライアントから取得することを許容するか否かの制限（Ｙｅｓ／Ｎｏ）などがある。
なお、展開制限情報５３０がオプションであり設定されない場合には、管理者が設定した配置制限および取得制限などがシステムデフォルトの設定となるようにされてもよい。
【００３４】
属性情報５３２には、開発者によって定義された機能単位５０に固有な属性（操作特徴）がリストとして記述されている。属性情報５３２に記述されるリストは、例えばクライアント内またはサーバ内（ローカル）ファイルアクセスの可否、サーバアクセスの可否および他の自律システムへのアクセスの可否、書き込み処理の実行の可否などが含まれる。
【００３５】
作成者情報５３４は、例えば機能単位５０の作成者またはメーカなど、機能単位５０の出所を証明するデジタルサイン（作成者サイン）であり、機能単位５０が信頼できる作成者（またはメーカなど）によって作成されたものであるか否かを判定するために用いられる。
【００３６】
リバランスアドバイザー５２４は、機能単位５０を実行する場合のＣＰＵ使用量、メモリ使用量、処理時間および通信時間などの実行環境要求（必要最低条件）を例えばサーバ構成情報６ａまたはクライアント構成情報６ｂから取得し、機能単位５０が現在配置されているサーバ２またはクライアント３などにおける運用環境（処理能力、負荷状況および通信速度など）を示すデータを収集して、機能単位５０を効率的に実行することができる状態であるか否かを判定（診断）する。
また、リバランスアドバイザー５２４は、第１のプラットフォーム２０のリバランスコントローラ２６２または第２のプラットフォーム３０のリバランスコントローラ３４２にコールされると、現在の運用環境が機能単位５０を効率的に実行することができる環境であると判定した場合には、良好状態であることを示す０（偽）を応答し、現在の運用環境が機能単位５０を効率的に実行することができない環境であると判定した場合には、機能単位５０の配置を動的に変更（アプリケーションを構成する機能単位５０の移動または交換をともなう動的な再展開：リバランス）すべき状態であることを示す１（真）を応答する。
【００３７】
機能部５４は、汎用インターフェイス５４０、ローカル連結部５４２、リモート連結部５４４およびコード（データ）本体５４６から構成される。
汎用インターフェイス５４０は、他の機能単位５０によって直接コールされ、ローカル連結部５４２またはリモート連結部５４４とリンクすることにより、機能単位５０と他の機能単位５０とを連結する。
【００３８】
ローカル連結部５４２は、同一のクライアント内またはサーバ内（ローカル）に配置された機能単位５０と他の機能単位５０とを連結（ローカルリンク）するために、クライアントシステム生成部３２またはサーバシステム生成部２４によって汎用インターフェイス５４０とリンクされるように作成される。
リモート連結部５４４は、クライアントパート５５０およびサーバパート５５２から構成され、通信装置４４を介して（リモートに）連結するように配置された機能単位５０と他の機能単位５０とを連結（リモートリンク）するために、クライアントシステム生成部３２またはサーバシステム生成部２４によって汎用インターフェイス５４０とリンクされるように作成されている。
なお、クライアントパート５５０はリモートリンクの要求を送信し、サーバパート５５２はリモートリンクの要求を受信し、処理を実行するために必要な連結されている機能単位５０のコードまたはデータをコールするようにされている。
【００３９】
図５は、ローカルリンクおよびリモートリンクをともなって、サーバ２およびクライアント３に展開されたアプリケーション（構造体５）を例示する概念図である。
図５に示すように、構造体５は、例えばクライアント３に配置された機能単位Ａ（５０Ａ）および機能単位Ｂ（５０Ｂ）と、サーバ２に配置された機能単位Ｃ（５０Ｃ）とから構成される。
【００４０】
機能単位Ａ（５０Ａ）が機能単位Ｂ（５０Ｂ）の汎用インターフェイス５４０をコールすると、機能単位Ｂ（５０Ｂ）の汎用インターフェイス５４０とローカル連結部５４２とがリンクし、機能単位Ａ（５０Ａ）と機能単位Ｂ（５０Ｂ）とが連結される。
【００４１】
また、機能単位Ｂ（５０Ｂ）が機能単位Ｃ（５０Ｃ）の汎用インターフェイス５４０をコールすると、機能単位Ｂ（５０Ｂ）のクライアントパート５５０が機能単位Ｃ（５０Ｃ）のサーバパート５５２に対してリモートリンクの要求を送信する。
機能単位Ｃ（５０Ｃ）のサーバパート５５２は、リモートリンクの要求を受信すると、機能単位Ｃ（５０Ｃ）が処理を実行するために必要な機能単位Ｂ（５０Ｂ）のコードまたはデータをコール（応答）し、機能単位Ｃ（５０Ｃ）の汎用インターフェイス５４０とリンクして、機能単位Ｂ（５０Ｂ）と機能単位Ｃ（５０Ｃ）とが連結される。
【００４２】
コード（データ）本体５４６（図４）は、構造体５の一部を構成するために機能単位５０が有する機能を記述したプログラム（コード）およびデータまたはこれらのいずれかである。
【００４３】
［構成情報６の構成］
次に、構成情報６の構成について詳述する。
図６は、構成情報６の構成を示すブロック図である。
図６に示すように、構成情報６は、サーバ構成情報６ａとクライアント構成情報６ｂとが対になって構成され、構造体５を構成（生成）するために必要な情報を含むプログラム（データを含む）である。
なお、クライアントサーバシステム１においては、サーバ２が例えば複数の異なる構成情報６を記憶するようにされている。
【００４４】
［サーバ構成情報６ａの構成］
図７は、サーバ構成情報６ａの構成を示す図である。
図７に示すように、サーバ構成情報６ａは、構造体マップ６０およびサーバ構成プラン部６２から構成される。
構造体マップ６０は、機能単位５０によってどのように構造体５を生成するかを記述したものであり、機能単位リスト６００、開始情報６０２、実行環境要求（必要最低条件）６０４および機能単位照合マップ６０６から構成される。
【００４５】
機能単位リスト６００は、所定の構造体５を生成するために必要な機能単位５０を記述したリストおよび機能単位５０をダウンロード可能なサーバなどを記述したリストを含む。
開始情報６０２は、構造体５の実行を開始する場合に、最初に実行されるべき機能単位５０の機能単位名５２０とメソッドとを記述したものである。
実行環境要求６０４は、機能単位５０を実行する場合のＣＰＵ使用量、メモリ使用量、処理時間および通信時間などの実行環境要求（必要最低条件）の設定を記述したものであり、リバランスコントローラ２６２，３４２およびリバランスアドバイザー５２４などにより、構造体５をリバランスするか否かを決定するために使用される。
機能単位照合マップ６０６は、機能単位５０と信頼できる作成者との組み合わせを示すマップである。
【００４６】
サーバ構成プラン部６２は、サーバ基準構成情報（Server Typical OCG Plans）６２０および構成情報選択部（OCG Plan Selector）６２２から構成される。
サーバ基準構成情報６２０は、クライアントサーバシステム１の運用環境と、クライアント構成情報６ｂとサーバ構成情報６ａの対（基準構成情報）のいずれかとの複数の異なる組み合わせを示すプランマップである。
なお、運用環境と基準構成情報との組み合わせには、システム出荷時に設定された組み合わせと、管理者により追加されて管理される組み合わせとがあり、デフォルトの組み合わせが設定されている。
【００４７】
構成情報選択部６２２は、構成情報格納部２２によってコールされると、クライアントサーバシステム１の運用環境に応じて、構造体５を最も効率的に実行することを可能にするクライアント構成情報６ｂとサーバ構成情報６ａの対（基準構成情報）のいずれか（またはデフォルトの対）をサーバ基準構成情報６２０のプランマップから選択し、応答として返す。
【００４８】
［クライアント構成情報６ｂの構成］
図８は、クライアント構成情報６ｂの構成を示す図である。
図８に示すように、クライアント構成情報６ｂは、構造体マップ６０およびクライアント構成プラン部６４から構成される。
なお、クライアント構成情報６ｂにおいて、図７に示したサーバ構成情報６ａを構成する部分と実質的に同一のものには、同一の符号が付してある。
【００４９】
クライアント構成プラン部６４は、クライアント基準構成情報（Client Typical OCG Plans）６４０および構成情報選択部（OCG Plan Selector）６２２から構成される。
クライアント基準構成情報６４０は、クライアントサーバシステム１の運用環境と、クライアント構成情報６ｂとサーバ構成情報６ａの対（基準構成情報）のいずれかとの複数の異なる組み合わせを示すプランマップである。
なお、運用環境と基準構成情報との組み合わせには、システム出荷時に設定された組み合わせと、管理者により追加されて管理される組み合わせとがあり、デフォルトの組み合わせが設定されている。
【００５０】
［クライアントサーバシステム１の構造体５による運用］
次に、クライアントサーバシステム１の構造体５による運用について説明する。
図９は、構造体５の実行サイクルを示す図である。
図９に示すように、構造体５は、構成情報６の確定とダウンロードのフェーズ（Ｐ１００）、構造体５の組立てフェーズ（Ｐ１０２）、構造体５の実行フェーズ（Ｐ１０４）およびリバランス（再展開）のためのモニタリングフェーズ（Ｐ１０６）の４つのフェーズにより実行される。
【００５１】
構成情報６の確定とダウンロードのフェーズ（Ｐ１００）において、サーバ２はサーバ２内で構成情報６を確定し、クライアント３はクライアント構成情報６ｂをサーバ２からダウンロードする。
【００５２】
構造体５の組立てフェーズ（Ｐ１０２）において、サーバ２およびクライアント３は、それぞれサーバ構成情報６ａおよびクライアント構成情報６ｂに応じて構造体５を組み立てる。
【００５３】
構造体５の実行フェーズ（Ｐ１０４）において、サーバ２およびクライアント３は、構造体５を実行する。
【００５４】
リバランスのためのモニタリングフェーズ（Ｐ１０６）において、サーバ２およびクライアント３は、それぞれリバランスコントローラ２６２およびリバランスコントローラ３４２によってリバランスの処理を開始するか否かを決定するために、リバランスアドバイザー５２４を周期的にコールすることによりモニタリングし、現在の運用環境に応じて動的にＰ１０２またはＰ１０４のフェーズに進む。リバランスの処理を開始するか否かを決定する例は後述する。
【００５５】
［構成情報６の確定とダウンロードのフェーズ（Ｐ１００）］
図１０は、構成情報６の確定とダウンロードのフェーズにおいて、サーバ２およびクライアント３が実行する処理のシーケンス（Ｓ１０）を示すシーケンス図である。
図１０に示すように、ステップ１００（Ｓ１００）において、クライアント３は、クライアント構成情報６ｂのいずれかを取得するための要求をサーバ２に対して送信する。
【００５６】
ステップ１０２（Ｓ１０２）において、サーバ２は、構成情報格納部２２内を検索し、要求されたクライアント構成情報６ｂを含む構成情報６を有しているか否かを確認する。
【００５７】
ステップ１０４（Ｓ１０４）において、サーバ２は、要求されたクライアント構成情報６ｂを含む構成情報６を有している場合には、要求されたクライアント構成情報６ｂを有している旨をクライアント３に対して応答する。
【００５８】
ステップ１０６（Ｓ１０６）において、クライアント３は、自らの（クライアント３内の）実行環境に関する情報（ＣＰＵ４００、メモリ４０２、記憶装置４６、通信装置４４および第２のプラットフォーム３０などの情報）をサーバ２に対して送信する。
【００５９】
ステップ１０８（Ｓ１０８）において、サーバ２は、構成情報選択部６２２をコールする。
【００６０】
ステップ１１０（Ｓ１１０）において、サーバ２は、要求されたクライアント構成情報６ｂに対して最も効率的に構造体５を実行することが可能な構成情報６を１つ選択して確定する。
【００６１】
ステップ１１２（Ｓ１１２）において、サーバ２は、確定した構成情報６のクライアント構成情報６ｂをクライアント３に対して送信する。（クライアント構成情報６ｂのダウンロード）
【００６２】
ステップ１１４（Ｓ１１４）において、サーバ２は、確定した構成情報６のサーバ構成情報６ａをサーバシステム生成部２４にロードする。
【００６３】
ステップ１１６（Ｓ１１６）において、クライアント３は、ダウンロードしたクライアント構成情報６ｂをクライアントシステム生成部３２にロードする。
【００６４】
［構造体５の組立てフェーズ（Ｐ１０２）］
図１１は、構造体５の組立てフェーズにおいて、サーバ２およびクライアント３−１が構造体５を実行する場合のクライアントサーバシステム１の処理シーケンス（Ｓ２０）を例示するシーケンス図である。
図１１に示すように、ステップ２００（Ｓ２００）において、クライアント３−１は、初期状態の上述したクライアントリストをサーバ２に対して要求する。
【００６５】
ステップ２０２（Ｓ２０２）において、サーバ２は、クライアントサーバシステム１において新たに追加された他のクライアントがある場合には、追加された他のクライアント名を初期状態のクライアントリストに追加し、初期状態のクライアントリストをクライアント３−１に対して送信する。（初期状態のクライアントリストのクライアント３−１によるダウンロード）
なお、クライアントリストは機能単位収集部３２０により管理される。
【００６６】
ステップ２０４（Ｓ２０４）において、クライアント３−１は、初期状態のクライアントリストにクライアント名が記載されている他のクライアントそれぞれを訪問し、初期状態のクライアントリストを更新するためのクライアントリスト更新情報をそれぞれ要求する。
【００６７】
ステップ２０６（Ｓ２０６）において、クライアント３−１は、初期状態のクライアントリストにクライアント名が記載されている他のクライアントそれぞれからクライアントリスト更新情報を取得し、クライアントリストを更新する。
【００６８】
ステップ２０８（Ｓ２０８）において、クライアント３−１は、更新したクライアントリストを参照して、例えば最も短い時間で必要な機能単位ａ（５０ａ）を送信可能な他のクライアントであるクライアント３−２を特定し、クライアント３−２から機能単位ａ（５０ａ）をダウンロードする。
【００６９】
ステップ２１０（Ｓ２１０）において、クライアント３−１は、信頼できるサードパーティのサーバリスト（他の自律システムのサーバリスト）をサーバ２に対して要求する。
【００７０】
ステップ２１２（Ｓ２１２）において、クライアント３−１は、信頼できるサードパーティのサーバリストをサーバ２からダウンロードする。
【００７１】
ステップ２１４（Ｓ２１４）において、クライアント３−１は、ダウンロードしたサーバリストを参照して、必要な機能単位ｂ（５０ｂ）を送信可能なサーバ１４を特定し、サーバ１４から機能単位ｂ（５０ｂ）をダウンロードする。
【００７２】
ステップ２１６（Ｓ２１６）において、クライアント３−１は、他のクライアントまたは他の自律システムのサーバなどからダウンロードすることができなかった必要な機能単位ｃ（５０ｃ）をサーバ２からダウンロードする。
【００７３】
ステップ２１８（Ｓ２１８）において、サーバ２は、構造体５を構成するために必要な機能単位ａ〜ｃ（５０ａ〜ｃ）以外の機能単位５０をローカルリンクまたはリモートリンクによって、リンクの対象となる機能単位５０にリンクする。
【００７４】
ステップ２２０（Ｓ２２０）において、サーバ２は、サーバ２側に配置されている機能単位５０を実行部２６にロードする。
【００７５】
ステップ２２２（Ｓ２２２）において、クライアント３−１は、ダウンロードした機能単位ａ〜ｃ（５０ａ〜ｃ）の認証を行う。
【００７６】
ステップ２２４（Ｓ２２４）において、クライアント３−１は、機能単位ａ〜ｃ（５０ａ〜ｃ）をローカルリンクまたはリモートリンクによって、リンクの対象となる機能単位５０にリンクする。
【００７７】
ステップ２２６（Ｓ２２６）において、クライアント３−１は、クライアント３−１側に配置されている機能単位ａ〜ｃ（５０ａ〜ｃ）を実行部３４にロードする。
【００７８】
［構造体５の実行フェーズ（Ｐ１０４）］
サーバ２およびクライアント３−１は、構造体５の組立てフェーズ（Ｐ１０２）において組み立てた構造体５をローカルリンクまたはリモートリンクに応じて実行する。
【００７９】
［リバランスのためのモニタリングフェーズ（Ｐ１０６）］
サーバ２およびクライアント３−１は、構造体５の実行を開始すると、リバランスの処理を開始するか否かを判定するためのモニタリングを行う。
図１２は、クライアント３−１がリバランスのためのモニタリングフェーズ（Ｐ１０６）において実行する処理（Ｓ３０）を示すフローチャートである。
図１２に示すように、ステップ３００（Ｓ３００）において、クライアント３−１の第２のプラットフォーム３０は、クライアントサーバシステム１全体の運用環境条件を収集する。
【００８０】
ステップ３０２（Ｓ３０２）において、第２のプラットフォーム３０は、収集した全体運用環境条件がリバランスを必要とする全体運用環境条件（リバランスが必要な全体の要求数が設定値以上）であるか否かを判定し、リバランスが必要な場合にはＳ３０８の処理に進み、リバランスが必要でない場合にはＳ３０４の処理に進む。リバランスを必要とする全体運用環境条件の例としては、例えば、残量メモリ量が所定値以下になったとき等がある。
【００８１】
ステップ３０４（Ｓ３０４）において、第２のプラットフォーム３０は、クライアント３−１内の機能単位のリバランスアドバイザーそれぞれをコールして、リバランス個別要求数を調べる。
【００８２】
ステップ３０６（Ｓ３０６）において、第２のプラットフォーム３０は、リバランス個別要求数が設定値以上であるか否かを判定し、リバランス個別要求数が設定値以上である場合にはＳ３０８の処理に進み、リバランス個別要求数が設定値未満である場合にはＳ３００の処理に進む。
【００８３】
ステップ３０８（Ｓ３０８）において、クライアント３−１は、サーバ２と同期してリバランスの処理を開始する。
【００８４】
ステップ３１０（Ｓ３１０）において、クライアント３−１は、機能単位５０の転送（交換）をサーバ２との間で行う。
【００８５】
ステップ３１２（Ｓ３１２）において、クライアント３−１は、構造体５の組立てフェーズに戻る。
【００８６】
図１３は、サーバ２がリバランスのためのモニタリングフェーズ（Ｐ１０６）において実行する処理（Ｓ４０）を示すフローチャートである。
図１３に示すように、ステップ４００（Ｓ４００）において、サーバ２の第１のプラットフォーム２０は、クライアントサーバシステム１全体の運用環境条件を収集する。
【００８７】
ステップ４０２（Ｓ４０２）において、第１のプラットフォーム２０は、収集した全体運用環境条件がリバランスを必要とする全体運用環境条件（リバランスが必要な全体の要求数が設定値以上）であるか否かを判定し、リバランスが必要な場合にはＳ４０８の処理に進み、リバランスが必要でない場合にはＳ４０４の処理に進む。リバランスを必要とする全体運用環境条件の例としては、例えば、残量メモリ量が所定値以下になったとき等がある。
【００８８】
ステップ４０４（Ｓ４０４）において、第１のプラットフォーム２０は、サーバ２内の機能単位のリバランスアドバイザーそれぞれをコールして、リバランス個別要求数を調べる。
【００８９】
ステップ４０６（Ｓ４０６）において、第１のプラットフォーム２０は、リバランス個別要求数が設定値以上であるか否かを判定し、リバランス個別要求数が設定値以上である場合にはＳ４０８の処理に進み、リバランス個別要求数が設定値未満である場合にはＳ４００の処理に進む。
【００９０】
ステップ４０８（Ｓ４０８）において、サーバ２は、クライアント３−１と同期してリバランスの処理を開始する。
【００９１】
ステップ４１０（Ｓ４１０）において、サーバ２は、機能単位５０の転送（交換）をクライアント３−１との間で行う。
【００９２】
ステップ４１２（Ｓ４１２）において、サーバ２は、構造体５の組立てフェーズに戻る。
【００９３】
図１４は、クライアント３およびサーバ２が構造体５ａのリバランスを行った場合に変化する機能単位５０のリンクを例示する概念図である。
図１４に示すように、例えば構造体５ａは、リバランスを行う前には、機能単位Ａ（５０Ａ）、機能単位Ｂ（５０Ｂ）および機能単位Ｅ（５０Ｅ）がクライアント３に配置され、機能単位Ｃ（５０Ｃ）および機能単位Ｄ（５０Ｄ）がサーバ２に配置されて、機能単位Ｄ（５０Ｄ）がデータベース２００にアクセスするように展開する。
【００９４】
なお、機能単位Ｂ（５０Ｂ）は機能単位Ａ（５０Ａ）とローカルリンクしており、機能単位Ｃ（５０Ｃ）は機能単位Ｂ（５０Ｂ）とリモートリンクしており、機能単位Ｄ（５０Ｄ）は機能単位Ｃ（５０Ｃ）とローカルリンクしており、機能単位Ｅ（５０Ｅ）は機能単位Ｄ（５０Ｄ）とリモートリンクしている。
【００９５】
例えば、サーバ２に対する機能単位の実行負荷が大きくなり、クライアント３による機能単位の実行負荷が小さい場合、サーバ２およびクライアント３の負荷を分散させるために、クライアント３およびサーバ２はリバランスを行い、機能単位Ｃ（５０Ｃ）をサーバ２からクライアント３へ転送する。
【００９６】
リバランスが行われると、機能単位Ｃ（５０Ｃ）がクライアント３に配置されるので、機能単位Ｃ（５０Ｃ）は機能単位Ｂ（５０Ｂ）とローカルリンクし、機能単位Ｄ（５０Ｄ）は機能単位Ｃ（５０Ｃ）とリモートリンクする。
【００９７】
次に、構造体５の実施例について説明する。
図１５は、Ｊａｖａ（登録商標）のプラットフォームによる構造体５の実行の実施例を示す模式図である。
構造体５は、例えばビジュアル機能単位５０−１、データ圧縮機能単位５０−２、データフィルタ機能単位５０−３、データソート機能単位５０−４およびデータベースアクセス機能単位５０−５から構成される。
【００９８】
ビジュアル機能単位５０−１は、例えばユーザインターフェイスを表示し、ユーザからの入力を受け入れる機能を有し、クライアント３においてのみ動作するように設定されている。
【００９９】
データ圧縮機能単位５０−２は、例えばデータベースに書き込むデータを圧縮する標準的な機能単位であり、信頼できる他のクライアントまたはサードパーティのサーバからダウンロード可能である。
また、データ圧縮機能単位５０−２は、例えばクライアント３およびサーバ２のいずれにおいても動作するように設定されている。
【０１００】
データフィルタ機能単位５０−３は、例えばビジュアル機能単位５０−１に対して送出するデータをフィルタリングする機能を有し、クライアント３およびサーバ２のいずれにおいても動作するように設定されている。
【０１０１】
データソート機能単位５０−４は、例えばビジュアル機能単位５０−１に対して送出するデータをソーティングする機能を有し、クライアント３およびサーバ２のいずれにおいても動作するように設定されている。
【０１０２】
データベースアクセス機能単位５０−５は、例えばデータを読み書きするために、データベースにアクセスする機能を有し、サーバ２においてのみ動作するように設定されている。
【０１０３】
初期の展開においては、構造体５は、サーバ構成情報６ａに応じてデータベースアクセス機能単位５０−５がサーバ２に配置され、クライアント構成情報６ｂに応じてビジュアル機能単位５０−１、データ圧縮機能単位５０−２、データフィルタ機能単位５０−３およびデータソート機能単位５０−４がクライアント３に配置されている。
【０１０４】
サーバ２とクライアント３とが同期したリバランスによって、例えばデータ圧縮機能単位５０−２およびデータフィルタ機能単位５０−３がクライアント３からサーバ２へ動的に転送されると、リバランス後には、ビジュアル機能単位５０−１およびデータソート機能単位５０−４がクライアント３に配置され、データ圧縮機能単位５０−２、データフィルタ機能単位５０−３およびデータベースアクセス機能単位５０−５がサーバ２に配置されるように展開される。
【産業上の利用可能性】
【０１０５】
本発明は、クライアントがサーバからサービスを受けてアプリケーションを実行するクライアントサーバシステムなどに利用することができる。
【図面の簡単な説明】
【０１０６】
【図１】本発明にかかるアプリケーション実行方法およびプログラムが適用されるクライアントサーバシステムの構成を例示する図である。
【図２】図１に示したサーバ、クライアントおよび他の自律システムのサーバのハードウエアを例示する図である。
【図３】クライアントサーバシステムの詳細な構成をプログラムを中心に例示する概念図である。
【図４】機能単位の構成を示す図である。
【図５】ローカルリンクおよびリモートリンクをともなって、サーバおよびクライアントに展開されたアプリケーション（構造体）を例示する概念図である。
【図６】構成情報の構成を示すブロック図である。
【図７】サーバ構成情報の構成を示す図である。
【図８】クライアント構成情報の構成を示す図である。
【図９】構造体の実行サイクルを示す図である。
【図１０】構成情報の確定とダウンロードのフェーズにおいて、サーバおよびクライアントが実行する処理のシーケンス（Ｓ１０）を示すシーケンス図である。
【図１１】構造体の組立てフェーズにおいて、サーバおよびクライアントが構造体を実行する場合のクライアントサーバシステムの処理シーケンス（Ｓ２０）を例示するシーケンス図である。
【図１２】クライアントがリバランスのためのモニタリングフェーズにおいて実行する処理（Ｓ３０）を示すフローチャートである。
【図１３】サーバがリバランスのためのモニタリングフェーズにおいて実行する処理（Ｓ４０）を示すフローチャートである。
【図１４】クライアントおよびサーバが構造体のリバランスを行った場合に変化する機能単位のリンクを例示する概念図である。
【図１５】プラットフォームによる構造体の実行の実施例を示す模式図である。
【符号の説明】
【０１０７】
１・・・クライアントサーバシステム
１０・・・インターネット
１００・・・自律システム
１０２・・・他の自律システム
１２−１〜１２−３・・・ルータ
１４・・・サーバ
１６・・・イントラネット
２・・・サーバ
２０・・・第１のプラットフォーム
２２・・・構成情報格納部
２４・・・サーバシステム生成部
２４０・・・構造体組立部
２６・・・実行部
２６０・・・プラットフォーム本体
２６２・・・リバランスコントローラ
３−１〜３−４・・・クライアント
３０・・・第２のプラットフォーム
３２・・・クライアントシステム生成部
３２０・・・機能単位収集部
３２２・・・機能単位認証部
３２４・・・構造体組立部
３４・・・実行部
３４０・・・プラットフォーム本体
３４２・・・リバランスコントローラ
４０・・・本体
４００・・・ＣＰＵ
４０２・・・メモリ
４２・・・入出力装置
４４・・・通信装置
４６・・・記憶装置
５・・・構造体
５０・・・機能単位
５２・・・管理部
５２０・・・機能単位名
５２２・・・管理情報格納部
５２４・・・リバランスアドバイザー
５３０・・・展開制限情報
５３２・・・属性情報
５３４・・・作成者情報
５４・・・機能部
５４０・・・汎用インターフェイス
５４２・・・ローカル連結部
５４４・・・汎用インターフェイス
５４６・・・コード（データ）本体
５５０・・・クライアントパート
５５２・・・サーバパート
６・・・構成情報
６ａ・・・サーバ構成情報
６ｂ・・・クライアント構成情報
６０・・・構造体マップ
６００・・・機能単位リスト
６０２・・・開始情報
６０４・・・実行環境要求
６０６・・・機能単位照合マップ
６２・・・サーバ構成プラン部
６２０・・・サーバ基準構成情報
６２２・・・構成情報選択部
６４・・・クライアント構成プラン部
６４０・・・クライアント基準構成情報
【図１】
2007226719.tif 000003
【図２】
2007226719.tif 000004
【図３】
2007226719.tif 000005
【図４】
2007226719.tif 000006
【図５】
2007226719.tif 000007
【図６】
2007226719.tif 000008
【図７】
2007226719.tif 000009
【図８】
2007226719.tif 000010
【図９】
2007226719.tif 000011
【図１０】
2007226719.tif 000012
【図１１】
2007226719.tif 000013
【図１２】
2007226719.tif 000014
【図１３】
2007226719.tif 000015
【図１４】
2007226719.tif 000016
【図１５】
2007226719.tif 000017