(57)【特許請求の範囲】
【請求項１】
分散型システム内のサービス・コンピューティング・デバイスにおいて、Ｗｅｂサービスの環境内で通信するように開発されていないレガシ・インターフェースを介して通信するレガシ・コンポーネント用オブジェクトを介してＷｅｂサービスを提供する方法であって、前記サービス・コンピューティング・デバイスにより実行される前記方法は、
Ｗｅｂサービスのクライアントから、Ｗｅｂサービスの環境内で通信するように開発されていないレガシ・インターフェースを使用して通信する、１つまたは複数のレガシ・コンポーネントを備えるアプリケーションにより提供されるサービスにアクセスする要求を受け取るステップと、
前記Ｗｅｂサービスのクライアントと前記１つまたは複数のレガシ・コンポーネントのレガシ・インターフェースとの間でサロゲート・インターフェースを公開することにより、前記オブジェクトであり、開発者が、前記レガシ・コンポーネントを書き換えなくても、前記Ｗｅｂサービスの相互運用性、ロバスト性および効率を厳格に制御することを可能にする、サービス・サロゲートにより制御されるサービスに前記要求が対応することを識別するステップと、
さらに処理するために、前記１つまたは複数のレガシ・コンポーネントへの呼出し、前記サービス・サロゲートの前記インスタンスへの呼出し、または前記アプリケーションおよび前記サービス・サロゲートの外部にある他のシステムへの呼出しのうちの１つまたは複数により前記要求の少なくとも一部を処理するように構成される前記サービス・サロゲートのインスタンスに、前記サロゲート・インターフェースを介して前記要求の少なくとも一部を渡すステップと
を備え、前記サービス・サロゲートは、前記アプリケーションを初期化する要求に基づいて生成されることを特徴とする方法。
【請求項２】
前記サービス・サロゲートの前記インスタンスおよび前記サロゲート・インターフェースを生成するために、サロゲート記述が使用され、前記サロゲート記述は、呼出しオペレーション、パラメータ、または前記１つまたは複数のレガシ・コンポーネント、前記サービス・サロゲートの前記インスタンス、または前記アプリケーションおよび前記サービス・サロゲートの前記インスタンスの外部にある前記他のシステムと通信するためのメッセージ交換パターンのうちの１つまたは複数を記述することを特徴とする請求項１に記載の方法。
【請求項３】
前記アプリケーションを停止する要求を受け取るステップと、
前記アプリケーションを停止する前記要求に基づき、前記サービス・サロゲートの前記インスタンスを自動的に停止するステップと、
前記サービス・サロゲートの新しいインスタンスおよび新しいサロゲート記述が前記アプリケーションの前記次の初期化時に生成されるように前記サロゲート記述を削除するステップと
をさらに備えることを特徴とする請求項２に記載の方法。
【請求項４】
前記サロゲート・インターフェースは、サロゲート記述に基づいて作成され、
前記サロゲート記述に基づき、前記１つまたは複数のレガシ・コンポーネントのメッセージ交換パターンは前記Ｗｅｂサービスのクライアントに対する応答を必要とすることを識別するステップと、
１つまたは複数の戻り値を、前記１つまたは複数のレガシ・コンポーネント、前記サービス・サロゲートの前記インスタンス、または前記アプリケーションおよび前記サービス・サロゲートの前記インスタンスの外部にある前記他のシステムのうちの１つまたは複数から、受け取るステップと、
前記サービス・サロゲートの前記インスタンスを使用して、前記１つまたは複数の戻り値を、Ｗｅｂサービスの応答メッセージにフォーマットするステップと、
さらに処理するために、前記Ｗｅｂサービスの応答メッセージを前記Ｗｅｂサービスのクライアントに送るステップと
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項５】
前記レガシ・インターフェースのインターフェース記述に基づき、前記１つまたは複数のレガシ・コンポーネントを備える前記アプリケーションにより提供される他のサービス用のダイナミックＷｅｂサービスが、前記アプリケーションの前記初期化時に前記サービス・コンピューティング・デバイスにより生成され、前記ダイナミックＷｅｂサービスは、前記レガシ・インターフェースの文字通りの翻訳であり、さらに、
前記他のサービスに対応する他のサービスの要求メッセージであって、１つまたは複数のパラメータおよび前記１つまたは複数のレガシ・コンポーネントにより提供されるサービスを要求する１つまたは複数のオペレーションを含むサービスの要求メッセージを受け取るステップと、
前記ダイナミックＷｅｂサービスを使用して、前記１つまたは複数のレガシ・コンポーネントに対する１つまたは複数の呼出しを実行するステップと、
さらに処理するために、前記１つまたはそれ以上のパラメータを前記１つまたは複数のレガシ・コンポーネントのうちの１つまたは複数に渡すステップと
を備えることを特徴とする請求項１に記載の方法。
【請求項６】
前記レガシ・インターフェース記述に基づき、前記１つまたは複数のレガシ・コンポーネント用のメッセージ交換パターンが前記Ｗｅｂサービスのクライアントに対する応答を必要とすることを識別するステップと、
前記１つまたは複数のレガシ・コンポーネントから１つまたは複数の戻り値を受け取るステップと、
前記ダイナミックＷｅｂサービスを使用して、前記戻り値をＷｅｂサービスの応答メッセージにフォーマットするステップと、
さらに処理するために、前記Ｗｅｂサービスの応答メッセージを前記Ｗｅｂサービスのクライアントに送るステップと
をさらに備えることを特徴とする請求項５に記載の方法。
【請求項７】
Ｗｅｂサービスの環境内で通信するように開発されていないレガシ・インターフェースを介して通信する１つまたは複数のレガシ・コンポーネント用のオブジェクトを初期化する方法であって、分散型システム内のサービス・コンピューティング・デバイスにおいて実行される前記方法は、
Ｗｅｂサービスの環境内で通信するように開発されていないレガシ・インターフェースを使用して通信する１つまたは複数の、サービスを提供するためのレガシ・コンポーネントを含むアプリケーションを初期化する要求を受け取るステップと、
前記アプリケーションを初期化する前記要求に基づき、Ｗｅｂサービスのクライアントと前記１つまたは複数のレガシ・コンポーネントのレガシ・インターフェースとの間でサロゲート・インターフェースを公開することにより、前記オブジェクトであり、開発者が、前記１つまたは複数のレガシ・コンポーネントを書き換えなくても、前記Ｗｅｂサービスの相互運用性、ロバスト性、および効率を厳格に制御することを可能にするサービス・サロゲートのインスタンスが生成されるべきであることを識別するステップと、
前記Ｗｅｂサービスのクライアントに公開される、前記サロゲート・インターフェースを記述するメタデータにアクセスするステップと、
前記メタデータを使用して、前記サロゲート・インターフェースを含む前記サービス・サロゲートの前記インスタンスを生成するステップと
を備え、
前記サービス・サロゲートの前記インスタンスは、前記１つまたは複数のレガシ・コンポーネントの呼出し、前記サービス・サロゲートの前記インスタンスの呼出し、または前記アプリケーションおよび前記サービス・サロゲートの前記インスタンスの外部にある他のシステムの呼出しのうちの１つまたは複数により前記Ｗｅｂサービスのクライアントからの要求の少なくとも一部を処理するように構成されていることを特徴とする方法。
【請求項８】
前記アプリケーションを初期化する前記要求は、前記Ｗｅｂサービスのクライアントからの前記サービスの要求メッセージに対する応答として受け取られることを特徴とする請求項７に記載の方法。
【請求項９】
前記アプリケーションを初期化する前記要求は、前記サービス・コンピューティング・デバイスのユーザ・インターフェースからの入力に対する応答として受け取られることを特徴とする請求項７に記載の方法。
【請求項１０】
前記メタデータを使用して、サロゲート記述を最初に生成し、その後、前記サロゲート記述を使用して前記サービス・サロゲートの前記インスタンスおよび前記サロゲート・インターフェースを生成することを特徴とする請求項７に記載の方法。
【請求項１１】
前記サロゲート記述は、呼出しオペレーション、パラメータ、または前記１つまたは複数のレガシ・コンポーネント、前記サービス・サロゲートの前記インスタンス、または前記アプリケーションおよび前記サービス・サロゲートの前記インスタンスの外部にある前記他のシステムと通信するためのメッセージ交換パターンのうちの１つまたは複数を記述することを特徴とする請求項１０に記載の方法。
【請求項１２】
前記サロゲート記述は、ＷＳＤＬドキュメントであることを特徴とする請求項１０に記載の方法。
【請求項１３】
前記サロゲート記述に基づき、前記１つまたは複数のレガシ・コンポーネントのメッセージ交換パターンは前記Ｗｅｂサービスのクライアントに対する応答を必要とすることを識別するステップと、
１つまたは複数の戻り値を、前記１つまたは複数のレガシ・コンポーネント、前記サービス・サロゲートの前記インスタンス、または前記アプリケーションおよび前記サービス・サロゲートの前記インスタンスの外部にある前記他のシステムのうちの１つまたは複数から受け取るステップと、
前記サービス・サロゲートの前記インスタンスを使用して、前記１つまたは複数の戻り値をＷｅｂサービスの応答メッセージにフォーマットするステップと、
さらに処理するために、前記Ｗｅｂサービスの応答メッセージを前記Ｗｅｂサービスのクライアントに送るステップと
をさらに備えることを特徴とする請求項１０に記載の方法。
【請求項１４】
前記レガシ・インターフェースのインターフェース記述に基づき、前記１つまたは複数のレガシ・コンポーネントを備える前記アプリケーションにより提供される他のサービス用のダイナミックＷｅｂサービスが前記アプリケーションの前記初期化時に生成され、前記ダイナミックＷｅｂサービスは、前記レガシ・インターフェースの文字通りの翻訳であり、さらに、
前記他のサービスに対応する他のサービスの要求メッセージであって、前記１つまたは複数のレガシ・コンポーネントにより提供される前記他のサービスを要求する１つまたは複数のオペレーションを含む他のサービスの要求メッセージを受け取るステップと、
前記１つまたは複数のオペレーションに基づき、前記ダイナミックＷｅｂサービスを使用して、前記１つまたは複数のレガシ・コンポーネントへの１つまたは複数の呼出しを行うステップと
を備えることを特徴とする請求項１０に記載の方法。
【請求項１５】
前記Ｗｅｂサービスの要求メッセージは、さらに、１つまたは複数のパラメータを含み、
さらに処理するために、前記１つまたは複数パラメータを前記１つまたは複数のレガシ・コンポーネントのうちの１つまたは複数に渡すステップ
をさらに備えることを特徴とする請求項１４に記載の方法。
【請求項１６】
前記レガシ・インターフェース記述に基づき、前記１つまたは複数のレガシ・コンポーネント用のメッセージ交換パターンが前記Ｗｅｂサービスのクライアントに対する応答を必要とすることを識別するステップと、
前記１つまたは複数のレガシ・コンポーネントから１つまたは複数の戻り値を受け取るステップと、
前記ダイナミックＷｅｂサービスを使用して、前記戻り値をＷｅｂサービスの応答メッセージにフォーマットするステップと、
さらに処理するために、前記Ｗｅｂサービスの応答メッセージを前記Ｗｅｂサービスのクライアントに送るステップと
をさらに備えることを特徴とする請求項１５に記載の方法。
【請求項１７】
前記アプリケーションを停止する要求を受け取るステップと、
前記アプリケーションを停止する前記要求に基づき、前記サービス・サロゲートの前記インスタンスおよび前記ダイナミックＷｅｂサービスを自動的に停止するステップと、
前記サービス・サロゲートの新しいインスタンス、新しいダイナミックＷｅｂサービス、新しいサロゲート記述および新しいＷｅｂサービス記述が、前記アプリケーションの前記次の初期化時に生成されるように、前記サロゲート記述および前記Ｗｅｂサービス記述を削除するステップと
を備えることを特徴とする請求項１６に記載の方法。
【請求項１８】
前記アプリケーションを停止する要求を受け取るステップと、
前記アプリケーションを停止する前記要求に基づき、前記サービス・サロゲートの前記インスタンスを自動的に停止するステップと、
前記サービス・サロゲートの新しいインスタンスおよび新しいサロゲート記述が前記アプリケーションの前記次の初期化時に生成されるように、前記サロゲート記述を削除するステップと
をさらに備えることを特徴とする請求項７に記載の方法。
【請求項１９】
分散型コンピューティング・システム内のサービス・コンピューティング・デバイスにおいて、Ｗｅｂサービスの環境内で通信するように開発されていないレガシ・インターフェースを介して通信する１つまたは複数のレガシ・コンポーネント用のオブジェクトを初期化する方法を実装するためのコンピュータ・プログラムであって、プロセッサにより実行されると、前記分散型コンピューティング・システムに、
Ｗｅｂサービスの環境内で通信するように開発されていないレガシ・インターフェースを使用して通信する１つまたは複数のレガシ・コンポーネントを含むアプリケーションを初期化する要求を受け取ること、
前記アプリケーションを初期化する前記要求に基づき、Ｗｅｂサービスのクライアントと前記１つまたは複数のレガシ・コンポーネントのレガシ・インターフェースとの間でサロゲート・インターフェースを公開することにより、前記オブジェクトであり、開発者が、前記１つまたは複数のレガシ・コンポーネントを書き換えなくても、前記Ｗｅｂサービスの相互運用性、ロバスト性、および効率を厳格に制御することを可能にするサービス・サロゲートのインスタンスは生成されるべきであることを識別すること、
前記Ｗｅｂサービスのクライアントに公開される、前記サロゲート・インターフェースを記述するメタデータにアクセスすること、および
前記メタデータを使用して前記サロゲート・インターフェースを含む前記サービス・サロゲートの前記インスタンスを生成すること
を実行させ、
前記サービス・サロゲートの前記インスタンスは、前記１つまたは複数のレガシ・コンポーネントの呼出し、前記サービス・サロゲートの前記インスタンスの呼出し、または前記アプリケーションおよび前記サービス・サロゲートの前記インスタンスの外部にある他のシステムの呼出しのうちの１つまたは複数により前記Ｗｅｂサービスのクライアントからの要求の少なくとも一部を処理するように構成されていることを特徴とするコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、Ｗｅｂサービスに関し、より詳細には、Ｗｅｂサービス環境内での通信用に開発されていないレガシ・アプリケーション・コンポーネント用のダイナミックＷｅｂサービス（dynamic web service）およびダイナミック・サービス・サロゲート（dynamic service surrogate）を生成することに関する。また、サービス・サロゲートを利用すると、開発者は、Ｗｅｂサービス・クライアントとレガシ・インターフェースとの間に抽象層を用意することにより、Ｗｅｂサービス・クライアントに公開されるインターフェースをより厳格に制御することができて都合がよい。
【背景技術】
【０００２】
コンピュータ・システムおよび関係する技術は、社会の様々な側面に影響を及ぼす。実際、コンピュータ・システムの情報処理能力は、我々のライフ・スタイルと仕事のやり方を一変させた。現在、コンピュータ・システムは、コンピュータ・システムの出現以前には手作業で行われていた多数のタスク（例えば、文書処理、スケジューリング、データベース管理など）を、通常、実行する。最近は、コンピュータ・システム同士が結合されてコンピュータ・ネットワークを形成し、それを介して複数のコンピュータ・システムが電子的に通信してデータを共有することができるようになっている。Ｗｅｂサービスは、コンピュータ・システム間のそのような通信を発展させる推進力となり、ソフトウェアを内部と外部にビルドして使用する様式に変わってきている。
【０００３】
Ｗｅｂサービスを使用することで、アプリケーションはデータを共有できるが、さらにパワフルなのが、アプリケーションがどのような方法でビルドされたか、アプリケーションがどのようなオペレーティング・システムまたはプラットフォーム上で稼働しているか、およびアプリケーションのアクセスにどのようなデバイスが使用されているかに関係なく、他のアプリケーションの機能を呼び出すことができることである。Ｗｅｂサービスは、ＳＯＡＰ（簡易オープン・アクセス・プロトコル）、ＸＭＬ（拡張可能マークアップ言語）、ＵＤＤＩ（汎用記述発見統合）、ＷＳＤＬ（Ｗｅｂサービス記述言語）などを含む、業界標準のプロトコルを使って、インターネット上で呼び出される。複数のＷｅｂサービスは、互いに独立状態を保つが、特定のタスクを実行する１つの協働グループにそれらを緩くリンクすることができる。
【０００４】
多くの場合、Ｗｅｂサービス・ネットワーク上の電子通信は、サーバ・コンピュータ・システム（これ以降「サーバ」、「サービス」、または「Ｗｅｂサービス」と呼ばれる）のネットワーク・サービス（例えば、Ｗｅｂサービス）へのアクセスを要求するクライアント・コンピュータ・システム（これ以降、「クライアント」と呼ばれる）を含む。したがって、クライアントは、システム・リソースへの特定のアクセスを求める要求をサービスに送信し、クライアントが許可され、認証された場合、このサービスは、所望の情報を与える応答メッセージで応答する。もちろん、クライアントとサービスとの間の他のメッセージング・パターンも利用可能であり、これには、単純なシングルトン・メッセージだけでなくより高度なマルチ・メッセージ交換、例えば、通知、送信請求−応答、パブ−サブ・パターン（pub-sub patterns）、ポーリング、キック−プッシュ、キューイング、なども含まれる。さらに、これらのタイプの通信は、クライアントおよび分散システムのコントラクト内のサービス（例えば、Ｗｅｂサービス）の両方により定義される様々な要件および能力に左右される。
【０００５】
コントラクトは、サービス（またはクライアント）ビヘイビアの目に見える側面の一表現である。コントラクトは、機械可読言語と人間言語とを混ぜた言語により表される。機械可読言語を使用すると、正確さが増すという明白な機会に加えて、部分的サービス実装を構築し、サービス展開を自動化し、交換されたメッセージを監査／妥当性確認し、サービスを管理し、多数の他のネットワーク関係機能を使用可能にするツールが利用できるようになる。しかし、機械可読言語の表現力に制限があるので、人間言語は−主にメッセージおよびメッセージ交換パターン意味論を記述するため−相変わらずコントラクトの重要な構成要素である。
【０００６】
ネットワーク・プロトコル記述言語（例えば、ＷＳＤＬ）は、共通または標準言語によりコントラクト（例えば、Ｗｅｂサービス・コントラクト）を記述するための総合的ラッパーまたは仕様を規定する。このような仕様を利用することにより、開発者および開発者ツール側でコントラクトを作成し解釈することが容易である。これらのネットワーク・プロトコル記述言語（これ以降、「ＮＰＤＬ」と呼ばれる）は、広範な一連のツールを備えており、これが、この言語の人気の主な原因である。
【０００７】
Ｗｅｂサービスの出現以前には、何年にもわたり、様々なベンダが提供するレガシ・コンポーネント・ベースのアーキテクチャを使用してかなりの数の分散アプリケーションが書かれた（例えば、ＣＯＭ（コンポーネント・オブジェクト・モデル）、ＤＣＯＭ（分散型コンポーネント・オブジェクト・モデル）、ＣＯＲＢＡ（共通オブジェクト・リクエスト・ブローカー・アーキテクチャ））。しかし、標準ベースのＷｅｂサービスの到来と進歩により、これらのレガシ・コンポーネントからのビジネス・ロジックをＷｅｂサービスとして公開することに関心が集まっている。例えば、その意図は、後のアプローチに関係なく、以下のインターフェース
【０００８】
【表１】
0005420139.tif 000002
【０００９】
をサポートし、そのコンポーネント定義から生成されるアプリケーション・コンポーネント、例えば、以下のＷＳＤＬ断片に例示されているいくつかのオペレーションを持つ対応するＷｅｂサービス層、などのアプリケーション・コンポーネントを取り込むことである。
【００１０】
【表２】
0005420139.tif 000003
【００１１】
今日まで、Ｗｅｂサービス環境内でレガシ・コンポーネントを変換したり、または使用したりする際に、２、３の主要なパターンまたはアプローチのみに従っていた。１つのアプローチは、移行（migration）または修正（modification）であり、これは、開発者に、コンポーネント・ソース・コードを修正してＷｅｂサービス・サポートを追加することを要求した。そのアプリケーションは、コンパイルされて実行されると、従来のクライアントがそのまま基幹アプリケーション（underlying application）に接続できるようにしながら、適切なＷｅｂサービス・サポートから始めることができる。
【００１２】
他のアプローチは、静的ラッピング・サービスを生成する、ツールおよびメタデータ駆動方式（tooling and metadata driven approach）である。このアプローチでは、コンポーネントのソース・コードを修正することなく、より遠い外部にあるアプローチを使用して、コンポーネントの既存の登録済みメタデータを調べ、そのコンポーネントが提供すべきサービスを決定する。これは、外部にあるが、少なくとも最初は基幹の未修正コンポーネントと一致する、静的Ｗｅｂサービス・ラッパーを生成する。
【００１３】
上記の修正された静的アプローチは、レガシ・コンポーネントのビジネス・ロジックにＷｅｂサービス環境でアクセスできるようになったが、これらのアプローチの両方に関連するいくつかの短所および問題がある。例えば、この修正アプローチではソース・コードの修正−ビジネス・ロジックを変更したくなくても−を必要とするため、これは、単純な管理手順というよりはむしろ開発タスクである。したがって、このようなタスクは、典型的な管理者ロールの範囲を越えており、さらなるスキル・セットを必要とする。さらに、Ｗｅｂサービスを使用可能にする開発修正を、オリジナルのコーディング環境を使用して行うことは可能でない場合がある。例えば、もはやサポートされていないレガシ言語を使用して書かれたコンポーネントを修正する場合、まずそのコンポーネントを現行言語に移植しなければならない。したがって、１つの属性をメソッドに追加するように最初は見える修正でも、実際は、異なる言語、ランタイム、および開発環境への移行となる。
【００１４】
静的なツール・アプローチ（static tooling approach）では、基幹コンポーネント（underlying component）を修正した場合、または新しいバージョンが配備される場合に問題が存在する。このような場合、そのサービスが再生成されるまで、ラッピング・サービスに変更が自動的に反映されることはない。さらに、Ｗｅｂサービスの運用については、そのサービスとその基幹コンポーネントとの間に明示的な依存関係がある。したがって、コンポーネントおよびＷｅｂサービスの存続期間が同期していることを確認するよう注意しなければならない（つまり、ラッピング・サービスでは、コンポーネントがアクティブである必要があり、コンポーネントでは、ラッパーがアクティブである必要がある）。さらに、環境、およびラッパーの外部の性質に応じて、配備され、管理されるべき追加コンポーネントがあるのがふつうである。言い換えると、コンポーネントが他のマシンに移動される場合、ラッパー・コンポーネントも識別されて、それに応じて移動されなければならない。
【００１５】
上記の修正された静的なアプローチの欠陥および欠点を解消する１つのアプローチは、本明細書で説明されているように、あるいは、参照により本明細書に組み込まれている特許文献１に記載されているように、Ｗｅｂサービスを動的に生成することである。しかし、このアプローチは（上述のシステムとともに）、まだ様々な欠点を有する。例えば、これらのシステムの問題の１つは、いくつもの理由から、変更できない、またはＷｅｂサービスとして公開するのに適さない可能性のあるインターフェースを備える分散型アプリケーションが存在することである。例えば、Ｗｅｂサービス・メッセージに、例えば、ＳＯＡＰメッセージに、翻訳できないパラメータを必要とする呼出しを持つものがある。それとは別に、またはそれと併せて、それらのアプリケーションは、通常のＷｅｂサービスではサポートしていない、単一のオペレーションに対するメソッド呼出しの往復を必要とするような方法で書かれている可能性がある。
【００１６】
Ｗｅｂサービスとして公開するのに不適切なインターフェースの例として、以下のインターフェースをとりあげる。
【００１７】
【表３】
0005420139.tif 000004
【００１８】
示されているように、ＩＣｏｍＰｌｕｓＯｂｊｅｃｔは、既存のＣＯＭオブジェクトにより公開され、ＩＣｏｍＰｌｕｓＯｂｊｅｃｔを実装するオブジェクト（つまり、ＩＯｒｄｅｒＤｉｓｃｒｉｐｔｉｏｎ）を単一パラメータとして受け取る。しかし、通常のＷｅｂサービス・インフラストラクチャは、オブジェクトをパラメータとして受け取るメソッド呼出しをサポートしていないため、ＩＣｏｍＰｌｕｓＯｂｊｅｃｔは、そのままでＷｅｂサービスとして公開することはできないことに注意されたい。
【００１９】
このような欠陥を補正するために、現在の実務慣例では、修正されたアプローチにおいて上で説明されているように、少なくともそのコンポーネントおよびコンポーネント・インターフェース（および場合によってはアプリケーション全体）の書換えを規定している。しかしながら、上述のように、書換えを介して新しいサービスを作成するこの初歩的アプローチは、かなりの取り組み（大きな仕事）である。クライアントおよびサービスは、同じインターフェースの同じインスタンスを使用することにより密結合されているため、サービスに変更があると、クライアントとサーバは両方とも更新されなければならない。さらに、この高度な書換えは、大半のユーザのスキル・セットの範囲内にないのがふつうである。
【００２０】
【特許文献１】２００５年３月８日に出願の「DYNAMIC SERVICE GENERATION FOR LEGACY COMPONENTS」という表題の米国特許出願
【発明の開示】
【発明が解決しようとする課題】
【００２１】
少なくとも前述の理由から、開発者側で基幹コンポーネントのソース・コードを修正することなく、レガシ・コンポーネントのＷｅｂサービスおよびビジネス・ロジックを提供し、コンポーネントの修正またはバージョニングに対応するとともに、サービスと基幹コンポーネントとの間の明示的依存関係をサポートする必要が存在する。さらに、開発者側がアプリケーション・コンポーネントまたはコンポーネント・インターフェースを書き換えることなく、動作不能または不効率なコンポーネント・インターフェース用のインターフェースを作成できるメカニズムを備える必要が存在する。
【００２２】
Ｗｅｂサービス環境でレガシ・コンポーネントにサービスおよびビジネス・ロジックを提供する典型的なシステムの上記の欠陥および欠点は、本発明の例示的な実施形態を通じて克服される。
【課題を解決するための手段】
【００２３】
例えば、本発明では、Ｗｅｂサービス環境内で通信するように開発されていないレガシ・インターフェースを通じて通信するレガシ・コンポーネント用に開発者によって開発されたカスタム・オブジェクトを介してＷｅｂサービスをサポートするメカニズムを実現する。カスタム・オブジェクトを使用することにより、開発者は、レガシ・コンポーネントまたはコンポーネント・インターフェースの書換えを行わなくても、Ｗｅｂサービスの相互運用性、ロバスト性、および効率を厳格に制御することができる。
【００２４】
例えば、本発明のいくつかの実施形態では、Ｗｅｂサービス・クライアントから、レガシ・コンポーネントを備えるアプリケーションにより提供されるサービスにアクセスする要求を受け取る機能を実現する。レガシ・コンポーネントは、Ｗｅｂサービス環境内で通信するように開発されていないレガシ・インターフェースを使用して通信する。これ以降、その要求は、サービス・サロゲート−これは、Ｗｅｂサービス・クライアントとレガシ・インターフェースとの間でサロゲート・インターフェースを抽象化として公開するために開発者により作成されたカスタム・オブジェクトである−により制御されるサービスに対応するものとして識別される。その要求の少なくとも一部は、サロゲート・インターフェースを介して、さらに処理するために、サービス・サロゲートのインスタンスに受け渡される。サービス・サロゲートは、１つまたは複数のレガシ・コンポーネントへの呼出し、サービス・サロゲートのインスタンスへの呼出し、またはアプリケーション、およびサービス・サロゲートのインスタンスの外部にある他のシステムへの呼出しのうちの１つまたは複数により要求の少なくとも一部を処理するように構成される。
【００２５】
例示的な他の実施形態では、開発者により作成されたカスタム・オブジェクトの初期化を規定する。この実施形態では、サービスを提供するための１つまたは複数のレガシ・コンポーネントを備えるアプリケーションを初期化する要求が受信される。さらに、レガシ・コンポーネントは、Ｗｅｂサービス環境内で通信するように開発されていないレガシ・インターフェースを使用して通信する。アプリケーションを初期化する要求に基づき、サービス・サロゲートのインスタンスは、生成される必要があると識別され、ここで、サービス・サロゲートは、Ｗｅｂサービス・クライアントとレガシ・インターフェースとの間のサロゲート・インターフェースを抽象化として公開するために開発者により作成されたカスタム・オブジェクトである。これ以降、Ｗｅｂサービス・クライアントに公開されるサロゲート・インターフェースを記述するメタデータがアクセスされる。このメタデータは、サロゲート・インターフェースを含む、サービス・サロゲートのインスタンスを生成するために使用される。このサービス・サロゲートのインスタンスは、さらに、１つまたは複数のレガシ・コンポーネントへの呼出し、サービス・サロゲートのインスタンスへの呼出し、またはそのアプリケーションおよびそのサービス・サロゲートのインスタンスの外部にある他のシステムへの呼出しのうちの１つまたは複数によりＷｅｂサービス・クライアントからの要求の少なくとも一部を処理するように構成される。
【００２６】
本発明の他の特徴および利点は、以下の説明の中で述べられており、一部は、説明から明らかであるか、または本発明を実施することから知ることができる。本発明の特徴および利点については、各請求項で特に指摘されている機器および組合せを使用することで、理解され、得られる。本発明のこれらの特徴および他の特徴は、以下の説明および付属の請求項を読むとよりいっそう明らかになるか、または以下で述べているように本発明を実施することで学ぶことができる。
【００２７】
本発明の上記の利点や特徴、あるいはその他の利点や特徴を得る方法を説明するために、上で簡単に説明した本発明のより具体的な説明を、付属の図面に示されている特定の実施形態を参照しながら行う。これらの図面が本発明の代表的な実施形態を示しているだけであり、したがって本発明の範囲を制限しているものとみなされるべきではないことを理解していることを前提として、付属の図面を使用して本発明を具体的内容および詳細について説明する。
【発明を実施するための最良の形態】
【００２８】
本発明は、ダイナミックＷｅｂサービスやＷｅｂサービス環境内で通信するように開発され、設計され、またはコーディングされていないレガシ・アプリケーション・コンポーネントに対してサロゲート・サービスのインスタンスを生成する方法、システム、およびコンピュータ・プログラム製品を対象とする。このサロゲート・サービスは、レガシ・コンポーネントやインターフェースの書換えを行わなくても、Ｗｅｂサービスの相互運用性、ロバスト性、および効率を開発者側が厳格に制御できるようにするカスタム・オブジェクトまたはコードである。本発明の実施形態は、後で詳述するように、様々なコンピュータ・ハードウェア・コンポーネントまたはモジュール含む専用または汎用コンピュータを備えることができる。
【００２９】
第１の例示的な実施形態では、本発明は、レガシ・アプリケーション・コンポーネントの初期化時に、ダイナミックＷｅｂサービスの生成をトリガーする、またはダイナミックＷｅｂサービスの生成を引き起こすことを管理イベントに対して可能にするメカニズムを提供する。他の種類の静的ツール・アプローチと同様に、この動的アプローチ−本明細書でサポートされているような動的アプローチ−は、レガシ・コンポーネントと通信するためのインターフェースを記述する利用可能なメタデータを使用する。いくつかの例示的な実施形態では、１回限り、またはときどき、ツールを使用してＷｅｂサービスを生成し、明らかにするのではなく、アプリケーションの初期化の標準的な部分としてインフラストラクチャをサポートするによりＷｅｂサービスの生成を行う。アプリケーションの停止では、対応するダイナミックＷｅｂサービスを停止し、ダイナミックＷｅｂサービスを生成するために使用されたＷｅｂサービス記述を削除する終了シーケンスが用意される。したがって、アプリケーションが起動される毎に、利用可能なメタデータを参照する必要があり、したがって、首尾一貫したサービスがオンザフライ（on-the-fly）で構築される。
【００３０】
図１Ａは、上述のような様々な例示的な実施形態を示している。図に示されているように、Ｗｅｂサービス・クライアント１４５とレガシ・クライアント１０５の両方をサポートする分散型システム１００が用意され、それにより、サービス１１０指向アプリケーション１２５にアクセスすることができる。より具体的には、サービス１１０は、レガシ・コンポーネント１３５を含むアプリケーション１２５を使用して提供される。いくつかの例示的な実施形態では、管理者（図に示されていない）は、管理構成設定１５５を設定することができ、これは、アプリケーション１２５の起動時、ダイナミックＷｅｂサービス１７５が生成されなければならないことを示す。したがって、管理構成設定１５５に基づき、アプリケーション１２５の起動時（および場合によってはアプリケーション特有の構成ファイルから引き出された他の構成に応じて）、Ｗｅｂサービス・イニシャライザ１８０は、カタログ・データ・ベース１６５からメタデータ１６０にアクセスする。
【００３１】
いくつかの例示的な実施形態では、複数の方法で、アプリケーション１２５（および対応するダイナミックＷｅｂサービス１７５）を初期化することが可能であることに注意されたい。例えば、アプリケーション１２５の初期化の要求は、管理者ユーザ・インターフェースからの入力を通じて受信することができる。他のいくつかの例示的な実施形態では、アプリケーション１２５により提供されるサービスにアクセスする要求１４０（または他の類似の種類の要求）を受信すると、アプリケーション１２５を自動的に初期化することを規定している。もちろん、初期化アプリケーション１２５の他のよく知られている方法も、本発明では利用することができる。したがって、アプリケーション１２５を初期化する特定の方法またはプロセスは、例示することのみを目的としており、特に断りのない限り、本発明の範囲を限定することも、他の何らかの方法により範囲を狭めることも意図されていない。
【００３２】
すでに言及されているように、アプリケーション１２５を初期化する方法に関係なく、初期化時に、コンポーネント・インターフェース１６０を記述しているメタデータが、アクセスされる。このメタデータ１６０は、ダイナミックＷｅｂサービス１７５がレガシ・コンポーネント１３５と通信する方法に関する情報である。言い換えると、メタデータ１６０は、とりわけ、レガシ・コンポーネント１３５に必要な呼出し１１５、レガシ・コンポーネント１３５に渡すパラメータ１１５、パラメータ１１５が受け渡される順序、および、例えば戻り値１２０がレガシ・コンポーネント１３５から届く場合、を示すメッセージ交換パターン、のうちの１つまたは複数を示す。呼出し１１５のすべてがパラメータ１１５を含むわけではないことに注意されたい。例えば、ＦｏｒｍａｔＡｌｌＡｖａｉｌａｂｌｅＤｉｓｋｓ（）および他の呼出しのオペレーションはパラメータを必要としない。したがって、メタデータ１６０は、もちろん実行する呼出し１１５の種類に応じて、レガシ・コンポーネント１３５に渡すパラメータ１１５に関する詳細を持つ場合も、持たない場合もある。
【００３３】
どのような場合も、メタデータ１６０にアクセスするときに、Ｗｅｂサービス・イニシャライザ１８０は、Ｗｅｂサービス記述１５０またはコントラクト（例えば、ＷＳＤＬドキュメント）を生成することができる。さらに、Ｗｅｂサービス・イニシャライザ１８０は、Ｗｅｂサービス記述１５０を使用して実行時にダイナミックＷｅｂサービス１７５を起動する。さらに、Ｗｅｂサービス記述１５０を使用して、それと整合しているＷｅｂサービス・クライアント１４５を作成する必要がある場合もある。生成されたＷｅｂサービス記述１５０がダイナミックＷｅｂサービス１７５を作成するために使用されているが、そのようなイベントは本発明にとっては重要なことではないことに注意されたい。つまり、Ｗｅｂサービス・イニシャライザ１８０は、メタデータ１６０にアクセスした後、Ｗｅｂサービス記述１５０を使用することなく、ダイナミックＷｅｂサービス１７５を自動的に生成することができる。したがって、Ｗｅｂサービス記述１５０を使用してダイナミックＷｅｂサービス１７５を生成することは、例示することのみを目的としており、特に断りのない限り、本発明の範囲を限定することも、他の何らかの方法により範囲を狭めることも意図されていない。
【００３４】
ダイナミックＷｅｂサービス１７５が作成され、レガシ・コンポーネント１３５がアクティブになると、Ｗｅｂサービス・クライアント１４５は、レガシ・コンポーネント１３５により提供されるサービスにアクセスする要求１４０を実行することができる。要求１４０は、レガシ・コンポーネント１３５により提供されるサービスを要求するオペレーションなど、および／またはレガシ・コンポーネント１３５が必要とするパラメータ１１５があればそのパラメータを含むことができる。要求１４０を受信すると、その要求内のオペレーションに基づいて、ダイナミックＷｅｂサービス１７５は、その要求１４０の内容を調べ、適切な呼出し１１５を適切なパラメータ（もしあれば）を付けてレガシ・コンポーネント１３５に対し実行する。つまり、ダイナミックＷｅｂサービス１７５は、共通のＷｅｂサービス要求メッセージ１４０（例えば、ＸＭＬドキュメント）と、レガシ・コンポーネント１３５と通信するための適切な呼出しおよびもしあれば必要なパラメータ１１５との間の翻訳機能（translator）として動作する。
【００３５】
すでに説明されているように、適切な呼出し１１５およびもしあれば必要なパラメータ１１５に加えて、ダイナミックＷｅｂサービス１７５は、レガシ・コンポーネント１３５に対する適切なメッセージ交換パターンを熟知するように構成されなければならない。したがって、戻り値１２０が必要な場合、ダイナミックＷｅｂサービス１７５では、そのような戻り値を要求する。その後、この戻り値１２０は、ダイナミックＷｅｂサービス１７５により生成される、適切なＷｅｂサービス応答１３０内でフォーマットすることができる。この実施例のメッセージ交換パターンは要求−応答であるが、本発明では他のメッセージ交換パターンも利用できることに注意されたい。したがって、本明細書で説明されているような特定の種類のメッセージ交換パターンを使用することは、例示することのみを目的としており、特に断りのない限り、本発明の範囲を限定することも、他の何らかの方法により範囲を狭めることも意図されていない。
【００３６】
他の例示的な実施形態は、アプリケーション１２５の終了シーケンスを規定する。いくつかの例示的な実施形態では、レガシ・アプリケーション１２５がシャットダウンまたは停止されると、ダイナミックＷｅｂサービス１７５を終了させ、例えば、リサイクリング箱１７０に送ることにより、Ｗｅｂサービス記述１５０を削除することを規定している。したがって、Ｗｅｂサービス記述１５０は、永続的でなく、および／または再利用されるので、レガシ・コンポーネント１７５が修正されたり、または更新バージョンが提供されたりする場合でも矛盾が生じることはない。
【００３７】
本発明では、さらに、レガシ・クライアント１０５もサポートしていることに注意されたい。したがって、レガシ・クライアント１０５は、レガシ・アプリケーション１２５へ直接送る適切な呼出しを、もしあれば適切なパラメータ１１５を付けて、作成することができる。戻り値１２０（もしあれば）も、レガシ・アプリケーション１２５からレガシ・クライアント１０５に直接送ることができる。
【００３８】
前述のように、上述のダイナミックＷｅｂサービスは、レガシ・コンポーネントに対するＷｅｂサービスの修正された静的なアプローチに関連する現在の問題点を克服しているが、それでもまだ、この動的システムの強化または改善に対するニーズが存在する。例えば、上述のように、インターフェースを変更することが可能でない場合があり、またはそのインターフェースが様々な理由からＷｅｂサービスとして公開するのに適していない可能性もある。したがって、本発明のいくつかの例示的な実施形態では、開発者が、新しいインターフェースを定義し、それらの新しいインターフェースを実装するカスタム翻訳コードを挿入する、ことを可能にするメカニズムを規定する。これらの新しいインターフェースは、次に、レガシ・コンポーネント・インターフェースからＷｅｂサービス・クライアントを抽象化するような方法で、Ｗｅｂサービス・クライアントに公開される。新しいインターフェースを実装するオブジェクトは、本明細書では「サービス・サロゲート」と呼び、その新しいインターフェースは、一般に、「サロゲート・インターフェース」と呼ぶ。
【００３９】
サービス・サロゲートを実装する一実施例では、ＩＣｏｍＰｌｕｓＯｂｊｅｃｔがオブジェクト参照を単一パラメータとして受け取ったバック・グラウンド・セクションからその実施例を呼び出す。すでに説明されているように、通常のＷｅｂサービス・インフラストラクチャでは、オブジェクトをパラメータとして受け取るメソッド呼出しをサポートしていないため、ＩＣｏｍＰｌｕｓＯｂｊｅｃｔは失敗し、このサービスは非レガシ・クライアントから利用できなくなる。しかし、いくつかの例示的な実施形態では、ユーザまたは開発者側が、以下のインターフェースを実装するサービス・サロゲートを定義できるようにすることにより、上述のＩＣｏｍＰｌｕｓＯｂｊｅｃｔインターフェースをＷｅｂサービスとして公開することができるメカニズムを規定する。
【００４０】
【表４】
0005420139.tif 000005
【００４１】
開発者は、その後、レガシＣＯＭオブジェクトのＰｌａｃｅＯｒｄｅｒメソッドに、ＩＯｒｄｅｒＤｅｓｃｒｉｐｔｉｏｎパラメータを埋めるサービス・サロゲートを作成することにより、新しいＰｌａｃｅＯｒｄｅｒ関数を実装することができる。
【００４２】
サービス・サロゲートがＷｅｂサービス・クライアントに公開するサロゲート・インターフェースは、いかなる形でも、レガシ・コンポーネントのレガシ・インターフェースに関連付けられる必要はないことに注意されたい。例えば、サロゲート・インターフェースは、レガシ・インターフェースと異なる数の呼出しを持ち、サービス・サロゲート呼出しは、何らかの方法で既存のレガシ呼出しにマッピングすることができる。実際、以下で詳しく説明するように、サービス・サロゲートは、レガシ・コンポーネントを呼び出すことなく、または他の必要な関数を供給するために要求の一部を処理する、およびレガシ・コンポーネントに依存する方法によって、要求またはその要求の一部を処理するように構成することができる。それとは別に、またはそれと併せて、サービス・サロゲートは、アプリケーションおよびサービス・サロゲートのインスタンスの外部の他のシステムを通じて要求の少なくとも一部を処理するように構成することができる。
【００４３】
例えば、１つのサービス・サロゲート関数が複数の既存の関数またはレガシ関数を呼出したり、または多数のサービス・サロゲート関数が同じレガシ・コンポーネントを呼出したりすることができる。さらに、上述のように、所与のサービス・サロゲート関数は、既存のレガシ・コンポーネントを呼ぶ必要すらなく、その代わりに、呼出しをサービス・サロゲート自体で処理することを選択する。この場合、サロゲートは、旧いサービス・アプリケーションから新しいサービス・アプリケーションにコードを移行する手段にもなることができる。
【００４４】
理解されるとおり、上述のサービス・サロゲートは、レガシ・コンポーネントに対しＷｅｂサービスを提供する既存のメカニズムに勝る多くの有益な特徴を提供する。例えば、既存技術は、クライアントおよびサーバに密結合状態を維持することを要求する。これは、一部、クライアントはサーバが実装するのと同じインターフェースを使用しなければならないという事実によるものである。そのため、そのサービスやインターフェースの修正は、Ｗｅｂサービス・クライアント上でも更新されなければならない。
【００４５】
しかし、本発明のサービス・サロゲートのメカニズムを通じて、Ｗｅｂサービス・クライアントとレガシ・コンポーネントにより提供されるサービスとは疎結合となる。したがって、サービス・サロゲートは既存のレガシ・サービスまたはレガシ・コンポーネントに対し透過的であるが、公開されるサロゲート・インターフェースは、クライアントから見ることができる。その後、クライアントは、サービス・サロゲートにより公開されたこのサロゲート・インターフェースを使用して通信する。Ｗｅｂサービス・クライアントは、それらのサービスに対して、レガシ・インターフェースから抽象化されるため、それらのサービスまたはそのインターフェースを提供するレガシ・コンポーネントに修正が加えられても、Ｗｅｂサービス・クライアントの更新を必要としない。アプリケーションへの修正に対応するためサービス・サロゲートに何らかの調整を施す必要がある場合があるが、そのような修正は、Ｗｅｂサービス・クライアントの更新および／または書換えに比べてわずかである。さらに、このようなわずかなｓｈｉｍ（つなぎ）は、開発者により管理され、サービス・サロゲートへのそのような修正は、十分、開発者のスキル・レベルと管理能力の範囲内にある。
【００４６】
本発明の他の有利な特徴は、インターフェースの分断（decoupling）である。既存技術では、Ｗｅｂサービス・インターフェース上のメソッド呼出し回数は、レガシまたはサービス・インターフェース上のメソッド呼出し回数と一致している必要がある。Ｗｅｂサービスを作成するためにメタデータを使用することは、Ｗｅｂサービス内へのレガシ・インターフェースの文字通りの翻訳（literal translation）を作成するため、そのような文字通りの翻訳（上述のような）は、レガシ・コンポーネントにより提供されるすべてのサービスに好適とは限らない。
【００４７】
すでに説明されているように、本発明では、サロゲート・インターフェースはレガシ・インターフェースと関係がないものとすることができる。したがって、サロゲート・インターフェースは、オリジナルのインターフェースと異なる数のメソッド呼出しを持ち、サービス・サロゲート・メソッド呼出しは、何らかの方法で既存のメソッドにマッピングすることができる。そのようなものとして、Ｗｅｂサービスの相互運用性、ロバスト性、および効率を、開発者は、レガシ・コンポーネントまたはレガシ・インターフェースの書換えをせずに、より厳格に制御する。さらに、すでに説明されているように、サロゲート・インターフェースは、レガシ・コンポーネントと通信するレガシ・インターフェースから分離されているため、サービス・サロゲートは、レガシ・サービスから新しいサービスにコードを移行する手段となることができる。特に、インターフェースが分離されるので、それぞれのサービスを、時間の経過とともに徐々にレガシ・コンポーネントからサービス・サロゲートに移行することができる。
【００４８】
本発明では、さらに、サービス・サロゲートの分離を都合良く規定する。しかし、既存の技術では、あるインターフェースに対するサロゲートは、そのインターフェースのすべてのインスタンスに関連付けられる必要がある。しかしながら、本発明では、既存のサービスに使用されるサービス・サロゲートはそのサービスと疎結合されるだけであると規定する。サービス・サロゲートは、サービス毎に選択され、このため、それらのサービスが同じ既存のサービスにより裏付けされたり、または同じインターフェースを実装したりする場合であっても、異なるサービスが異なるサロゲートを持つことを可能にする。
【００４９】
図１Ｂは、上述の本発明の様々な例示的な実施形態を示している。図に示されているように、分散型システム１００は、上述のように、ダイナミックＷｅｂサービス１７５を生成するメカニズムを備えるだけでなく、サロゲート・サービスのインスタンス１１６（本明細書では、「サロゲート・インスタンス」、「サービス・サロゲートのインスタンス」、または「サービス・サロゲート・インスタンス」と呼ぶ）も生成する。この特定の実施形態については、分散型システム１００は、Ｗｅｂサービス・イニシャライザ１８０および構成ファイル１５５を含むＷｅｂサービス・インフラストラクチャ１２２を備える。アプリケーション１２５の初期化時に（または他のインスタンスを通じて）、Ｗｅｂサービス・イニシャライザ１８０は、構成ファイル１５５を参照し、サービス・サロゲートのインスタンス１１６はアプリケーション１２５により提供される１つまたは複数のサービスに対し生成されるべきであると決定することができる。この構成ファイル１５５は、使用されるサービスおよびサービス・サロゲートの両方を識別するための一意的な識別子を含むことができる。もちろん、そのようなモジュールを識別し特定する他の方法も、本発明では利用することができる。
【００５０】
サービス・サロゲートのインスタンス１１６は、アプリケーション１２５の初期化時に生成されるが、サービス・サロゲート・インスタンス１１６を初期化または生成する他の方法がある可能性がある。例えば、本明細書で説明されているようなサービス・サロゲートの実施形態は、上述の静的アプローチでも等しく機能するであろう。したがって、Ｗｅｂサービス・イニシャライザ１８０を使用してアプリケーション１２５を初期化時にサービス・サロゲートのインスタンス１１６を初期化することは、例示することのみを目的として使用され、特に断りのない限り、本発明の範囲を限定することも、他の何らかの方法により範囲を狭めることも意図されていない。しかしながら、アプリケーションおよびサロゲート・インスタンス１１６を開始するダイナミックＷｅｂサービス１７５に関して上で説明されているプロセスは、この実施形態でも利用可能である。例えば、アプリケーション１２５およびサロゲート・インターフェース１１６の初期化は、要求１４０を受け取ったときから、またはサービス１１０でユーザの入力があったときから行うことができる。
【００５１】
サービス・サロゲートのインスタンス１１６がどのように初期化されるかに関係なく、サロゲート・メタデータ１０４は、上述のコンポーネント・メタデータ１６０と同様にアクセスされる。サロゲート・メタデータ１０４では、サービス・サロゲート１１６のインスタンスと通信するためのサービス・サロゲートおよびサロゲート・インターフェース１１４（「ＳＩＦ」と参照される）を記述する。サロゲート・メタデータ１０４は、カタログ・データ・ベース１０２からアクセスされ、その後、サロゲート記述１０６を生成するためサービス・インフラストラクチャ１２２に渡されることができる。次に、このサービス記述は、サービス・サロゲートおよびサロゲート・インターフェース１１４のインスタンス１１６を生成するビルダ１０８に渡される。サロゲート・インターフェース１１４とダイナミックＷｅｂサービス１７５の両方に対するビルダ１０８は別々のコンポーネントとして示されているが、それらのビルダ１０８は、単一モジュールとすることができることに注意されたい。実際、ビルダ１０８は、Ｗｅｂサービス・インフラストラクチャ１２２の一部とすることができ、またはＷｅｂサービス・イニシャライザ１８０の一部とすることさえもできる。したがって、ビルダ１０８モジュールの特定は、便宜上、また例示を目的として、使用され、特に断りのない限り、本発明の範囲を限定することも、他の何らかの方法により範囲を狭めることも意図されていない。
【００５２】
サロゲート・インスタンス１１６およびサロゲート・インターフェース１１４が生成されると、それに関連付けられたサービスに対応する要求１４０をＷｅｂサービス・クライアント１４５から受け取ることができる。要求メッセージ１４０がＷｅｂサービス・インフラストラクチャ１２２で受信されると、Ｗｅｂサービス・インフラストラクチャは、サービス・サロゲートにより制御されるサービスに送られるそれらの要求１４０（またはその一部）を識別することができる。次に、それらの要求１４０は、サロゲート・インターフェース１１４を介してサロゲート・インスタンス１１６に直接転送される。この際に、前述のように、サービス・サロゲートの構成に応じて、複数のプロセスを、サロゲート・インスタンス１１６は要求１４０を処理するために使用することができる。
【００５３】
例えば、サロゲート・インスタンス１１６は、レガシ・コンポーネント１３５に呼出しを行うことも、それにパラメータを渡すこともせずに、すべての処理を内部関数に予約して、要求１４０を処理するように構成することができる。それとは別に、サロゲート・インスタンス１１６では、要求１４０全体の少なくとも一部についてレガシ・コンポーネント１３５に呼出しを送り、パラメータ１１５をそれに渡すことを選択することができる。さらに、サロゲート・インスタンス１１６は、アプリケーションおよびサロゲート・インスタンス１１６の外部の他のシステム１１２に対し呼出しを実行し、要求１４０の一部を処理することができる。さらに、サロゲート・インスタンス１１６に従って要求を処理するためのこれらのメカニズム１１６、１３５、１１２の組合せは、カスタム・オブジェクトまたはサービス・サロゲートについての開発者の構成に応じて、本発明の範囲内にある。また、他のシステム１１２は、サービス１００の外部にあるように示されているが、そうであるとは限らないことにも注意されたい。例えば、他のシステム１１２は、サービス１１０内の他のアプリケーションとすることもできる。したがって、サービス１１０の外部の他のシステム１１２の配置は、例示のみを目的としており、特に断りのない限り、本発明の範囲を限定することも、他の何らかの方法により範囲を狭めることも意図されていない。
【００５４】
ダイナミックＷｅｂサービス１７５と同様に、要求メッセージ１４０がどのように処理されるかに関係なく、サロゲート・インスタンス１１６および／またはサロゲート・インターフェース１１４では、様々なコンポーネント１１６、１３５、１１２からの戻り値１２０を受け取った際に認識するために、サービスに対するメッセージ交換パターンを熟知していなければならない。戻り値１２０がメッセージ交換パターンの一部である場合、戻り値１２０は、応答メッセージ１３０にフォーマットされ、Ｗｅｂサービス・クライアント１４５に送信することができる。もちろん、戻り値の種類によっては（例えば、戻り値が単純な受信要求ＯＫの場合）、クライアント１４５への応答１３０が必要な場合も必要でない場合もある。
【００５５】
サロゲート・インスタンス１１６は、サロゲート・インターフェース１１４と、レガシ・コンポーネント１３５と通信するためのインターフェースとの間に置かれることに注意されたい。すでに説明されたように、この有益な特徴では、Ｗｅｂサービス・クライアント１４５とアプリケーション１２５により提供される既存のサービスとの疎結合をもたらす。さらに、サロゲート・インターフェース１１４は、レガシ・コンポーネント１３５と通信するためレガシ・インターフェースとを分離される。このため、クライアント１４５をアップグレードしなくても、レガシ・コンポーネント１３５内での修正が可能であるだけでなく、レガシ・コンポーネント１３５から新しいサービスに移行するためのメカニズムももたらす。しかし、サロゲート・インターフェース１１４は別のモジュールとして示されているが、サロゲート・インターフェースは、サロゲート・インスタンス１１６のなくてはならない部分であり、したがって、サロゲート・インスタンス１１６の一部と考えることができることに注意されたい。
【００５６】
また、サロゲート・サービスによりサポートされないがアプリケーション１２５によって提供される他のサービスについては、Ｗｅｂサービス・イニシャライザ１８０は、サービス・サロゲート・インスタンス１１６の代わりにダイナミックＷｅｂサービス１７５も生成することができることに注意されたい。したがって、都合良く機能するレガシコンポーネント・インターフェースについての文字通りの翻訳が、ダイナミックＷｅｂサービス１７５を使用して置き換えられるのが望ましい場合があり、その場合、呼出しおよびパラメータ１１５は、すでに説明されているように、レガシ・コンポーネント１３５に直接渡される。したがって、この分散型システムは、レガシ・コンポーネント用のインターフェースに対する要求１４０を処理することができ、適切に翻訳するが、本明細書で説明されているサービス・サロゲート・プロセスでなければ動作不能または不効率なサービスは、それを利用することができる。
【００５７】
また、図１Ａにあるレガシ・クライアント１０５は示されていないが、このサロゲート・サービスの実施形態も、またレガシ・クライアント１０５に対するサポートも提供することに注意されたい。さらに、アプリケーション１２５の終了後、上述のダイナミックＷｅｂサービス１７５と同様に、サロゲート記述１０６は、リサイクル箱１７５に送ることにより削除し、サロゲート・サービスのインスタンス１１６を終了することができることにも注意されたい。したがって、サロゲート記述１１２、サロゲート・インスタンス１１６、およびサロゲート・インターフェース１１４は、閉じられ、したがって、アプリケーションの次の初期化時に、新しいサロゲート記述１０６、新しいサービス・サロゲート・インスタンス１１６、および新しいサロゲート・インターフェース１１４が生成される。
【００５８】
最後に、図１Ａと同様に、図１Ｂの様々なコンポーネントは、Ｗｅｂサービス・インフラストラクチャまたは他のモジュールから独立しているものとして、互いに関係付けて示されているが、いくつかの例示的な実施形態は、構成の種類および／またはモジュールの配置に制限されない。したがって、図１Ｂおよび１Ａ内のモジュールの位置および構成は、例示を目的としてのみ使用され、本発明の範囲を限定することも、他の何らかの方法により範囲を狭めることも、意図されていない。
【００５９】
サービス・サロゲートの実施形態を簡単に要約すると、サービス・サロゲートはＷｅｂサービス・インフラストラクチャ１２２の中への２つのフック（入力またはメッセージを横取りして独自処理するもの）として実装されるということである。第１のフックは、サービスまたはアプリケーション１２５の起動時である。サービス・サロゲートがサービスに関して構成される場合、Ｗｅｂサービス・インフラストラクチャ１２２は、メタデータ１０４を使用して、Ｗｅｂサービス・クライアント１４５に公開されるサロゲート・インターフェース１１５を構築するサロゲート記述１０６をビルド（構築）する。第２のフックは、サロゲート・インスタンス１１６の作成時であり、その際に、サービス・サロゲートがそのときに既存のアプリケーション１２５またはサービスの新しいインスタンスを作成することに加えて構成される場合、そのインフラストラクチャも、サービス・サロゲートの新しいインスタンス１１６を作成する。その後、Ｗｅｂサービス・インフラストラクチャ１２２は、レガシ・サービスまたはアプリケーション１２５に対する参照をサービス・サロゲート１１６のインスタンスに受渡し、アプリケーション１２５の代わりにサービス・サロゲート上でメソッド呼出しがディスパッチされる。
【００６０】
本発明は、さらに、機能ステップおよび／または非機能的行為を含む方法の表現で説明することもできる。以下では、本発明を実施する際に実行することができるステップおよび／または行為（acts）について説明する。通常、機能ステップでは、遂行される結果の表現で発明を説明するが、非機能行為では、特定の結果を得るためのより具体的な行為（acts）を説明する。機能ステップおよび／または非機能行為は特定の順序で説明したり、または請求の範囲に記載したりすることができるが、本発明は、必ずしも、特定の順序付けまたはステップおよび／または行為の組合せに限定されない。さらに、請求の範囲におけるステップおよび／または行為について記載−および図２および図３の流れ図の以下の説明中での使用−は、そのような用語の所望の特定の用途を示すために使用される。
【００６１】
図２および３は、本発明の様々な例示的な実施形態の流れ図を示す。図２および３の以下の説明は、ときには、図１Ａおよび１Ｂからの対応する要素を参照する。これらの図の特定の要素が参照される場合があるが、そのような要素は、例示することのみを目的として使用され、特に断りのない限り、本発明の範囲を限定することも、範囲を狭めることも意図されていない。
【００６２】
図２は、Ｗｅｂサービス環境内で通信するように開発されていないレガシ・インターフェースを介して通信するレガシ・コンポーネント用に、開発者により作成されたカスタム・オブジェクトを介してＷｅｂサービスを提供する方法２００の流れ図を示す。カスタム・オブジェクトを使用することにより、開発者は、レガシ・コンポーネントの書換えを行わなくても、Ｗｅｂサービスの相互運用性、ロバスト性、および効率を厳格に制御することができる。方法２００は、レガシ・コンポーネントを備えるアプリケーションにより提供されるサービスにアクセスするＷｅｂサービス・クライアントからの要求を受け取る行為２０５を含む。例えば、Ｗｅｂサービス環境内で通信するように開発されていないレガシ・インターフェースを使用して通信する、レガシ・コンポーネント１３５を備えたアプリケーション１２５により提供されるサービスにアクセスするため、Ｗｅｂサービス・インフラストラクチャ１２２でＷｅｂサービス・クライアント１４５から要求１４０を受け取ることができる。
【００６３】
それ以降、方法２００は、サービス・サロゲートを使用してその要求を処理するステップ２２０を含む。より具体的には、２２０のステップは、その要求がサービス・サロゲートにより制御されるサービスに対応することを識別する行為２１０を含む。例えば、要求１４０がＷｅｂサービス・インフラストラクチャ１２２で受け取られると、これは、サービス・サロゲートに対応するものとして識別される。ここでサービス・サロゲートは、Ｗｅｂサービス・クライアント１４５とレガシ・インターフェースとの間でサロゲート・インターフェース１１４を抽象化として公開するために開発者により作成されたカスタム・オブジェクトである。
【００６４】
２２０のステップは、さらに、サロゲート・インターフェースを介してサービス・サロゲートのインスタンスに、その要求の少なくとも一部を受け渡す２１５ステップも含む。例えば、Ｗｅｂサービス・インフラストラクチャ１２２は、要求１４０を受け取った後、サロゲート・インターフェース１１４を介して要求１４０の少なくとも一部をサービス・サロゲートのインスタンス１１６に渡し、さらに処理することができる。サービス・サロゲートのインスタンス１１６は、１つまたは複数のレガシ・コンポーネント１３５への呼出し、サービス・サロゲートのインスタンス１１６への呼出し、またはアプリケーションおよびサービス・サロゲートの外部にある他のシステム１１２の中への呼出し、のうちの１つまたは複数の要求の少なくとも一部を処理するように構成することができる。
【００６５】
サービス・サロゲートのインスタンス１１６は、アプリケーション１２５の初期化時に生成することができることに注意されたい。このようなインスタンスでは、上記の方法は、さらに、アプリケーション１２５を停止させる要求を受け取る行為も含むことができる。アプリケーション１２５を停止させる要求に基づき、サービス・サロゲートのインスタンス１１６は、さらに、自動的に停止させられるようにすることもできる。さらに、サービス・サロゲート記述１０６は、削除することができ、それにより、サービス・サロゲートの新しいインスタンス１１６および新しいサロゲート記述１０６がアプリケーション１２５の次の初期化時に生成されるようにすることができる。
【００６６】
サービス・サロゲートのインスタンス１１６がいつ生成されるかに関係なく、サロゲート記述１０６を使用して、サービス・サロゲートのインスタンス１１６およびサロゲート・インターフェース１１４を生成することができ、その場合、サロゲート記述１０６は、１つまたは複数のレガシ・コンポーネント１３５、サービス・サロゲートのインスタンス１１６、またはアプリケーション１２５およびサービス・サロゲートのインスタンス１１６の外部にある他のシステム１１２との通信のための、呼出しオペレーション、パラメータ、またはメッセージ交換パターンのうちの１つまたは複数を記述する。
【００６７】
サロゲート・インターフェース１１４がサロゲート・メタデータ１０４によるサロゲート記述１０６に基づいて作成される場合、上記の方法は、さらに以下を含むことができる。コンポーネント・メタデータ１６０に基づき、Ｗｅｂサービス・クライアント１４５に対する応答を必要とする１つまたは複数のレガシ・コンポーネント１３５に対するメッセージ交換パターンを識別することができる。そのようなものとして、１つまたは複数の戻り値１２０は、１つまたは複数のレガシ・コンポーネント、サービス・サロゲート１１６のインスタンス、またはアプリケーション１２５およびサービス・サロゲート１１６のインスタンス１１６の外部にある他のシステム１１２、のうちの１つまたは複数から受け取ることができる。それ以降、サービス・サロゲート１１６のインスタンスを使用して、１つまたは複数の戻り値１２０を応答１３０にフォーマットし、さらに処理するために、その後Ｗｅｂサービス・クライアント１４５に送ることができる。
【００６８】
さらに、サービス・サロゲートまたはそのインスタンス１１６は、レガシ・コンポーネント１３５により提供されるアプリケーション１２５の他のサービスが本明細書で説明されているとおりダイナミックＷｅｂサービス１７５を利用できるように、ダイナミックＷｅｂサービス１７５と連携して使用することができることに注意されたい。このような場合、コンポーネント・メタデータ１６０内に記述されるようなレガシ・インターフェースのインターフェース記述を使用して、１つまたは複数のレガシ・コンポーネント１３５を備えたアプリケーション１２５によって提供される他のサービス用にダイナミックＷｅｂサービス１７５を生成することができる。このダイナミックＷｅｂサービス１７５は、アプリケーション１２５の初期化時に生成され、その場合、ダイナミックＷｅｂサービス１７５は、レガシ・インターフェースの文字通りの翻訳である。このような場合、他のサーバを介して対応する他のサービス要求メッセージ１４０を受け取ることができる。Ｗｅｂサービス要求メッセージ１４０は、複数のレガシ・コンポーネント１３５により提供されるサービスを要求する、１つまたは複数のパラメータ１１５および１つまたは１つまたは複数のオペレーションを含むことができる。これ以降、ダイナミックＷｅｂサービス１７５は、１つまたは複数のレガシ・コンポーネント１３５に対する１つまたは複数のレガシ呼出し１１５を実行するために使用される。その後、１つまたは複数のパラメータ１１５を、さらに処理するために１つまたは複数のレガシ・コンポーネント１３５に渡すことができる。
【００６９】
他の例示的な実施形態では、レガシ・インターフェース記述に基づき、Ｗｅｂサービス・クライアント１４５への応答１３０が必要になる１つまたは複数のレガシ・コンポーネント１３５に対するメッセージ交換パターンを識別できることを規定している。このような場合、１つまたは複数の戻り値１２０は、１つまたは複数のレガシ・コンポーネント１３５から受け取ることができ、その場合、ダイナミックＷｅｂサービス１７５が使用され、戻り値１２０をＷｅｂサービス応答メッセージ１３０にフォーマットする。これ以降、Ｗｅｂサービス応答メッセージ１３０は、さらに処理するために、Ｗｅｂサービス・クライアント１４５に送られる。
【００７０】
図３は、Ｗｅｂサービス環境内で通信するように開発されていないレガシ・インターフェースを介して通信する１つまたは複数のレガシ・コンポーネント用の、開発者により作成されたカスタム・オブジェクトの初期化を行う方法３００の流れ図を示す。方法３００は、アプリケーションを初期化する要求を受け取る３０５行為を含む。例えば、サービス１１０は、サービスを提供するレガシ・コンポーネント１３５を含む、アプリケーション１２５を初期化する要求を受け取ることができる。レガシ・コンポーネント１３５は、Ｗｅｂサービス環境内で通信するように開発されていないレガシ・インターフェースを使用して通信する。アプリケーションを初期化する要求は、Ｗｅｂサービス・クライアント１４５からサービス要求メッセージ１４０への応答として受け取ることができる。それとは別に、アプリケーション１２５を初期化する要求は、サービス１１０のコンピューティング・デバイスのユーザ・インターフェースからの入力に対する応答として受け取ることができる。
【００７１】
アプリケーションを初期化する要求に基づいて、方法３００は、さらに、サービス・サロゲートのインスタンスを生成するステップ３２５も含む。特に、３２５のステップは、サービス・サロゲートのインスタンスが生成されるべきであることを識別する３１０行為を含む。例えば、アプリケーション１２５の初期化時、構成ファイル１５５を参照することができ、この構成ファイル１５５は、Ｗｅｂサービス・イニシャライザ１８０は、例えば、サービス・サロゲートのインスタンス１１６がアプリケーション１２５の初期化時に生成されることを示す一意的な識別子および他の情報を格納する。サービス・サロゲートは、Ｗｅｂサービス・クライアント１４５とレガシ・インターフェースとの間でサロゲート・インターフェース１１４を抽象化として公開する、開発者により作成されたカスタム・オブジェクトである。３２５のステップは、さらに、サロゲート・インターフェースを記述するメタデータにアクセスする行為３１５も含む。例えば、サロゲート・メタデータ１０４は、カタログ・データ・ベース１０２からアクセスすることができ、このカタログ・データ・ベース１０２は、Ｗｅｂサービス・クライアント１４５に公開される、サロゲート・インターフェース１１４を記述している。
【００７２】
これ以降、３２５のステップは、サロゲート・インターフェースを含むサービス・サロゲートのインスタンスを生成するためにメタデータを使用する行為３２０を含む。特に、Ｗｅｂサービス・イニシャライザ１８０は、サロゲート・メタデータ１０４を使用して、サロゲート・インターフェース１１４を含むサービス・サロゲートのインスタンス１１６を生成することができる。サービス・サロゲートのインスタンス１１６は、さらに、１つまたは複数のレガシ・コンポーネント１３５の中への呼出し、サービス・サロゲートのインスタンス１１６の中への呼出し、またはアプリケーション１２５、およびサービス・サロゲートのインスタンス１１６の外部にある他のシステム１１２の中への呼出しのうちの１つまたは複数によりＷｅｂサービス・クライアント１２５からの要求１４０の少なくとも一部を処理するように構成される。
【００７３】
サロゲート・メタデータ１０４は、さらに、その後サービス・サロゲートのインスタンス１１６およびサロゲート・インターフェース１１４を生成するために使用される、サロゲート記述１０６を最初に生成するために使用することもできる。サロゲート記述１０６は、１つまたは複数のレガシ・コンポーネント１３５、サービス・サロゲートのインスタンス１１６、またはアプリケーション１２５およびサービス・サロゲートのインスタンス１１６の外部にある他のシステム１１２と通信するための、呼出しオペレーション、パラメータ、またはメッセージ交換パターンのうちの１つまたは複数を記述する。サロゲート記述１０６は、ＷＳＤＬドキュメントとすることができる。
【００７４】
さらに、サロゲート記述１０６に基づき、１つまたは複数のレガシ・コンポーネント１３５のメッセージ交換パターンが、Ｗｅｂサービス・クライアント１４５に対する応答１３０を必要とすることを識別可能である。これ以降、１つまたは複数の戻り値１２０は、１つまたは複数のレガシ・コンポーネント１３５、サービス・サロゲートのインスタンス１１６、またはアプリケーション１２５およびサービス・サロゲートのインスタンス１１６の外部にある他のシステム１１２のうちの１つまたは複数から受け取ることができる。サービス・サロゲートのインスタンス１１６を使用して、１つまたは複数の戻り値１２０をＷｅｂサービス応答メッセージ１３０にフォーマットすることができる。その後、Ｗｅｂサービス応答メッセージ１３０は、さらに処理するためにＷｅｂサービス・クライアント１４５に送られる。
【００７５】
他の例示的な実施形態では、ダイナミックＷｅｂサービス１７５が、サロゲート・インスタンス１１６と連携して実行できることを規定している。この実施形態では、コンポーネント・メタデータ１６０からのインターフェース記述を使用して、レガシ・コンポーネント１３５を備えるアプリケーション１２５により提供される他のサービス用のダイナミックＷｅｂサービス１７５を生成する。アプリケーション１２５の初期化時に生成されたダイナミックＷｅｂサービス１７５は、レガシ・インターフェースの文字通りの翻訳である。この実施形態では、他のサービス要求メッセージ１４０は、他のサービスに対応して受け取ることができる。Ｗｅｂサービス要求メッセージ１４０は、１つまたは複数のレガシ・コンポーネント１３５により提供される複数のサービスを要求する１つまたは複数のパラメータ（もしあれば）および１つまたは複数のオペレーションを含むことができる。その後、ダイナミックＷｅｂサービス１７５は、レガシ・コンポーネント１３５に対する１つまたは複数のレガシ呼出し１１５を実行するために使用される。その後、パラメータ１１５は、さらに処理するために、複数のレガシ・コンポーネント１３５のうちの１つまたは複数に渡すことができる。
【００７６】
上述の例示的な実施形態は、さらに、コンポーネント・メタデータ１６０からのレガシ・インターフェース記述に基づいて、Ｗｅｂサービス・クライアント１４５への応答１３０を必要とするレガシ・コンポーネント１３５に対するメッセージ交換パターンが識別される、ことを規定している。これ以降、１つまたは複数の戻り値１２０は、レガシ・コンポーネント１３５から受け取ることができ、その場合、ダイナミックＷｅｂサービス１７５が使用され、戻り値１２０をＷｅｂサービス応答メッセージ１３０にフォーマットする。その後、Ｗｅｂサービス応答メッセージ１３０は、さらに処理するためにＷｅｂサービス・クライアント１４５に送られる。Ｗｅｂサービス要求メッセージ１４０およびＷｅｂサービス応答メッセージ１３０は、本明細書で説明されている他のドキュメントとともに、ＸＭＬドキュメントとすることができる。
【００７７】
ダイナミックＷｅｂサービス１７５とサロゲート・インスタンス１１６が両方とも同時に実行中の場合、他の例示的な実施形態では、アプリケーション１２５を停止する要求を受け取ると、サービス・サロゲートのインスタンス１１６およびダイナミックＷｅｂサーバ１７５は自動的に停止または終了されることを規定する。さらに、サロゲート記述１０６およびＷｅｂサービス記述１５０は、サービス・サロゲートの新しいインスタンス１１６、新しいダイナミックＷｅｂサービス１７５、新しいサロゲート記述１０６、および新しいＷｅｂサービス記述１５０は、アプリケーション１２５の次の初期化時に生成されるように、削除される。
【００７８】
本発明の範囲内の実施形態はさらに、格納されているコンピュータ実行可能命令またはデータ構造体を搬送するまたは保持するためのコンピュータ可読媒体も含む。そのようなコンピュータ可読媒体は、汎用または専用コンピュータからアクセスできる使用可能な媒体とすることができる。例えば、限定はしないが、このようなコンピュータ可読媒体として、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたはその他の光ディスク記憶装置、磁気ディスク記憶装置またはその他の磁気記憶デバイス、またはコンピュータ実行可能命令またはデータ構造の形で所望のプログラム・コード手段を搬送または格納するために使用でき、汎用または専用コンピュータによりアクセス可能なその他の媒体が考えられる。ネットワークまたは他の通信接続（ハード配線、無線、またはハード配線と無線の組合せ）を介して情報がコンピュータに転送または供給されると、コンピュータはその接続をコンピュータ可読媒体として適切に認識する。したがって、そのような接続は、コンピュータ可読媒体と呼んで差し支えない。上記の組合せも、コンピュータ可読媒体の範囲に含めなければならない。コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ、または専用処理デバイスに特定の機能または機能群を実行させる命令およびデータを含む。
【００７９】
図４および以下の説明は、本発明を実施できる適当なコンピューティング環境について簡潔に述べた一般的な説明である。必要というわけではないが、ネットワーク環境内のコンピュータによって実行されるプログラム・モジュールなどのコンピュータ実行可能命令の一般的文脈において本発明を説明する。一般に、プログラム・モジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。コンピュータ実行可能命令、関連するデータ構造体、およびプログラム・モジュールは、本明細書で開示された方法のステップを実行するプログラム・コード手段の実施例を表している。このような実行可能命令または関連するデータ構造体の特定のシーケンスは、そのようなステップで説明される機能を実装するための対応する行為（acts）の例を表す。
【００８０】
当業者であれば、本発明がパーソナル・コンピュータ、ハンドヘルド・デバイス、マルチ・プロセッサ・システム、マイクロ・プロセッサ・ベースのまたはプログラム可能な家電製品、ネットワークＰＣ、ミニ・コンピュータ、メイン・フレーム・コンピュータなどを始めとする、様々な種類のコンピュータ・システム構成を備えたネットワーク・コンピューティング環境内で実施できることを理解するであろう。また、本発明は、通信ネットワークを通じて（ハード配線リンク、無線リンク、またはハード配線と無線リンクの組合せにより）リンクされているリモート処理デバイスによりタスクが実行される分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラム・モジュールは、両方に、およびリモートのメモリ記憶デバイス内に配置することができる。
【００８１】
図４を参照すると、本発明を実装する例示的なシステムは、処理ユニット４２１、システム・メモリ４２２、およびシステム・メモリ４２２を含む様々なシステム・コンポーネントを処理ユニット４２１に結合するシステム・バス４２３を備える、従来のコンピュータ４２０の形をとる汎用コンピューティング・デバイスを備える。システム・バス４２３は、メモリ・バスまたはメモリ・コントローラ、周辺機器バス、および様々なバス・アーキテクチャを使用するバスを含む数種類のバス構造のうちのいずれでもよい。システム・メモリは、読み取り専用メモリ（ＲＯＭ）４２４およびランダム・アクセス・メモリ（ＲＡＭ）４２５を含む。起動時などにコンピュータ４２０内の要素間の情報伝送を助ける基本ルーチンを含む基本入出力システム（ＢＩＯＳ）４２６は、ＲＯＭ４２４に格納することができる。
【００８２】
コンピュータ４２０は、さらに、磁気ハードディスク４３９への読み書きを行うための磁気ハードディスク・ドライブ４２７、取り外し可能磁気ディスク４２９への読み書きを行うための磁気ディスク・ドライブ４２８、およびＣＤ−ＲＯＭまたはその他の光媒体などの取り外し可能光ディスク４３１への読み書きを行うための光ディスク・ドライブ４３０を備えることもできる。磁気ハードディスク・ドライブ４２７、磁気ディスク・ドライブ４２８、および光ディスク・ドライブ４３０は、ハードディスク・ドライブ・インターフェース４３２、磁気ディスク・ドライブ・インターフェース４３３、および光ドライブ・インターフェース４３４によりそれぞれシステム・バス４２３に接続される。ドライブおよび関連するコンピュータ可読媒体は、コンピュータ４２０用のコンピュータ実行可能命令、データ構造体、プログラム・モジュール、およびその他のデータを格納する不揮発性記憶装置を実現する。本明細書で説明されている例示的な環境では磁気ハードディスク４３９、取り外し可能磁気ディスク４２９、および取り外し可能光ディスク４３１を採用しているが、磁気カセット、フラッシュ・メモリ・カード、デジタル多目的ディスク、ベルヌーイ・カートリッジ、ＲＡＭ、ＲＯＭなどの、データを格納するための他の種類のコンピュータ可読媒体を使用することができる。
【００８３】
ハードディスク４３９、磁気ディスク４２９、光ディスク４３１、ＲＯＭ４２４、またはＲＡＭ４２５には、オペレーティング・システム４３５、１つまたは複数のアプリケーション・プログラム４３６、その他のプログラム・モジュール４３７、およびプログラム・データ４３８など１つまたは複数のプログラム・モジュールを含むプログラム・コード手段を格納できる。ユーザは、キーボード４４０、ポインティング・デバイス４４２、またはマイク、ジョイスティック、ゲーム・パッド、衛星放送アンテナ、スキャナなどの他の入力デバイス（図に示されていない）を通じてコンピュータ４２０にコマンドおよび情報を入力することができる。これらの入力デバイスおよびその他の入力デバイスは、システム・バス４２３に結合されたシリアル・ポート・インターフェース４４６を通じて処理ユニット４２１に接続されることが多い。それとは別に、入力デバイスは、パラレルポート、ゲームポート、またはユニバーサル・シリアル・バス（ＵＳＢ）などの他のインターフェースにより接続することもできる。モニタ４４７または他のディスプレイデバイスも、ビデオ・アダプタ４４８などのインターフェースを介して、システム・バス４２３に接続される。パーソナル・コンピュータは、通常、モニタの他に、スピーカおよびプリンタなど、他の周辺出力デバイス（図に示されていない）を備える。
【００８４】
コンピュータ４２０は、リモート・コンピュータ４４９ａおよび４４９ｂなどの１つまたは複数のリモート・コンピュータへの論理接続を使用してネットワーク環境で動作可能である。リモート・コンピュータ４４９ａおよび４４９ｂは、それぞれ、他のパーソナル・コンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア・デバイス、またはその他の共通ネットワーク・ノードでもよく、通常は、コンピュータ４２０に関係する上述の要素の多くまたはすべてを含むが、メモリ記憶デバイス４５０ａおよび４５０ｂならびに関連するアプリケーション・プログラム４３６ａおよび４３６ｂだけが図４に示されている。図４に示されている論理接続は、例えば、限定はしないが、ここに示されているローカル・エリア・ネットワーク（ＬＡＮ）４５１およびワイド・エリア・ネットワーク（ＷＡＮ）４５２を含む。このようなネットワーキング環境は、オフィスまたは企業全体にわたるコンピュータ・ネットワーク、イントラネット、およびインターネットでは一般的なものである。
【００８５】
ＬＡＮネットワーキング環境で使用する場合、コンピュータ４２０はネットワーク・インターフェースまたはアダプタ４５３を介してネットワーク４５１に接続される。ＷＡＮネットワーキング環境で使用する場合、コンピュータ４２０は、通常、モデム４５４、無線リンク、またはインターネットなどのワイド・エリア・ネットワーク４５２上で通信を確立するための他の手段を備えることができる。モデム４５４は、内蔵でも外付けでもよいが、シリアル・ポート・インターフェース４４６を介してシステム・バス４２３に接続される。ネットワーク接続環境では、コンピュータ４２０またはその一部に関して示されているプログラム・モジュールは、リモートメモリ記憶デバイスに格納されうる。図に示されているネットワーク接続は例示的であり、ワイド・エリア・ネットワーク４５２上で通信を確立するための他の手段を使用することもできる。
【００８６】
本発明は、本発明の趣旨または本質的特徴から逸脱することなく他の特定の形式で実現することが可能である。説明されている実施形態は、すべての点で、説明のみを目的としており、制限することを目的としていないとみなすべきである。したがって、本発明の範囲は、上記の説明ではなく、付属の請求項により指示される。請求項の同等性の意味および範囲内にある変更はすべて、本発明の範囲に含まれるものとする。
【図面の簡単な説明】
【００８７】
【図１Ａ】本発明のいくつかの例示的な実施形態によりダイナミックＷｅｂサービスを生成するように構成された分散型システムを示す図である。
【図１Ｂ】本発明のいくつかの例示的な実施形態によりサービス・サロゲートおよびダイナミックＷｅｂサービスを介してＷｅｂサービスを提供するように構成された分散型システムを示す図である。
【図２】例示的な実施形態により、開発者によって作成されたカスタム・オブジェクトを介してＷｅｂサービスを提供する方法の流れ図である。
【図３】例示的な実施形態によりサービス・サロゲートのインスタンスを開始する方法の流れ図である。
【図４】本発明に適したオペレーティング環境を備えるシステムの実施例を示す図である。
【符号の説明】
【００８８】
１００    分散型システム
１０４    サロゲート・メタデータ
１０５    レガシ・クライアント
１０６    サロゲート記述
１０８    ビルダ
１１０    サービス
１１２    他のシステム
１１５    呼出し  パラメータ
１１６    サロゲート・インスタンス
１２０    戻り値
１２２    Ｗｅｂサービス・インフラストラクチャ
１２５    アプリケーション
１３０    応答
１３５    レガシ・コンポーネント
１４０    要求
１４５    Ｗｅｂサービス・クライアント
１５０    Ｗｅｂサービス記述
１５５    管理構成設定（構成ファイル）
１６０    コンポーネント・メタデータ
１６５    コンポーネント・インターフェースを記述するメタデータ
１７５    ダイナミックＷｅｂサービス
１８０    Ｗｅｂサービス・イニシャライザ
２００    カスタム・オブジェクトを介してＷｅｂサービスを提供する方法
３００    カスタム・オブジェクトの初期化を行う方法
４２０    従来のコンピュータ
４２１    処理ユニット
４２２    システム・メモリ
４２３    システム・バス
４２７    磁気ハードディスク・ドライブ
４２８    磁気ディスク・ドライブ
４２９    取り外し可能磁気ディスク
４３１    取り外し可能光ディスク
４３２    ハードディスク・ドライブ・インターフェース
４３３    磁気ディスク・ドライブ・インターフェース
４３４    光ドライブ・インターフェース
４３５    オペレーティング・システム
４３６    アプリケーション・プログラム
４３７    他のプログラム・モジュール
４３８    プログラム・データ
４３９    磁気ハードディスク
４４０    キーボード
４４２    ポインティング・デバイス
４４６    シリアル・ポート・インターフェース
４４７    モニタ
４４８    ビデオ・アダプタ
４４９    リモート・コンピュータ
４５０    メモリ記憶デバイス
４５１    ローカル・エリア・ネットワーク
４５２    ワイド・エリア・ネットワーク
４５３    ネットワーク・インターフェース
４５４    モデム
【図１Ａ】
0005420139.tif 000006
【図１Ｂ】
0005420139.tif 000007
【図２】
0005420139.tif 000008
【図３】
0005420139.tif 000009
【図４】
0005420139.tif 000010