(57)【要約】      （修正有）【課題】独自のサービス定義を策定しサービスコンポーネントのネットワーク上の配置位置情報等を意識することなくサービスコンポーネントの利用が可能な分散アプリケーションシステムを実現する。【解決手段】分散アプリケーションシステムにおいて、サービスコンポーネントの下位層でミドルウェア及びＯＳが順次動作する複数のサーバと、クライアントプログラムの下位層でミドルウェア及びＯＳが順次動作するクライアントとを備え、クライアント及びサーバで動作するミドルウェアがサービス定義に基づき論理的ネットワークを構築し、クライアントプログラムが指定したサービス内容に基づきクライアントで動作するミドルウェアが論理的ネットワーク上を検索すると共に発見されたサービスコンポーネントを利用するためのサービスプロキシプログラムを生成し、サービスプロキシプログラムを介して発見されたサービスコンポーネントに対してサービスを要求する。【選択図】図５
2005251046.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク上に分散して存在しサービスを提供する複数のサービスコンポーネントを利用して必要とするアプリケーションを構築する分散アプリケーションシステムにおいて、
前記ネットワークに接続されサービスを提供すると共にサービス内容を含むサービス定義を供給するサービスコンポーネントが動作し前記サービスコンポーネントの下位層でミドルウェア及びＯＳが順次動作する複数のサーバと、
前記ネットワークに接続されクライアントプログラムが動作し前記クライアントプログラムの下位層でミドルウェア及びＯＳが順次動作するクライアントとを備え、
前記クライアント及び前記複数のサーバでそれぞれ動作するミドルウェアが当該サービス定義に基づき論理的ネットワークを構築し、前記クライアントプログラムが指定したサービス内容に基づき前記クライアントで動作するミドルウェアが前記論理的ネットワーク上を検索すると共に発見されたサービスコンポーネントを利用するためのサービスプロキシプログラムを生成し、前記クライアントプログラムが前記サービスプロキシプログラムを介して前記サーバで動作するミドルウェア経由で前記発見されたサービスコンポーネントに対してサービスを要求することを特徴とする分散アプリケーションシステム。
【請求項２】
前記クライアントで動作する前記クライアントプログラムが、
利用するサーボスコンポーネントの定義ファイルを前記クライアントで動作するミドルウェアから取得するステップと、
前記定義ファイルに記述されているサービス内容情報を指定するステップと、
サービスの利用を前記クライアントで動作するミドルウェアが生成した、サービスコンポーネントを利用するためのサービスプロキシプログラムを介して要求するステップと、
前記サービスプロキシプログラムから処理結果を受信し、他のサービスコンポーネントを利用する場合に第１のステップに戻るステップとから成ることを特徴とする
請求項１記載の分散アプリケーションシステム。
【請求項３】
前記クライアントで動作するミドルウェアが、
前記クライアントプログラムからサービス内容の指定を受けた場合に利用要求のあったサービス内容を前記論理的ネットワークを形成する他のミドルウェアに対して照会して検索するステップと、
前記指定されたサービス内容のサービスを提供するサービスコンポーネントを発見した場合に、発見されたサービスコンポーネントを利用するためのサービスプロキシプログラムを生成するステップと、
前記サービスプロキシプログラムを介して要求されたサービスを、先に発見したサービスコンポーネントが動作する前記サーバで動作するミドルウェアを経由してサービスコンポーネントに対して要求するステップと、
前記サーバで動作するミドルウェアを経由して処理結果を取得した場合に、取得した処理結果を前記サービスプロキシプログラムに渡すステップとから成ることを特徴とする
請求項１記載の分散アプリケーションシステム。
【請求項４】
前記サーバで動作するサービスコンポーネントが、
前記クライアントで動作するミドルウェアからのサービスの要求があった場合に、要求されたサービスに対する処理を実行するステップと、
処理結果を前記サーバで動作するミドルウェア経由で前記クライアントで動作するミドルウェアに送信するステップとから成ることを特徴とする
請求項１記載の分散アプリケーションシステム。
【請求項５】
仲介プログラムが動作する第２のサーバとを備え、
前記第２のサーバで動作する前記仲介プログラムが前記クライアントプログラムからの要求内容や前記クライアントのデバイスタイプに関する情報に基づき必要なサービスコンポーネントを選択することを特徴とする
請求項１記載の分散アプリケーションシステム。
【請求項６】
前記第２のサーバで動作する仲介プログラムが、
前記クライアントで動作するミドルウェア経由で前記クライアントプログラムからサービス内容の指定を受けた場合に、前記クライアントのデバイスタイプに関する情報を取得すると共に利用要求のあったサービス内容を前記論理的ネットワークを形成する他のミドルウェアに対して照会して検索するステップと、
指定されたサービス内容のサービスを提供するサービスコンポーネントを発見した場合に、発見したサービスコンポーネントが動作する前記サーバで動作するミドルウェアを経由してサービスコンポーネントに対して要求するステップと、
処理結果を取得した場合に、前記クライアントのデバイスタイプに関する情報に基づき前記クライアントの表示能力に適した表示情報を作成する第２のサービスコンポーネントが動作するサーバで動作するミドルウェアを経由して第２のサービスコンポーネントに対して要求するステップと、
前記サーバから取得したクライアントの表示能力に適して作成された表示情報を前記クライアントプログラムに前記サービスプロキシプログラム経由で渡すステップとから成ることを特徴とする
請求項５記載の分散アプリケーションシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク上に分散して存在しサービスを提供する複数のサービスコンポーネントを利用して必要とするアプリケーションを構築する分散アプリケーションシステムに関し、特にサービスコンポーネントのネットワーク上の配置位置情報等を意識することなくサービスコンポーネントの利用が可能な分散アプリケーションシステムに関する。
【背景技術】
【０００２】
従来のネットワーク上に分散して存在しサービスを提供する複数のサービスコンポーネントを利用して必要とするアプリケーションを構築する分散アプリケーションシステムに関連する先行技術文献としては次のようなものがある。
【０００３】
【特許文献１】特開平０９−３３０２２３号公報
【特許文献２】特開平１０−１５４０７８号公報
【特許文献３】特開平１１−２９６５９５号公報
【特許文献４】特開２００１−２６５８０５号公報
【特許文献５】特開２００３−１５７２４２号公報
【０００４】
従来、様々なサービスを提供するサービスコンポーネントをネットワーク上に分散配置して、これらの複数のサービスを利用することにより総合的なシステムを構築することが行われている。
【０００５】
これらのシステムは、Ｗｅｂ  ＳｅｒｖｉｃｅやＣＯＲＢＡ（Common Object Request Broker Architecture：プログラム言語等の壁を超えてオブジェクト同士の通信を可能にする技術）、ＥＪＢ（Enterprise JavaBeans：Ｊａｖａ（Sun Microsystems社が開発したオブジェクト指向のインタープリタ言語。Sun Microsystems社の商標若しくは登録商標。）でサーバサイドのプログラムを作成する際のアプリケーションモデル）等の技術によって実現されている。
【０００６】
図１１は従来のネットワーク上に分散して存在しサービスを提供する複数のサービスコンポーネントを利用して必要とするアプリケーションを構築する分散アプリケーションシステムの一例を示す説明図である。
【０００７】
図１１において１はネットワーク上に分散して存在しサービスを提供する複数のサービスコンポーネントを利用して必要とするアプリケーションを構築するクライアントプログラムが動作するコンピュータ等のクライアント、２，３及び４はネットワーク上に分散配置されサービスを提供するサービスコンポーネントが動作するコンピュータ等のサーバ、１００はインターネットやＬＡＮ（Local Area Network）等の汎用のネットワークである。
【０００８】
クライアント１はネットワーク１００に接続され、サーバ２，３及び４もまたネットワーク１００にそれぞれ接続される。
【０００９】
ここで、図１１に示す従来例の動作を図１２、図１３、図１４、図１５及び図１６を用いて説明する。図１２はクライアント１及び各サーバにおけるソフトウェアの階層構造を説明する説明図、図１３は物理的ネットワークの概念を説明する説明図、図１４はクライアント１で動作するクライアントプログラムの動作を説明するフロー図、図１５はクライアント１で動作するミドルウェアの動作を説明するフロー図、図１６は各サーバで動作するサービスコンポーネントの動作を説明するフロー図である。
【００１０】
図１２中”ＯＳ０１”、”ＭＷ０１”及び”ＣＰ０１”はクライアント１でそれぞれ動作するＯＳ（Operating System）、ミドルウェア及びアプリケーションプログラムであり、図１２中”ＮＴ０１”に示すネットワーク１００から上位層に向かって順次階層化されている。
【００１１】
同様に、図１２中”ＯＳ０２”、”ＭＷ０２”及び”ＳＣ０１”はサーバ２でそれぞれ動作するＯＳ、ミドルウェア及びサービスコンポーネント、図１２中”ＯＳ０３”、”ＭＷ０３”及び”ＳＣ０２”はサーバ３でそれぞれ動作するＯＳ、ミドルウェア及びサービスコンポーネント、図１２中”ＯＳ０４”、”ＭＷ０４”及び”ＳＣ０３”はサーバ４でそれぞれ動作するＯＳ、ミドルウェア及びサービスコンポーネントであり、それぞれ、図１２中”ＮＴ０１”に示すネットワーク１００から上位層に向かって順次階層化されている。
【００１２】
一方、図１３中”ＣＰ０１”に示すクライアント１のアプリケーションプログラムから各サーバのサービスコンポーネントを利用する場合には、図１３中”ＰＮ１１”に示す物理的ネットワークに分散する図１３中”ＳＣ０１”、”ＳＣ０２”及び”ＳＣ０３”に示すサービスコンポーネントのＩＰ（Internet Protocol）アドレスやＵＲＬ（Uniform Resource Locator）等の位置情報や使用される通信プロトコルを認識した上でサービスコンポーネントを利用することになる。
【００１３】
例えば、図１３中”ＣＰ０１”に示すクライアントプログラムが図１３中”ＳＣ０１”に示すサービスコンポーネントを図１３中”ＡＣ１１”に示すように利用する場合には、図１３中”ＣＰ０１”に示すクライアントプログラムは図１３中”ＳＣ０１”に示すサービスコンポーネントの位置情報や使用される通信プロトコルを意識した上で当該サービスコンポーネントを利用することになる。
【００１４】
さらに、各プログラム等の動作をフロー図を用いて説明する。図１４中”Ｓ００１”においてクライアント１で動作するクライアントプログラム（ＣＰ０１）は、利用するサーボスコンポーネントの定義ファイルに記述等されている当該サービスコンポーネントのネットワーク上の配置位置情報等を指定してサービスの利用をクライアント１で動作する下位のミドルウェア（ＭＷ０１）に対して要求する。
【００１５】
図１４中”Ｓ００２”においてクライアント１で動作するクライアントプログラム（ＣＰ０１）は、クライアント１で動作する下位のミドルウェア（ＭＷ０１）から処理結果を受信するまで待機し、処理結果を受信した場合には、図１４中”Ｓ００３”においてクライアント１で動作するクライアントプログラム（ＣＰ０１）は、他のサービスコンポーネントを利用するか否かを判断する。
【００１６】
もし、図１４中”Ｓ００３”において他のサービスコンポーネントを利用すると判断した場合には、図１４中”Ｓ００１”のステップに戻り、他のサービスコンポーネントを利用しないと判断した場合には処理を終了する。
【００１７】
一方、図１５中”Ｓ１０１”においてクライアント１で動作するミドルウェア（ＭＷ０１）は、クライアント１で動作する上位のクライアントプログラム（ＣＰ０１）からサービスの利用要求を受けたか否かを判断し、もし、サービスの利用要求を受けたと判断した場合には、図１５中”Ｓ１０２”においてクライアント１で動作するミドルウェア（ＭＷ０１）は、利用要求のあったサービスコンポーネント（ＳＣ０１）をネットワーク（ＮＴ０１）上で検索する。
【００１８】
そして、図１５中”Ｓ１０３”においてクライアント１で動作するミドルウェア（ＭＷ０１）は、ネットワーク（ＮＴ０１）上で当該サービスコンポーネント（ＳＣ０１）を発見したか否かを判断し、もし、当該サービスコンポーネント（ＳＣ０１）を発見したと判断した場合には、図１５中”Ｓ１０４”においてクライアント１で動作するミドルウェア（ＭＷ０１）は、当該サービスコンポーネント（ＳＣ０１）が動作するサーバ２で動作するミドルウェア（ＭＷ０２）を経由してサービスコンポーネント（ＳＣ０１）に対するサービスの要求を行うと共に図１５中”Ｓ１０５”においてサーバ２で動作するミドルウェア（ＭＷ０２）を経由して処理結果を取得するまで待機する。
【００１９】
図１５中”Ｓ１０５”においてサーバ２で動作するミドルウェア（ＭＷ０２）を経由して処理結果を取得した場合には、図１５中”Ｓ１０６”においてクライアント１で動作するミドルウェア（ＭＷ０１）は、取得した処理結果をクライアント１で動作する上位のクライアントプログラムに渡す。
【００２０】
また、図１６中”Ｓ２０１”においてサーバ２で動作するサービスコンポーネント（ＳＣ０１）は、サーバ２で動作する下位のミドルウェア（ＭＷ０２）経由でクライアント１で動作するミドルウェア（ＭＷ０１）等からのサービスの要求があったか否かを判断する。
【００２１】
もし、図１６中”Ｓ２０１”においてクライアント１で動作するミドルウェア（ＭＷ０１）等からのサービスの要求があったと判断した場合には、図１６中”Ｓ２０２”においてサーバ２で動作するサービスコンポーネント（ＳＣ０１）は、要求されたサービスに対する処理を実行すると共に図１６中”Ｓ２０３”において当該処理結果をサーバ２で動作する下位のミドルウェア（ＭＷ０２）経由でクライアント１で動作するミドルウェア（ＭＷ０１）等に送信する。
【００２２】
この結果、クライアント１で動作するクライアントプログラム（ＣＰ０１）は、利用するサーボスコンポーネントの定義ファイルに記述等されている当該サービスコンポーネントの位置情報等を指定すると共にクライアント１及びサーバ２で動作するミドルウェアを介してサービスコンポーネントに対してサービスの要求をすることにより、ネットワーク上に分散して存在しサービスを提供する複数のサービスコンポーネントを利用して必要とするアプリケーションを構築することが可能になる。
【発明の開示】
【発明が解決しようとする課題】
【００２３】
しかし、図１１に示すような従来例では、クライアントプログラムと利用されるサービスコンポーネントとの間の関係が固定的であり、関数名等のインターフェースの型で識別するだけで十分であったため、ＷＳＤＬ（Web Service Description Language：Ｗｅｂサービスのインターフェースを記述するためのＸＭＬ（eXtensible Markup Language）をベースとした言語仕様）やＩＤＬ（Interface Definition Language：ＣＯＲＢＡ通信のためのオブジェクトインターフェースを記述する言語仕様）等では各サービスコンポーネントのサービス定義には位置情報、サービス名及び通信プロトコル等のインターフェース等は記述されているもののサービスの内容自体は記述されていないと言った問題点があった。
【００２４】
一方、サービス名やサービス内容を把握可能なサービス定義を用いる技術（ＪＸＴＡのAdvertisement等）では、サービスを利用するためのインターフェース等が明確ではないと言った問題点があった。
【００２５】
さらに、ネットワーク上に配置されるサービスコンポーネントの配置位置の変更等に対しては、多くの従来技術ではアプリケーションの再設定が必要になってしまうと言った問題点があった。
従って本発明が解決しようとする課題は、独自のサービス定義を策定しサービスコンポーネントのネットワーク上の配置位置情報等を意識することなくサービスコンポーネントの利用が可能な分散アプリケーションシステムを実現することにある。
【課題を解決するための手段】
【００２６】
このような課題を達成するために、本発明のうち請求項１記載の発明は、
ネットワーク上に分散して存在しサービスを提供する複数のサービスコンポーネントを利用して必要とするアプリケーションを構築する分散アプリケーションシステムにおいて、
前記ネットワークに接続されサービスを提供すると共にサービス内容を含むサービス定義を供給するサービスコンポーネントが動作し前記サービスコンポーネントの下位層でミドルウェア及びＯＳが順次動作する複数のサーバと、前記ネットワークに接続されクライアントプログラムが動作し前記クライアントプログラムの下位層でミドルウェア及びＯＳが順次動作するクライアントとを備え、
前記クライアント及び前記複数のサーバでそれぞれ動作するミドルウェアが当該サービス定義に基づき論理的ネットワークを構築し、前記クライアントプログラムが指定したサービス内容に基づき前記クライアントで動作するミドルウェアが前記論理的ネットワーク上を検索すると共に発見されたサービスコンポーネントを利用するためのサービスプロキシプログラムを生成し、前記クライアントプログラムが前記サービスプロキシプログラムを介して前記サーバで動作するミドルウェア経由で前記発見されたサービスコンポーネントに対してサービスを要求することにより、サービスコンポーネントのネットワーク上の配置位置情報等を意識することなくサービスコンポーネントの利用が可能になる。また、サービス定義からサービス内容の把握が可能になり、さらに、サービスプロキシプログラムを利用してミドルウェアとの間の通信を行うことにより、ミドルウェアを経由したサービスの要求に関する通信プロトコルの詳細を意識することなくクライアントプログラムを開発することが可能になり、クライアントプログラムの開発効率が向上する。
【００２７】
請求項２記載の発明は、
請求項１記載の発明である分散アプリケーションシステムにおいて、
前記クライアントで動作する前記クライアントプログラムが、
利用するサーボスコンポーネントの定義ファイルを前記クライアントで動作するミドルウェアから取得するステップと、前記定義ファイルに記述されているサービス内容情報を指定するステップと、サービスの利用を前記クライアントで動作するミドルウェアが生成した、サービスコンポーネントを利用するためのサービスプロキシプログラムを介して要求するステップと、前記サービスプロキシプログラムから処理結果を受信し、他のサービスコンポーネントを利用する場合に第１のステップに戻るステップとから成ることにより、サービスコンポーネントのネットワーク上の配置位置情報等を意識することなくサービスコンポーネントの利用が可能になる。また、サービス定義からサービス内容の把握が可能になり、さらに、サービスプロキシプログラムを利用してミドルウェアとの間の通信を行うことにより、ミドルウェアを経由したサービスの要求に関する通信プロトコルの詳細を意識することなくクライアントプログラムを開発することが可能になり、クライアントプログラムの開発効率が向上する。
【００２８】
請求項３記載の発明は、
請求項１記載の発明である分散アプリケーションシステムにおいて、
前記クライアントで動作するミドルウェアが、
前記クライアントプログラムからサービス内容の指定を受けた場合に利用要求のあったサービス内容を前記論理的ネットワークを形成する他のミドルウェアに対して照会して検索するステップと、前記指定されたサービス内容のサービスを提供するサービスコンポーネントを発見した場合に、発見されたサービスコンポーネントを利用するためのサービスプロキシプログラムを生成するステップと、前記サービスプロキシプログラムを介して要求されたサービスを、先に発見したサービスコンポーネントが動作する前記サーバで動作するミドルウェアを経由してサービスコンポーネントに対して要求するステップと、前記サーバで動作するミドルウェアを経由して処理結果を取得した場合に、取得した処理結果を前記サービスプロキシプログラムに渡すステップとから成ることにより、サービスコンポーネントのネットワーク上の配置位置情報等を意識することなくサービスコンポーネントの利用が可能になる。また、サービス定義からサービス内容の把握が可能になり、さらに、サービスプロキシプログラムを利用してミドルウェアとの間の通信を行うことにより、ミドルウェアを経由したサービスの要求に関する通信プロトコルの詳細を意識することなくクライアントプログラムを開発することが可能になり、クライアントプログラムの開発効率が向上する。
【００２９】
請求項４記載の発明は、
請求項１記載の発明である分散アプリケーションシステムにおいて、
前記サーバで動作するサービスコンポーネントが、
前記クライアントで動作するミドルウェアからのサービスの要求があった場合に、要求されたサービスに対する処理を実行するステップと、処理結果を前記サーバで動作するミドルウェア経由で前記クライアントで動作するミドルウェアに送信するステップとから成ることにより、サービスコンポーネントのネットワーク上の配置位置情報等を意識することなくサービスコンポーネントの利用が可能になる。また、サービス定義からサービス内容の把握が可能になり、さらに、サービスプロキシプログラムを利用してミドルウェアとの間の通信を行うことにより、ミドルウェアを経由したサービスの要求に関する通信プロトコルの詳細を意識することなくクライアントプログラムを開発することが可能になり、クライアントプログラムの開発効率が向上する。
【００３０】
請求項５記載の発明は、
請求項１記載の発明である分散アプリケーションシステムにおいて、
仲介プログラムが動作する第２のサーバとを備え、
前記第２のサーバで動作する前記仲介プログラムが前記クライアントプログラムからの要求内容や前記クライアントのデバイスタイプに関する情報に基づき必要なサービスコンポーネントを選択することにより、複数のサービスコンポーネントを適宜組み合わせて利用することが可能になる。
【００３１】
請求項６記載の発明は、
請求項５記載の発明である分散アプリケーションシステムにおいて、
前記第２のサーバで動作する仲介プログラムが、
前記クライアントで動作するミドルウェア経由で前記クライアントプログラムからサービス内容の指定を受けた場合に、前記クライアントのデバイスタイプに関する情報を取得すると共に利用要求のあったサービス内容を前記論理的ネットワークを形成する他のミドルウェアに対して照会して検索するステップと、指定されたサービス内容のサービスを提供するサービスコンポーネントを発見した場合に、発見したサービスコンポーネントが動作する前記サーバで動作するミドルウェアを経由してサービスコンポーネントに対して要求するステップと、処理結果を取得した場合に、前記クライアントのデバイスタイプに関する情報に基づき前記クライアントの表示能力に適した表示情報を作成する第２のサービスコンポーネントが動作するサーバで動作するミドルウェアを経由して第２のサービスコンポーネントに対して要求するステップと、
前記サーバから取得したクライアントの表示能力に適して作成された表示情報を前記クライアントプログラムに前記サービスプロキシプログラム経由で渡すステップとから成ることにより、複数のサービスコンポーネントを適宜組み合わせて利用することが可能になる。
【発明の効果】
【００３２】
本発明によれば次のような効果がある。
請求項１，２，３及び請求項４の発明によれば、サービスコンポーネントがサービス内容を含むサービス定義を供給し、クライアント及び各サーバで動作するミドルウェアが当該サービス定義に基づき論理的ネットワークを構築しておき、クライアントで動作するクライアントプログラムが指定した定義ファイルに記述されている当該サービス内容等に基づきミドルウェアが論理的ネットワーク上を検索し、発見されたサービスコンポーネントを利用するためのサービスプロキシプログラムを生成し、クライアントで動作するクライアントプログラムがサービスプロキシプログラムを介してサーバで動作するミドルウェア経由でサービスコンポーネントに対してサービスの要求をすることにより、サービスコンポーネントのネットワーク上の配置位置情報等を意識することなくサービスコンポーネントの利用が可能になる。また、サービス定義からサービス内容の把握が可能になり、さらに、サービスプロキシプログラムを利用してミドルウェアとの間の通信を行うことにより、ミドルウェアを経由したサービスの要求に関する通信プロトコルの詳細を意識することなくクライアントプログラムを開発することが可能になり、クライアントプログラムの開発効率が向上する。
【００３３】
また、請求項５及び請求項６の発明によれば、サーバで動作する仲介プログラムがクライアントで動作するクライアントプログラムからの要求内容やクライアントのデバイスタイプに関する情報に基づき必要なサービスコンポーネントを選択することにより、複数のサービスコンポーネントを適宜組み合わせて利用することが可能になる。
【発明を実施するための最良の形態】
【００３４】
以下本発明を図面を用いて詳細に説明する。図１は本発明に係る分散アプリケーションシステムの一実施例を示す構成ブロック図である。図１において５はネットワーク上に分散して存在しサービスを提供する複数のサービスコンポーネントを利用して必要とするアプリケーションを構築するクライアントプログラムが動作するコンピュータ等のクライアント、６，７及び８はネットワーク上に分散配置されサービスを提供するサービスコンポーネントが動作するコンピュータ等のサーバ、１０１はインターネットやＬＡＮ等の汎用のネットワークである。
【００３５】
クライアント５はネットワーク１０１に接続され、サーバ６，７及び８もまたネットワーク１０１にそれぞれ接続される。
【００３６】
ここで、図１に示す実施例の動作を図２、図３、図４、図５及び図６を用いて説明する。図２はクライアント５及び各サーバにおけるソフトウェアの階層構造を説明する説明図、図３は論理的ネットワークの概念を説明する説明図、図４はクライアント５で動作するクライアントプログラムの動作を説明するフロー図、図５はクライアント５で動作するミドルウェアの動作を説明するフロー図、図６は各サーバで動作するサービスコンポーネントの動作を説明するフロー図である。
【００３７】
図２中”ＯＳ２１”、”ＭＷ２１”及び”ＣＰ２１”はクライアント５でそれぞれ動作するＯＳ（Operating System）、ミドルウェア及びアプリケーションプログラムであり、図２中”ＮＴ２１”に示すネットワーク１０１から上位層に向かって順次階層化されている。
【００３８】
同様に、図２中”ＯＳ２２”、”ＭＷ２２”及び”ＳＣ２１”はサーバ６でそれぞれ動作するＯＳ、ミドルウェア及びサービスコンポーネント、図２中”ＯＳ２３”、”ＭＷ２３”及び”ＳＣ２２”はサーバ７でそれぞれ動作するＯＳ、ミドルウェア及びサービスコンポーネント、図２中”ＯＳ２４”、”ＭＷ２４”及び”ＳＣ２３”はサーバ８でそれぞれ動作するＯＳ、ミドルウェア及びサービスコンポーネントであり、それぞれ、図２中”ＮＴ２１”に示すネットワーク１０１から上位層に向かって順次階層化されている。
【００３９】
先ず、第１に、各サービスコンポーネントは提供するサービスの内容を下記に示すようなサービス定義として記述している。但し、当該サービス定義にはネットワーク上の配置位置情報や通信プロトコル等を示す内容は記述されていない。
（１）  サービスのＩＤ
（２）  サービスの名前
（３）  有効期限
（４）  提供者
（５）  バージョン
（６）  サービス内容
（７）  サービスの利用形式（インターフェース）
（ａ）  オペレーション名
（ｂ）  入力値の数と名前と型
（ｃ）  戻り値の型
（ｄ）  エラー情報
【００４０】
第２に、クライアント５及びサーバ６〜８で動作する各ミドルウェアは上述のようなサービス定義に基づき論理的ネットワークを構築する。すなわち、このような論理的ネットワーク上ではサービスコンポーネントの検索や利用等は上述のサービス定義の内容によって処理されるので、ネットワーク上の配置位置情報や通信プロトコル等はクライアントプログラムに対しては遮蔽されることになる。
【００４１】
図３中”ＬＮ３１”に示すような論理的ネットワーク上では、図３中”ＣＰ２１”に示すクライアント５のアプリケーションプログラムから各サーバのサービスコンポーネントを利用する場合には、図３中”ＰＮ３１”に示す物理的ネットワークに分散する図３中”ＳＣ２１”、”ＳＣ２２”及び”ＳＣ２３”に示すサービスコンポーネントのＩＰアドレスやＵＲＬ等の位置情報や使用される通信プロトコルを意識することなく、図３中”ＭＷ２１”、”ＭＷ２２”及び”ＭＷ２３”に示す各サーバで動作するミドルウェアに対して利用要求を行うことによりサービスコンポーネントを利用することになる。
【００４２】
例えば、図３中”ＣＰ２１”に示すクライアントプログラムが図３中”ＳＣ２２”に示すサービスコンポーネントを利用する場合には、図３中”ＣＰ２１”に示すクライアントプログラムは先ず図３中”ＡＣ３１”に示すように図３中”ＭＷ２２”に示すミドルウェアに利用要求を出し、図３中”ＭＷ２２”に示すミドルウェアが図３中”ＡＣ３２”に示すように、図３中”ＳＣ２２”に示すサービスコンポーネントの位置情報や使用される通信プロトコルを意識した上で当該サービスコンポーネントを利用することになる。
【００４３】
さらに、各プログラム等の動作をフロー図を用いて説明する。図４中”Ｓ３０１”においてクライアント５で動作するクライアントプログラム（ＣＰ２１）は、利用するサーボスコンポーネントの定義ファイルをクライアント５で動作するミドルウェア（ＭＷ２１）から取得し、図４中”Ｓ３０２”において当該定義ファイルに記述されているサービス内容情報等を指定し、図４中”Ｓ３０３”においてサービスの利用をクライアント５で動作する下位のミドルウェア（ＭＷ２１）が生成した、サービスコンポーネントを利用するためのサービスプロキシプログラムを介してサービスを呼び出す。
【００４４】
図４中”Ｓ３０４”においてクライアント５で動作するクライアントプログラム（ＣＰ２１）は、クライアント５で動作する下位のミドルウェア（ＭＷ２１）が生成したサービスプロキシプログラムから処理結果を受信するまで待機し、処理結果を受信した場合には、図４中”Ｓ３０５”においてクライアント５で動作するクライアントプログラム（ＣＰ２１）は、他のサービスコンポーネントを利用するか否かを判断する。
【００４５】
もし、図４中”Ｓ３０５”において他のサービスコンポーネントを利用すると判断した場合には、図４中”Ｓ３０１”のステップに戻り、他のサービスコンポーネントを利用しないと判断した場合には処理を終了する。
【００４６】
一方、図５中”Ｓ４０１”においてクライアント５で動作するミドルウェア（ＭＷ２１）は、クライアント５で動作する上位のクライアントプログラム（ＣＰ２１）からサービス内容等の指定を受けたか否かを判断し、もし、サービス等の指定を受けたと判断した場合には、図５中”Ｓ４０２”においてクライアント５で動作するミドルウェア（ＭＷ２１）は、利用要求のあったサービス内容を論理的ネットワーク（ＬＮ３１）を形成する他のミドルウェアに対して照会して検索する。
【００４７】
もし、図５中”Ｓ４０３”において当該指定されたサービス内容のサービスを提供するサービスコンポーネント（ＳＣ２２）を発見したと判断した場合には、図５中”Ｓ４０４”においてクライアント５で動作するミドルウェア（ＭＷ２１）は、発見されたサービスコンポーネントを利用するためのサービスプロキシプログラムを生成する。
【００４８】
そして、図５中”Ｓ４０５”においてクライアント５で動作するミドルウェア（ＭＷ２１）は、当該サービスプロキシプログラムを介して要求されたサービスを、先に発見したサービスコンポーネント（ＳＣ２２）が動作するサーバ７で動作するミドルウェア（ＭＷ２２）を経由してサービスコンポーネント（ＳＣ２２）に対して要求すると共に図５中”Ｓ４０６”においてサーバ７で動作するミドルウェア（ＭＷ２２）を経由して処理結果を取得するまで待機する。
【００４９】
図５中”Ｓ４０６”においてサーバ７で動作するミドルウェア（ＭＷ２２）を経由して処理結果を取得した場合には、図５中”Ｓ４０７”においてクライアント５で動作するミドルウェア（ＭＷ２１）は、取得した処理結果をサービスプロキシプログラムに渡す。
【００５０】
また、図６中”Ｓ５０１”においてサーバ７で動作するサービスコンポーネント（ＳＣ２２）は、サーバ７で動作する下位のミドルウェア（ＭＷ２２）経由でクライアント５で動作するミドルウェア（ＭＷ２１）等からのサービスの要求があったか否かを判断する。
【００５１】
もし、図６中”Ｓ５０１”においてクライアント５で動作するミドルウェア（ＭＷ２１）等からのサービスの要求があったと判断した場合には、図６中”Ｓ５０２”においてサーバ７で動作するサービスコンポーネント（ＳＣ２１）は、要求されたサービスに対する処理を実行すると共に図６中”Ｓ５０３”において当該処理結果をサーバ７で動作する下位のミドルウェア（ＭＷ２２）経由でクライアント５で動作するミドルウェア（ＭＷ２１）等に送信する。
【００５２】
この結果、サービスコンポーネントがサービス内容を含むサービス定義を供給し、クライアント及び各サーバで動作するミドルウェアが当該サービス定義に基づき論理的ネットワークを構築しておき、クライアントで動作するクライアントプログラムが指定した定義ファイルに記述されている当該サービス内容等に基づきミドルウェアが論理的ネットワーク（ＬＮ２１）上を検索し、発見されたサービスコンポーネントを利用するためのサービスプロキシプログラムを生成し、クライアントで動作するクライアントプログラムがサービスプロキシプログラムを介してサーバで動作するミドルウェア経由でサービスコンポーネントに対してサービスの要求をすることにより、サービスコンポーネントのネットワーク上の配置位置情報等を意識することなくサービスコンポーネントの利用が可能になる。
【００５３】
また、サービス定義からサービス内容の把握が可能になり、さらに、サービスプロキシプログラムを利用してミドルウェアとの間の通信を行うことにより、ミドルウェアを経由したサービスの要求に関する通信プロトコルの詳細を意識することなくクライアントプログラムを開発することが可能になり、クライアントプログラムの開発効率が向上する。
【００５４】
なお、図１に示すような実施例を用いることにより複数のサービスコンポーネントを適宜組み合わせて利用することが可能になる。図７はこのような本発明に係る分散アプリケーションシステムの他の実施例を示す構成ブロック図である。
【００５５】
図７において９はネットワーク上に分散して存在しサービスを提供する複数のサービスコンポーネントを利用して必要とするアプリケーションを構築するクライアントプログラムが動作するＰＤＡ（Personal Digital Assistant）等の表示機能に制限を有するクライアント、１０は複数のサービスコンポーネントを適宜組み合わせて利用するための仲介アプリケーションが動作するコンピュータ等のサーバ、１１及び１２はネットワーク上に分散配置されサービスを提供するサービスコンポーネントが動作するコンピュータ等のサーバ、１０２はインターネットやＬＡＮ等の汎用のネットワークである。
【００５６】
クライアント９はネットワーク１０２に接続され、サーバ１０，１１及び１２もまたネットワーク１０２にそれぞれ接続される。
【００５７】
ここで、図７に示す実施例の動作を図８、図９及び図１０を用いて説明する。図８はサーバ１０で動作する仲介アプリケーションの動作を説明するフロー図、図９及び図１０は情報等の流れを説明する説明図である。
【００５８】
また、サーバ１１にはクライアント９の表示能力に適した表示情報を作成するサービスを提供するサービスコンポーネントが動作し、サーバ１２はクライアントが必要とする情報を収集するサービスを提供するサービスコンポーネントが動作するものと仮定する。
【００５９】
但し、サーバ１１及び１２で動作するサービスコンポーネントやミドルウェア等の動作は図１に示す実施例と同様であるので説明は省略する。また、クライアント９で動作するクライアントプログラム及びミドルウェアは直接仲介プログラムにサービス要求をする以外は図１に示す実施例と同様であるので説明は省略する。
【００６０】
図８中”Ｓ６０１”においてサーバ１０で動作する仲介プログラムは、クライアント５で動作するミドルウェア（サービスプロキシプログラム）経由で上位のクライアントプログラムからサービス内容等の指定を受けたか否かを判断し、もし、サービス等の指定を受けたと判断した場合には、図８中”Ｓ６０２”においてサーバ１０で動作する仲介プログラムは、利用要求のあったサービス内容を論理的ネットワークを形成する他のミドルウェアに対して照会して検索する。
【００６１】
また、図８中”Ｓ６０１”の時点においてサーバ１０で動作する仲介プログラムは、クライアント９のデバイスタイプに関する情報、具体的には、クライアント９の表示分解能、表示色数等の情報を合わせて取得する。
【００６２】
例えば、図９中”ＲＱ４１”に示すようにクライアント９がサーバ１０で動作する仲介プログラムに対して情報の収集及び表示を要求した場合、サーバ１０で動作する仲介プログラムは、利用要求のあったサービス内容を論理的ネットワークを形成する他のミドルウェアに対して照会して検索し、必要とするサービスコンポーネントがサーバ１２で動作していることを発見する。
【００６３】
もし、図８中”Ｓ６０３”において当該指定されたサービス内容のサービスを提供するサービスコンポーネントを発見したと判断した場合には、図８中”Ｓ６０４”においてサーバ１０で動作する仲介プログラムは、発見したサービスコンポーネントが動作するサーバ１２で動作するミドルウェアを経由してサービスコンポーネントに対して要求すると共に図８中”Ｓ６０５”において処理結果を取得するまで待機する。
【００６４】
例えば、図９中”ＲＱ４２”に示すようにサーバ１０で動作する仲介プログラムは、発見したサービスコンポーネントが動作するサーバ１２に対して、クライアントが必要とする情報を収集させると共に図９中”ＲＳ４１”に示すような処理結果である収集した情報を取得するまで待機する。
【００６５】
そして、図８中”Ｓ６０５”において処理結果を取得した場合には、図８中”Ｓ６０６”においてサーバ１０で動作する仲介プログラムは、先に取得したクライアント９のデバイスタイプに関する情報に基づきクライアント９の表示能力に適した表示情報を作成するサービスコンポーネントが動作するサーバ１１で動作するミドルウェアを経由してサービスコンポーネントに対して要求する。
【００６６】
例えば、図１０中”ＤＣ５１”に示すようにサーバ１０で動作する仲介プログラムは、取得した情報をクライアント９の表示能力に適した表示情報を作成するサービスコンポーネントが動作するサーバ１１に対して送信すると共に図１０中”ＲＳ５１”に示すように作成された表示情報を取得する。
【００６７】
最後に、図８中”Ｓ６０７”においてサーバ１０で動作する仲介プログラムは、サーバ１１から取得したクライアント９の表示能力に適して作成された表示情報をクライアント９で動作するクライアントプログラムにミドルウェア（サービスプロキシプログラム）経由で渡す。
【００６８】
例えば、図１０中”ＲＳ５２”に示すようにサーバ１０で動作する仲介プログラムは、ライアント９の表示能力に適して作成された表示情報をクライアント９で動作するクライアントプログラムにミドルウェア（サービスプロキシプログラム）経由で渡す。
【００６９】
この結果、サーバ１０で動作する仲介プログラムがクライアント９で動作するクライアントプログラムからの要求内容やクライアント９のデバイスタイプに関する情報に基づき必要なサービスコンポーネントを選択することにより、複数のサービスコンポーネントを適宜組み合わせて利用することが可能になる。
【図面の簡単な説明】
【００７０】
【図１】本発明に係る分散アプリケーションシステムの一実施例を示す構成ブロック図である。
【図２】クライアント及び各サーバにおけるソフトウェアの階層構造を説明する説明図である。
【図３】論理的ネットワークの概念を説明する説明図である。
【図４】クライアントで動作するクライアントプログラムの動作を説明するフロー図である。
【図５】クライアントで動作するミドルウェアの動作を説明するフロー図である。
【図６】各サーバで動作するサービスコンポーネントの動作を説明するフロー図である。
【図７】本発明に係る分散アプリケーションシステムの他の実施例を示す構成ブロック図である。
【図８】サーバで動作する仲介アプリケーションの動作を説明するフロー図である。
【図９】情報等の流れを説明する説明図である。
【図１０】情報等の流れを説明する説明図である。
【図１１】従来の分散アプリケーションシステムの一例を示す説明図である。
【図１２】クライアント及び各サーバにおけるソフトウェアの階層構造を説明する説明図である。
【図１３】物理的ネットワークの概念を説明する説明図である。
【図１４】クライアントで動作するクライアントプログラムの動作を説明するフロー図である。
【図１５】クライアントで動作するミドルウェアの動作を説明するフロー図である。
【図１６】各サーバで動作するサービスコンポーネントの動作を説明するフロー図である。
【符号の説明】
【００７１】
１，５，９  クライアント
２，３，４，６，７，８，１０，１１，１２  サーバ
１００，１０１，１０２  ネットワーク
【図１】
2005251046.tif 000003
【図２】
2005251046.tif 000004
【図３】
2005251046.tif 000005
【図４】
2005251046.tif 000006
【図５】
2005251046.tif 000007
【図６】
2005251046.tif 000008
【図７】
2005251046.tif 000009
【図８】
2005251046.tif 000010
【図９】
2005251046.tif 000011
【図１０】
2005251046.tif 000012
【図１１】
2005251046.tif 000013
【図１２】
2005251046.tif 000014
【図１３】
2005251046.tif 000015
【図１４】
2005251046.tif 000016
【図１５】
2005251046.tif 000017
【図１６】
2005251046.tif 000018