(57)【要約】  プログラム・データを記憶するためのコンピュータ可読メディアが開示される。プログラム・データは、計算装置中に方法をインプリメントするための実行可能な命令を含む。本方法は、アプリケーションを開発するためのユーザ・インタフェースを提供する工程を含む。本方法は、また、アプリケーションに含めるべき１または複数のウェブ・サービスについてのユーザ選択を受信する工程を含む。本方法は、また、計算装置上及び計算装置にアクセスできる他の計算装置上で、１または複数のウェブ・サービスを検索する工程を含む。本方法は、また、１または複数のウェブ・サービスの入力と出力を相互接続するためのユーザ命令を受信する工程を含む。
2007503031.tif 000002
【特許請求の範囲】
【請求項１】
プログラム・データを記憶するためのコンピュータ可読メディアであって、該プログラム・データは、計算装置に方法をインプリメントするための実行可能な命令を含んでおり、前記方法は、
アプリケーションを開発するためのユーザ・インタフェースを提供する工程と、
該アプリケーションに含めるべき１または複数のウェブ・サービスについてのユーザ選択を受信する工程と、
該計算装置上及び該計算装置にアクセスできる他の該計算装置上で、該１または複数のウェブ・サービスを検索する工程と、
該１または複数のウェブ・サービスの入力と出力を相互接続するためのユーザ命令を受信する工程と、
を含んでいる前記コンピュータ可読メディア。
【請求項２】
請求項１記載のコンピュータ可読メディアであって、前記方法は、更に、該アプリケーションに含めるべき該１または複数のウェブ・サービスのリストを含むマニフェストを添えて該アプリケーションをパッケージする工程を含んでいる前記コンピュータ可読メディア。
【請求項３】
請求項２記載のコンピュータ可読メディアであって、前記方法は、更に、該アプリケーションをウェブ・サービスとしてエクスポーズするために該アプリケーションをカプセル化する工程を含んでいる前記コンピュータ可読メディア。
【請求項４】
請求項１記載のコンピュータ可読メディアであって、該ユーザ・インタフェースは、グラフィカル・ユーザ・インタフェースである前記コンピュータ可読メディア。
【請求項５】
請求項４記載のコンピュータ可読メディアであって、該１または複数のウェブ・サービスを相互接続するための該ユーザ命令が一連のドラッグ・アンド・ドロップ操作を介して受信される前記コンピュータ可読メディア。
【請求項６】
プログラム・データを記憶するためのコンピュータ可読メディアであって、該プログラム・データは、計算装置に方法をインプリメントするための実行可能な命令を含んでおり、前記方法は、
アプリケーションを展開するためのユーザ命令を受信する工程と、
該アプリケーションの要求を決定する工程と、
該計算装置が該アプリケーションの該要求を満たしているかどうかを判断する工程と、
該アプリケーションが依存する１または複数のウェブ・サービスを識別する工程と、
該１または複数のウェブ・サービスを展開する工程と、
該アプリケーションをインスタンス化する工程と、
を含んでいる前記コンピュータ可読メディア。
【請求項７】
請求項６記載のコンピュータ可読メディアであって、もし該計算装置が該アプリケーションの該要求を満たしていなければ、前記方法は、更に、
該要求を満たす１または複数の他の計算装置を見出す工程と、
該アプリケーションの少なくともいくらかを、該要求を満たす１または複数の他の計算装置に転送する工程と、
を含んでいる前記コンピュータ可読メディア。
【請求項８】
請求項６記載のコンピュータ可読メディアであって、該アプリケーションは、該計算装置上で走っているオペレーティング・システムと直接には相互作用しない前記コンピュータ可読メディア。
【請求項９】
請求項６記載のコンピュータ可読メディアであって、該要求は、バーチャライザを含んでいる前記コンピュータ可読メディア。
【請求項１０】
請求項６記載のコンピュータ可読メディアであって、該要求は、１または複数のハードウェア能力を含んでいる前記コンピュータ可読メディア。
【請求項１１】
請求項６記載のコンピュータ可読メディアであって、該要求は、該オペレーティング・システムによって実行される１または複数のサービスを含んでいる前記コンピュータ可読メディア。
【請求項１２】
請求項６記載のコンピュータ可読メディアであって、１または複数のウェブ・サービスの少なくともいくらかは、該計算装置上にある前記コンピュータ可読メディア。
【請求項１３】
請求項６記載のコンピュータ可読メディアであって、該１または複数のウェブ・サービスの少なくともいくらかは、該計算装置にアクセスできる１または複数の他の計算装置上にある前記コンピュータ可読メディア。
【請求項１４】
請求項１３記載のコンピュータ可読メディアであって、該１または複数のウェブ・サービスとの通信は、Ｓｉｍｐｌｅ  Ｏｂｊｅｃｔ  Ａｃｃｅｓｓ  Ｐｒｏｔｏｃｏｌに従って発生する前記コンピュータ可読メディア。
【請求項１５】
請求項６記載のコンピュータ可読メディアであって、ウェブ・サービスの展開は、該アプリケーションを展開するために実行される該ウェブ・サービスのためのものと似た工程を実行することを含んでいる前記コンピュータ可読メディア。
【請求項１６】
計算装置であって、
プロセッサと、
プロセッサと電子的に通信するメモリと、
該メモリに記憶された命令であって、
アプリケーションを開発するためのユーザ・インタフェースを提供する工程と、
該アプリケーションに含めるべき１または複数のウェブ・サービスについてのユーザ選択を受信する工程と、
該計算装置上及び該計算装置にアクセスできる他の計算装置上で、該１または複数のウェブ・サービスを検索する工程と、
該１または複数のウェブ・サービスの入力と出力を相互接続するためのユーザ命令を受信する工程と、
を含む方法をインプリメントするために実行可能な前記命令と、
を含む前記計算装置。
【請求項１７】
計算装置であって、
プロセッサと、
該プロセッサと電子的に通信するメモリと、
該メモリに記憶された命令であって、
アプリケーションを展開するためのユーザ命令を受信する工程と、
該アプリケーションの要求を決定する工程と、
該計算装置が該アプリケーションの該要求を満たすかどうかを判断する工程と、
該アプリケーションが依存する１または複数のウェブ・サービスを識別する工程と、
該１または複数のウェブ・サービスを展開する工程と、
該アプリケーションをインスタンス化する工程と、
を含む方法をインプリメントするための実行可能な前記命令と、
を含む前記計算装置。
【請求項１８】
計算装置の中で、
アプリケーションを開発するためのユーザ・インタフェースを提供する工程と、
該アプリケーションに含めるべき１または複数のウェブ・サービスについてのユーザ選択を受信する工程と、
該計算装置上及び該計算装置にアクセスできる他の計算装置上で、該１または複数のウェブ・サービスを検索する工程と、
該１または複数のウェブ・サービスの入力と出力を相互接続するためのユーザ命令を受信する工程と、
を含む方法。
【請求項１９】
計算装置の中で、
アプリケーションを展開するためのユーザ命令を受信する工程と、
該アプリケーションの要求を決定する工程と、
該計算装置が該アプリケーションの該要求を満たすかどうかを判断する工程と、
該アプリケーションが依存する１または複数のウェブ・サービスを識別する工程と、
該１または複数のウェブ・サービスを展開する工程と、
該アプリケーションをインスタンス化する工程と、
を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願）
本出願は、本発明の譲受人に譲渡され、参照によってここに全体を取り込むＳｃｏｔｔ  Ｃ．Ｌｅｍｏｎ及びＢｒｕｃｅ  Ｋ．Ｇｒａｎｔ，Ｊｒ．を発明者として２００３年８月１５日付けで出願された「ウェブ・サービス許可及び展開の基盤」と題する米国仮出願第６０／４９５，４１３号による優先権を主張する。
本発明は、一般に、コンピュータ及びコンピュータ関連技術に関する。更に詳細には、本発明は、ウェブ・サービス許可及び展開の基盤に関する。
【背景技術】
【０００２】
コンピュータ技術は、多くの領域に浸透して手作業を簡略化し、また情報をより容易に利用できるようにしてきた。ほとんどの人々は、毎日多くのコンピュータ・プログラムを使用することによって彼らの日々の仕事を楽にしている。更に、コンピュータを使用することによって膨大な量の情報が容易に利用できる。コンピュータ・ソフトウェア及び電子情報ソースは、典型的には、ローカル・コンピュータ上、ローカル・コンピュータ・ネットワークまたはインターネットのようなグローバル・コンピュータ・ネットワーク上のハード・ドライブ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭなどの記憶媒体や記憶装置上に見出される。
【０００３】
コンピュータ・プログラムは、人が彼または彼女の仕事を行ううえでの手助けを含む多くの目的のために使用される。例えば、ワード・プロセッサは、コンピュータ・ユーザが文書を作成するのを助け、スプレッド・シート・プログラムは、ユーザが会計関数や数値解析を行うのを助け、また、診断プログラムは、ユーザが問題診断を行うのを助ける、等々である。ユーザが抱えるほとんどあらゆる需要に関してユーザを助けるように多くのプログラムが用意されている。
【０００４】
他の技術と同様に、コンピュータ関連技術は、それに先行するもの、すなわち、先行する進歩や技術や知識のうえに構築されている。初期には、多くの種類のコンピュータ・ハードウェア（例えば、マイクロプロセッサ・チップ）が存在したが、それらの多くは、独自の仕様になっている。時代とともに、特定のブランド及び技術が人気を得て（例えば、インテルやＡＭＤ製のマイクロプロセッサ）、大多数のユーザによって採用されるようになった。この結果、多くの企業は、その他の独自仕様のハードウェアのいくつかを生産することを中止してしまった。そのため、現在では、コンピュータ・ハードウェアの種類は、それほど多くない。
【０００５】
マイクロプロセッサのようなコンピュータ・ハードウェアは、基盤や中核基盤として機能し、そのうえに次の技術進歩が生ずる。多種類の異なるハードウェア・アーキテクチャが存在するときは、単一のオペレーティング・システムが異なる技術及びコンピュータ・アーキテクチャすべての上において動作することは、ほとんど不可能であった。しかし、ハードウェア・アーキテクチャの整理統合化のあとは、数少ないオペレーティング・システムが主流となることが可能となった。ここでも、時代とともに、数少ないオペレーティング・システムが主流となった。現在使用されている最も人気のあるオペレーティング・システムは、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、Ｍａｃｉｎｔｏｓｈ（登録商標）、ＵＮＩＸ（登録商標）、及びその他である。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
今では、オペレーティング・システムが整理統合化されて、それぞれのオペレーティング・システムの機能もいくらか均質化してきた。１つのオペレーティング・システムによって実行される機能は、多かれ少なかれ、他の人気のあるオペレーティング・システムでも実行できる。違いや意味論は、存在するが、能力は、おおよそ相称的で、時代とともに益々似てくる。以上のことから、特定のオペレーティング・システムの種類に依存しないアプリケーションの開発を可能とするシステム及び方法があれば有益である。
【課題を解決するための手段】
【０００７】
本発明の例示的実施の形態は、添付図面を参照すれば、以下の説明及び特許請求の範囲からより完全に明らかになろう。これらの図面が単に実施の形態の一例を示すものでしかなく、従って、本発明の範囲を制限するつもりのものでないことの理解のうえに立って、本発明の例示的実施の形態は、付加的な特殊性及び詳細について添付図面を用いて説明されよう。
【実施例】
【０００８】
（詳細な説明）
プログラム・データを記憶するための、コンピュータ可読媒体が開示される。プログラム・データは、計算装置内で方法をインプリメントするための実行可能な命令を含む。この方法は、アプリケーションを開発するためのユーザ・インタフェースを提供する工程を含む。本方法は、また、アプリケーションに含めるべき１または複数のウェブ・サービスについてのユーザ選択を受信する工程を含む。本方法は、また、計算装置上及び計算装置にアクセスできる他の計算装置上で１または複数のウェブ・サービスを検索する工程を含む。本方法は、また、１または複数のウェブ・サービスの入力と出力を相互接続するためのユーザ命令を受信する工程を含む。
【０００９】
いくつかの実施の形態では、本方法は、また、アプリケーションに含めるべき１または複数のウェブ・サービスのリストを含むマニフェスト（ｍａｎｉｆｅｓｔ）をアプリケーションと一緒にパッケージする工程を含む。本方法は、また、アプリケーションを１つのウェブ・サービスとしてエクスポーズ（ｅｘｐｏｓｅ）するためにアプリケーションをカプセル化（ｅｎｃａｐｓｕｌａｔｅ）する工程を含む。
【００１０】
いくつかの実施の形態では、ユーザ・インタフェースは、グラフィカルなユーザ・インタフェースであることがある。そのような実施の形態では、１または複数のウェブ・サービスを相互接続させるユーザ命令は、一連のドラッグ・アンド・ドロップ操作を介して受信されよう。
【００１１】
プログラム・データを記憶するためのコンピュータ可読媒体の別の実施の形態も開示される。プログラム・データは、計算装置内で方法をインプリメントするための実行可能な命令を含む。この方法は、アプリケーションを展開するためのユーザ命令を受信する工程を含む。本方法は、また、アプリケーションの要求を決定する工程を含む。本方法は、また、計算装置がアプリケーションの要求を満たしているかどうかを判断する工程を含む。本方法は、また、アプリケーションが依存する１または複数のウェブ・サービスを識別する工程を含む。本方法は、また、１または複数のウェブ・サービスを展開する工程を含む。本方法は、また、アプリケーションをインスタンス化する工程を含む。いくつかの実施の形態では、アプリケーションは、計算装置上で走っているオペレーティング・システムと直接に相互作用することはない。更に、いくつかの実施の形態では、ウェブ・サービスの展開は、アプリケーションを展開するために実行されるウェブ・サービスに関するものと類似の工程を実行することを含む。
【００１２】
いくつかの実施の形態では、計算装置がアプリケーションの要求を満たさない場合に、本方法は、また、要求を満たす１または複数の他の計算装置を見つけて、要求を満たす１または複数のそれら他の計算装置に少なくともアプリケーションのいくつかを転送する工程を含む。
【００１３】
いくつかの実施の形態では、要求は、バーチャライザ（ｖｉｒｔｕａｌｉｚｅｒ）を含む。あるいは、またはそれに加えて、要求は、１または複数のハードウェア能力を含む。あるいは、またはそれに加えて、要求は、オペレーティング・システムによって実行される１または複数のサービスを含む。
【００１４】
いくつかの実施の形態では、１または複数のウェブ・サービスの少なくともいくらかは、計算装置上に位置する。あるいは、またはそれに加えて、１または複数のウェブ・サービスの少なくともいくらかは、計算装置にアクセスできる１または複数の他の計算装置上に位置する。１または複数のウェブ・サービスとの通信は、Ｓｉｍｐｌｅ  Ｏｂｊｅｃｔ  Ａｃｃｅｓｓ  Ｐｒｏｔｏｃｏｌ（シンプル・オブジェクト・アクセス・プロトコル）に従って発生する。
【００１５】
計算装置もまた開示される。本計算装置は、プロセッサ及び、プロセッサと電子的に通信するメモリを含む。命令は、メモリに記憶される。命令は、アプリケーションの開発のためのユーザ・インタフェースを提供する工程を含む方法をインプリメントするために実行させることができる。この方法は、また、アプリケーションに含めるべき１または複数のウェブ・サービスについてのユーザ選択を受信する工程を含む。本方法は、また、計算装置上及び計算装置にアクセスできる他の計算装置上で１または複数のウェブ・サービスを検索する工程を含む。本方法は、また、１または複数のウェブ・サービスの入力と出力を相互接続するためのユーザ命令を受信する工程を含む。
【００１６】
計算装置の別の実施の形態が開示される。本計算装置は、プロセッサ及び、プロセッサと電子的に通信するメモリを含む。命令は、メモリに記憶される。命令は、アプリケーションを展開するためのユーザ命令を受信する工程を含む方法をインプリメントするために実行させることができる。本方法は、また、アプリケーションの要求を決定する工程を含む。本方法は、また、計算装置がアプリケーションの要求を満たしているかどうかを判断する工程を含む。本方法は、また、アプリケーションが依存する１または複数のウェブ・サービスを識別する工程を含む。本方法は、また、１または複数のウェブ・サービスを展開する工程を含む。本方法は、また、アプリケーションをインスタンス化する工程を含む。
【００１７】
計算装置中の方法についても開示される。本方法は、アプリケーションを開発するためのユーザ・インタフェースを提供する工程を含む。本方法は、また、アプリケーションに含めるべき１または複数のウェブ・サービスについてのユーザ選択を受信する工程を含む。本方法は、また、計算装置上及び計算装置にアクセスできる他の計算装置上で１または複数のウェブ・サービスを検索する工程を含む。本方法は、また、１または複数のウェブ・サービスの入力と出力を相互接続するためのユーザ命令を受信する工程を含む。
【００１８】
計算装置中の方法の別の実施の形態についても開示される。本方法は、アプリケーションを展開するためのユーザ命令を受信する工程を含む。本方法は、また、アプリケーションの要求を決定する工程を含む。本方法は、また、計算装置がアプリケーションの要求を満たしているかどうかを判断する工程を含む。本方法は、また、アプリケーションが依存する１または複数のウェブ・サービスを識別する工程を含む。本方法は、また、１または複数のウェブ・サービスを展開する工程を含む。本方法は、また、アプリケーションをインスタンス化する工程を含む。いくつかの実施の形態では、アプリケーションは、計算装置上で走っているオペレーティング・システムと直接に相互作用することはない。更に、いくつかの実施の形態では、ウェブ・サービスの展開は、アプリケーションを展開するために実行されるウェブ・サービスのものと類似の工程を実行することを含む。
【００１９】
ここで、本発明の各種の実施の形態について、図面を参照しながら説明する。図面において、同じ参照符号は、同一または機能的に類似した要素を指す。容易に理解されるように、本発明の実施の形態は、ここで一般的に説明され図面に示されるように、幅広く多様な形状で配置及び設計できる。このように、本発明のいくつかの例示的実施の形態についての以下の詳細な説明は、図面に示されるように、特許請求の範囲に請求される本発明の範囲を限定することを意図しておらず、本発明の実施の形態の単なる例示でしかない。
【００２０】
「例示的」という用語は、ここでは、「一例として、例えばまたは例証として役立つ」ことを排他的に意味するものとして使用される。ここで「例示的」として説明されるすべての実施の形態は、その他の実施の形態よりも必ずしも好適であるとか有利である必要はない。実施の形態の各種の態様が図面に提供されているが、特に断わらない限り、図面は、必ずしも正確な縮尺になっていない。
【００２１】
ここに説明される実施の形態のいくつかの態様は、計算装置に記憶されるソフトウェア・モジュールまたはコンポネントとして示される。ここで使用されるように、ソフトウェア・モジュールまたはコンポネントは、メモリ・デバイス内部に位置する、及び／またはシステム・バスやネットワークを介して電子信号として送信される任意のタイプのコンピュータ命令またはコンピュータ実行可能コードを含む。ソフトウェア・モジュールは、例えば、コンピュータ命令の１または複数の物理的または論理的ブロックを含み、それは、１または複数のタスクを実行したり、特別な抽象的データ・タイプをインプリメントしたりするルーチン、プログラム、オブジェクト、コンポネント、データ構造等として構成されよう。
【００２２】
特定の実施の形態では、特別なソフトウェア・モジュールは、メモリ・デバイスの異なる位置に記憶される異なる命令を含み、それらは、一緒になってモジュールの上述の機能をインプリメントする。実際には、１つのモジュールが１つの命令または複数の命令を含み、いくつかの異なるコード・セグメントにわたって、異なるプログラム間に及びいくつかのメモリ・デバイスにわたって分散する。いくつかの実施の形態は、通信ネットワークを通してリンクされた遠隔地の処理装置によってタスクが実行されるようになった分散型の計算環境で実現される。分散型コンピュータ環境では、ソフトウェア・モジュールは、ローカルの、及び／または遠隔地のメモリ・ストレージ装置中に位置する。
【００２３】
ここでの議論を通して例示的実施の形態は、一例として提供されるが、別の実施の形態では、本発明のスコープから外れることなく各種の態様を採用することもできることに注意されたい。
【００２４】
ここに開示される実施の形態に関連して説明される方法のアクションや工程の順序は、本発明のスコープから外れることなく、当業者によって変更されよう。このように、図面や詳細な説明中の順序は、単に例示的な目的のためのものであり、それが要求される順序であることを意味しない。
【００２５】
図１は、コンピュータ・システム及び環境における抽象化レベルを示すブロック図である。計算装置１００が示されている。計算装置１００は、１または複数のネットワーク１０２を介して１または複数の他の計算装置１０４と電子的に通信する。当業者には、多くの異なる種類のネットワーク１０２が知られている。ネットワーク１０２の例としては、ローカル・エリア・ネットワーク（ＬＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、インターネット等が含まれる。ここに開示される実施の形態は、特定の種類のネットワーク１０４に限定されない。
【００２６】
計算装置１００は、ハードウェア１１０を含む。計算装置１００に含められる各種のハードウェア１１０の例としては、プロセッサ、メモリ、通信インタフェース、入力デバイス、出力デバイス等がある。
【００２７】
計算装置１００は、また、オペレーティング・システム１１２を含む。オペレーティング・システム１１２は、ハードウェア１１０上で強力な抽象化を提供する。オペレーティング・システム１１２は、タスクのスケジューリング及び管理、デバイス管理、メモリ割り当て及びその他各種関数を実行する。オペレーティング・システム１１２の例としては、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、Ｍａｃｉｎｔｏｓｈ（登録商標）、Ｍｉｃｒｏｓｏｆｔ  ＤＯＳ（登録商標）、ＵＮＩＸ（登録商標）及びその他が含まれる。
【００２８】
計算装置１００は、また、アプリケーション基盤（ａｐｐｌｉｃａｔｉｏｎ  ｓｕｂｓｔｒａｔｅ）１１４を含む。アプリケーション基盤１１４は、オペレーティング・システム１１２がハードウェア１１０に対して提供するのと同じ抽象化をオペレーティング・システム１１２に対して提供する。アプリケーション基盤１１４は、それができるだけ多くの異なるオペレーティング・システム１１２上で走るように構成される。更に、アプリケーション基盤１１４は、多くの異なるプログラミング言語で書かれたアプリケーションをサポートする。アプリケーション基盤１１４は、ユーザが基盤１１４と相互作用するためのユーザ・インタフェース１１６を含む。アプリケーション基盤１１４は、また、提供エージェント（ｐｒｏｖｉｓｉｏｎｉｎｇ  ａｇｅｎｔ）１１８、１または複数のバーチャライザ１２０、１または複数のエンキャプシュレータ１２２及びレポジトリ（ｒｅｐｏｓｉｔｏｒｙ）１２４を含む。
【００２９】
計算装置１００は、また、１または複数のアプリケーション１２６を含む。アプリケーション１２６は、ユーザのために１または複数の関数を実行するプログラムである。例示した実施の形態では、アプリケーション１２６は、アプリケーション基盤１１４とは、直接相互作用するが、オペレーティング・システム１１２とはしない。
【００３０】
アプリケーション基盤１１４の提供エージェント１１８は、アプリケーション１２６の展開に責任を持つ。ここに開示される実施の形態では、アプリケーション１２６は、１または複数のウェブ・サービス１２５に依存する。「ウェブ・サービス」１２５は、この用語がここで用いられる場合、インターネット・プロトコルを介して位置決めでき、アプリケーション１２６と相互作用する任意のソフトウェア・ピースを意味する。アプリケーション１２６の要求及び依存性は、アプリケーション１２６に付随するマニフェスト１１９に定義される。
【００３１】
アプリケーション１２６を展開するとき、提供エージェント１１８は、アプリケーション１２６のマニフェスト１１９にアクセスして、それの要求及び依存性を決定する。要求には、適当なバーチャライザ１２０、オペレーティング・システム１１２によって実行されるサービス及び基本的なハードウェア１１０の能力が含まれる。依存性には、１または複数のウェブ・サービス１２５が含まれる。マニフェスト１１９は、また、各ウェブ・サービス１２５の機能についての記述を含む。
【００３２】
提供エージェント１１８は、ローカルの計算装置１００がアプリケーションの要求１２６に合致するかどうかを判断する。もし最低限の要求が満たされていなければ、提供エージェント１１８は、どれかほかに要求を満たす計算装置１０４が見つかるかどうかを調べる。それらの要求を満たしている別の計算装置１０４が見つからなければ、ユーザ・インタフェース１１６を通してユーザにエラー・メッセージが返される。
【００３３】
要求が満たされれば（ローカルの計算装置１００または他の計算装置１０４を介して）、提供エージェント１１８は、レポジトリ１２４の中でマニフェスト１１９にリストアップされたウェブ・サービス１２５を探す。ローカル・レポジトリ１２４中にウェブ・サービス１２５が見つからなければ、提供エージェント１１８は、その他の計算装置１０４のレポジトリ１２４でアプリケーション１２６のマニフェスト１１９にリストアップされたウェブ・サービス１２５を探す。
【００３４】
提供エージェント１１８がマニフェスト１１９に挙げられたウェブ・サービス１２５を見つけると、提供エージェント１１８は、ウェブ・サービス１２５をインスタンス化する。提供エージェント１１８は、また、上で説明したのと同じように、インスタンス化されたウェブ・サービス１２５のそれぞれについて要求と依存性をチェックする。マニフェスト１２５に挙げられたすべてのウェブ・サービス１２５がインスタンス化されると、アプリケーション１２６は、ユーザが使用する準備ができたことになる。提供エージェント１１８は、また、モニタリング・サービスを提供し、及び／またはアプリケーション１２６の要求または負荷に基づいて、他の計算装置１０４に対してアプリケーション１２６を自動的に分散させる。
【００３５】
バーチャライザ１２０は、仮想の実行環境を提供するコンポネントである。アプリケーション基盤１１４は、いくつかの異なるバーチャライザ１２０を含む。バーチャライザ１２０の例としては、Ｊａｖａ（登録商標）、Ｐｅｒｌ、Ｐｙｔｈｏｎ、ＰＨＰ、Ｒｕｂｙ、Ｒｏｔｏｒ（Ｃ＃）、ＶＢ．ＮＥＴ、Ｂａｓｉｓ、Ｍｉｃｒｏ  Ｆｏｃｕｓ  Ｃｏｂｏｌ等が含まれるがこれらに限定されない。
【００３６】
エンキャプシュレータ１２２は、標準インタフェースを介してサービス、データまたは論理をエクスポーズするコンポネントである。Ｓｉｍｐｌｅ  Ｏｂｊｅｃｔ  Ａｃｃｅｓｓ  Ｐｒｏｔｏｃｏｌ（ＳＯＡＰ）は、エンキャプシュレータ１２２がエクスポーズするインタフェースの一例である。エンキャプシュレータ１２２のタイプの例には、ターミナル・セッション・エンキャプシュレータ、ＳＱＬエンキャプシュレータ、汎用言語エンキャプシュレータ、スタティック・エンキャプシュレータ等々が含まれるがこれらに限定されない。汎用言語エンキャプシュレータ１２２は、非ＳＯＡＰアウェアのコードをカプセル化するために使用される。例えば、Ｊａｖａ（登録商標）、Ｐｅｒｌ、ＰＨＰ、ＰｙｔｈｏｎまたはＲｕｂｙで書かれたコードは、非ＳＯＡＰアウェアのコードである。スタティック・エンキャプシュレータは、特殊なＯＳサービスまたはプロトコルをカプセル化する。スタティック・エンキャプシュレータは、オペレーティング・システム固有のものである。
【００３７】
もちろん、図１は、コンピュータ・システム及び環境におけるレベル抽象化の単なる１つの可能な構成を示したものである。当業者は、その他の各種アーキテクチャ及びコンポネントが使用できることを理解されよう。
【００３８】
図２は、アプリケーション基盤上で走るアプリケーション２０２の使用を示すブロック図である。エンキャプシュレータ２１０は、アプリケーション２０２の標準インタフェースを通してサービス、データまたは論理をエクスポーズする。バーチャライザ２０８は、仮想の実行環境を提供する。図示のように、ＪＡＶＡ（登録商標）、Ｐｅｒｌ、Ｐｙｔｈｏｎ、ＰＨＰ等々、多くのバーチャライザ２０８が市販されていて利用できる環境である。更に、ＳＣＯｘアセンブリ実行エンジン２１６も１つのバーチャライザである。ＳＣＯｘアセンブリ実行エンジンは、アセンブルされたウェブ・サービス及び定義されたビジネス・プロセスを実行するバーチャライザである。
【００３９】
ホストされた（Ｈｏｓｔｅｄ）２１２アプリケーション及び／またはサービスも、アプリケーション２０２によって使用されるか、あるいは、アプリケーションと一緒に使用される。サード・パーティ２１４のシステム及び／またはサービス２１４、例えば、．ＮＥＴフレームワークもまた、アプリケーション２０２によって、またはそれと一緒に使用される。
【００４０】
ラップされた（Ｗｒａｐｐｅｄ）プログラム２１８は、各種言語でまたは図示された各種環境で書かれたプログラム２２２を含む。プログラム２２２のためのウェブ・サービス・ラッパーであるラッパー２２０も追加されている。
【００４１】
図３は、アプリケーション基盤１１４用のユーザ・インタフェース３１６の実施の形態を示す。ユーザ・インタフェース３１６は、ユーザがウェブ・サービス３２５をドラッグ・アンド・ドロップしてアプリケーション３２６を作成することを許容する。異なるウェブ・サービス３２５が他のウェブ・サービス３２５と一緒に「配線」で接続される。アプリケーション３２６への入力３０８及びアプリケーション３２６からの出力３１０が図３に示されている。図示のように、入力３０８は、各種のウェブ・サービス３２５によって取り上げられて処理され、図示の出力３１０を提供する。特別なウェブ・サービス３２５からの出力は、別のウェブ・サービス３２５への入力として提供されよう。例えば、図３では、ウェブ・サービス３２５ａの出力３１７は、ウェブ・サービス３２５ｂへの入力３１７として提供されている。
【００４２】
ユーザ・インタフェース３１６は、ユーザがアプリケーション３２６を開発するための便利な方法を提供する。利用可能なウェブ・サービス３２５がディスプレイ・ウインドウ３１２に表示される。ディスプレイ・ウインドウ３１２は、アプリケーション３２６を開発するためにユーザが利用できるウェブ・サービスのいくつかまたはすべてを表示する。利用できるウェブ・サービス３２５は、ローカルの計算装置１００上、あるいは、他の計算装置１０４上に位置することができる。いくつかの実施の形態では、各ウェブ・サービス３２５は、ウェブ・サービス３２５によって実行される機能の簡単な説明を添えてグラフィカルに表示される。
【００４３】
ユーザ・インタフェース３１６は、また、ユーザによるウェブ・サービス３２５の選択を容易にするための検索ウインドウ３２０を含む。検索ウインドウ３２０は、ユーザが検索項目を入力できるようにするためのユーザ入力要素３２２（例えば、テキスト・ボックス、ダイアログ・ボックス等）を含む。ユーザが、特別な機能を実行するウェブ・サービス３２５を見つけたいと望むときは、ユーザは、望みの機能を記述する検索項目をユーザ入力要素３２２に入力する。ユーザが入力する検索項目に応答して、アプリケーション基盤１１４は、ローカルの計算装置１００上のレポジトリ１２４中及び／または他の計算装置１０４上のレポジトリ中でユーザが指定した基準に一致するウェブ・サービス３２５を検索する。特定の機能を備えるウェブ・サービス３２５を発見するために、アプリケーション基盤１１４は、ウェブ・サービス３２５のマニフェストを調べてキー項目を探す。一旦見つかると、アプリケーション基盤１１４は、検索項目を満たす、見つかったウェブ・サービス３２５の記述及び／またはその位置を検索ウインドウ３２０に表示する。
【００４４】
更に、ユーザ・インタフェース３１６は、情報ウインドウ３２３を含む。情報ウインドウ３２３は、選ばれたウェブ・サービスに関する情報、例えば、要求、依存性、入力データ・タイプ、出力データ・タイプ等をユーザに提供する。情報ウインドウ３２３は、また、エラーと、計算装置１００が選ばれたウェブ・サービス３２５の要求に合致しているかどうかについての情報とを表示する。
【００４５】
アプリケーション３２６のなかで使用される異なるウェブ・サービス３２を一緒に「配線する」場合、ユーザは、どの入力がどの出力にリンクされるかを指定する。各々の入力及び出力がリンクされなければ、エラー・メッセージが情報ウインドウ３２３に表示されてユーザに返される。情報ウインドウ３２３は、また、各々の相互接続に関する情報、例えば、入力データ・タイプと要求及び出力データ・タイプを表示する。
【００４６】
一旦アプリケーション３２６が生成されると、アプリケーション３２６は、それ自身がウェブ・サービス３２５のような他のものに対して提供される。図４は、ソフトウェア用のウェブ・サービス・ラッパーを生成する汎用言語エンキャプシュレータ４０２を示す。この汎用言語エンキャプシュレータ４０２は、アプリケーション３２６やその他のコード・ビットのようなソフトウェアを入力として受け取って、ウェブ・サービスに変換される、あるいは、変換すべき任意の関数に関してそのソフトウェアを解析する。汎用言語エンキャプシュレータ４０２は、次に、ウェブ・サービス・インタフェースをインプリメントするそのソフトウェア用のラッパーまたはスタブ（ｓｔｕｂ）を生成する。
【００４７】
図５は、アプリケーション１２６を開発するための方法５００の実施の形態を示す。方法５００は、アプリケーション基盤１１４によって実行される。方法５００は、ユーザ認証５０４から始まる。ユーザが認証されれば、アプリケーション基盤１１４は、アプリケーション１２６に含めるべき１または複数のウェブ・サービス１２５についてのユーザ選択を受信する５１０。いくつかの実施の形態では、ユーザは、望む機能を記述する検索項目をユーザ・インタフェース３１６のユーザ入力要素３２２に入力する。ユーザが入力する検索項目に応答して、アプリケーション基盤１１４は、ローカルの計算装置１００上のレポジトリ１２４中及び／または他の計算装置１０４上のレポジトリ中で、ユーザが指定した基準に合致するウェブ・サービス１２５を検索する。一旦見つかると、アプリケーション基盤１１４は、検索項目を満たす発見されたウェブ・サービスの記述及び／またはその場所を表示する。
【００４８】
アプリケーション基盤１１４は、また、工程５１０で選ばれたウェブ・サービス１２５の入力及び出力を相互接続するための命令を受信する５１２。先に述べたように、これは、ユーザがアプリケーション１２６への入力及び出力を各種ウェブ・サービス１２５の入力及び出力と相互接続することを可能とするドラッグ・アンド・ドロップ式ユーザ・インタフェース３１６を提供することを含む。例示的ユーザ・インタフェース３１６は、図３に示されており、それを参照しながら上で説明された。
【００４９】
アプリケーション基盤１１４は、次に、ウェブ・サービス１２５のすべてが正しく相互接続されていることを確認する５１４。これは、アプリケーション１２６への入力３０８がそれぞれウェブ・サービス１２５への入力に接続されていること、アプリケーション１２６の出力３１０がそれぞれウェブ・サービス１２５の出力に接続されていること、及び異なるウェブ・サービス１２５の入力及び出力がそれぞれ正しく接続されていることを確認する工程を含む。
【００５０】
アプリケーション基盤１１４は、次に、アプリケーション１２６をパッケージする５１６。これは、アプリケーション１２６の要求及び依存性を含むマニフェスト１１９を生成する工程を含む。例えば、マニフェスト１１９は、アプリケーション１２６によって使用されるウェブ・サービス１２５のリストを含む。
【００５１】
アプリケーション基盤１１４は、次に、アプリケーション１２６をカプセル化する５１８。更に詳細には、アプリケーション１２６は、ＳＯＡＰなどの標準インタフェースを通してウェブ・サービス１２５としてエクスポーズされる。この工程を実行するためにエンキャプシュレータ１２２を使用することができる。アプリケーション１２６は、次に、計算装置１００上のレポジトリ１２４中に置かれる。他のアプリケーションは、これによって、そのアプリケーション１２６にアクセスしそれと相互作用することができる。
【００５２】
図６は、アプリケーション１２６を展開するための方法６００の実施の形態を示す。方法６００は、アプリケーション基盤１１４によって、更に詳細には、提供エージェント１１８によって実行される。方法６００は、ユーザの認証６０２から始まる。方法６００は、次に、アプリケーション１２６を展開するためのユーザ命令を受信する工程６０４を含む。
【００５３】
方法６００は、次に、アプリケーション１２６の要求を決定する工程６０６を含み、次にそれらの要求を満たす計算装置を見出す工程６０８を含む。上で示したように、要求には、適当なバーチャライザ１２０及び基本的なハードウェア１１０能力が含まれる。もしローカルの計算装置１００がアプリケーション１２６の要求を満たさなければ、アプリケーション基盤１１４は、それらの要求を満たしそのアプリケーション１２６を走らせるために使用される別の計算装置１０４を見出す。
【００５４】
方法６００は、次に、そのアプリケーション１２６が依存している各ウェブ・サービス１２５を識別する工程６１０を含む。上で示したように、アプリケーション１２６は、ローカルの計算装置１００上のレポジトリ１２４中に位置するウェブ・サービス１２５に依存することがある。あるいは、アプリケーション１２６は、ローカルの計算装置１００と電子的に通信状態にある他の計算装置１０４上に位置するウェブ・サービス１２５に依存することがある。
【００５５】
方法６００は、次に、アプリケーション１２６が依存している各ウェブ・サービス１２５を展開する工程６１２を含む。これは、アプリケーション１２６が依存するウェブ・サービス１２５の各々について、図６に示された方法６００に関して説明した工程のいくつかまたはすべてを実行することを含む。例えば、提供エージェント１１８は、各ウェブ・サービス１２５の要求を決定し、それらの要求を満たす１または複数の計算装置を見出し、各ウェブ・サービス１２５の依存性を確認し、必要に応じて付加的なウェブ・サービス１２５をインスタンス化する。方法６００は、次に、アプリケーション１２６をインスタンス化する工程６１４を含む。
【００５６】
図７は、計算装置７００に一般的に採用される主要なハードウェア・コンポネントを示すブロック図である。例示したコンポネントは、同じ物理的構造中または別々のハウジングや構造中に位置することができる。
【００５７】
計算装置７００は、プロセッサ７０１及びメモリ７０３を含む。プロセッサ７０１は、計算装置７００の動作を制御するが、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ（ＤＳＰ）、あるいは、その他の当業界で既知のデバイスとして具体化されよう。プロセッサ７０１は、典型的には、メモリ７０３内部に記憶されるプログラム命令に基づいて論理的及び算術的演算を実行する。
【００５８】
ここで使用される用語「メモリ」７０３は、電子情報を記憶することのできる任意の電子コンポネントとして広く定義され、読出し専用メモリ（ＲＯＭ）、ランダム・アクセス・メモリ（ＲＡＭ）、磁気ディスク・ストレージ・メディア、オプティカル・ストレージ・メディア、ＲＡＭ中のフラッシュ・メモリ・デバイス、プロセッサ７０１と一緒に含まれるオン・ボード・メモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭメモリ、レジスタ等として実現されよう。メモリ７０３は、典型的には、プログラム命令及びその他のタイプのデータを記憶する。プログラム命令は、ここに開示された方法のいくつかまたはすべてをインプリメントするためにプロセッサ８０１によって実行される。
【００５９】
計算装置７００は、また、典型的には、他の電子デバイスと通信するために１または複数の通信インタフェース７０５を含む。通信インタフェース７０５は、ワイヤ配線通信技術、ワイヤレス通信技術あるいは、その両方に基づく。通信インタフェース７０５の異なるタイプの例としては、シリアル・ポート、パラレル・ポート、ユニバーサル・シリアル・バス（ＵＳＢ）、イーサネット（登録商標）・アダプタ、ＩＥＥＥ１３９４バス・インタフェース、スモール・コンピュータ・システム・インタフェース（ＳＣＳＩ）バス・インタフェース、赤外（ＩＲ）通信ポート、ブルーツース（Ｂｌｕｅｔｏｏｔｈ）ワイヤレス通信アダプタ等々が含まれる。
【００６０】
計算装置７００は、また、典型的には、１または複数の入力デバイス７０７及び１または複数の出力デバイス７０９を含む。入力デバイス７０７の各種の例としては、キーボード、マウス、マイクロフォン、リモート制御デバイス、ボタン、ジョイスティック、トラックボール、タッチパッド、ライトペン等が含まれる。出力デバイス７０９の各種の例としては、スピーカ、プリンタ等が含まれる。コンピュータ・システムに典型的に含まれる１つの特殊なタイプの出力デバイスは、ディスプレイ・デバイス７１１である。ここに開示される実施の形態で使用されるディスプレイ・デバイス７１１は、任意の適当な画像投影技術、例えば、ブラウン管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）、発光ダイオード（ＬＥＤ）、ガス・プラズマ、エレクトロルミネッセンス等々を用いている。メモリ７０３に記憶されたデータを、ディスプレイ・デバイス７１１に表示されるテキスト、グラフィック及び／または映像（それぞれに見合うように）に変換するためのディスプレイ・コントローラ７１３も提供される。
【００６１】
もちろん、図７は、計算装置７００の１つの可能な構成を示すだけである。当業者は、理解されるように、各種のその他のアーキテクチャ及びコンポネントを採用することもできる。更に、発明の態様をあいまいにすることのないように、各種の標準的なコンポネントは、図示されていない。
【００６２】
当業者は、更に理解されるように、各種の例示された論理ブロック、モジュール、回路及びここに開示される実施の形態に関連するアルゴリズム工程は、電子的ハードウェア、コンピュータ・ソフトウェアまたは両者の組合せとして実現される。ハードウェアとソフトウェアのこの互換性を分かりやすく説明するために、各種の例示的コンポネント、ブロック、モジュール、回路及び工程は、上では、一般的にそれらの機能で説明された。そのような機能をハードウェアとして実現するのか、ソフトウェアとして実現するのかについては、システム全体に課される設計上の制約や特別なアプリケーションに依存する。当業者は、特別なアプリケーションごとに上述の機能を各種の方法で実現するが、どの方法を採用するのかの決断は、本発明のスコープから外れることにつながると解釈されるべきではない。
【００６３】
ここに開示される実施の形態に関連して述べられた各種の例示的論理ブロック、モジュール及び回路は、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールド・プログラマブル・ゲート・アレイ信号（ＦＰＧＡ）やその他のプログラマブル論理デバイス、ディスクリート・ゲートまたはトランジスタ・ロジック、ディスクリート・ハードウェア・コンポネント、あるいは、ここに述べられた機能を実行するように設計されたそれらの任意の組合せによってインプリメントまたは実行される。汎用プロセッサは、マイクロプロセッサでよいが、別の実施例では、プロセッサは、任意の従来型プロセッサ、コントローラ、マイクロコントローラまたはステートマシンでよい。プロセッサは、また、計算装置の組合せ、例えば、ＤＳＰとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、ＤＳＰコアと組み合わされた１または複数のマイクロプロセッサまたは任意のその他のそのような構成としてインプリメントすることができる。
【００６４】
ここに開示される実施の形態に関連して説明された方法やアルゴリズムの工程は、直接ハードウェアで、プロセッサによって実行されるソフトウェア・モジュールで、あるいは、これら２つの組合せで実現することができる。ソフトウェア・モジュールは、ＲＡＭメモリ、フラッシュ・メモリ、ＲＯＭメモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭメモリ、レジスタ、ハードディスク、リムーバブル・ディスク、ＣＤ−ＲＯＭ、あるいは、当業者に既知の任意のその他のストレージ・メディアの中に位置することができる。例示的なストレージ・メディアは、プロセッサに接続されるので、プロセッサは、ストレージ・メディアから情報を読み出し、そこに情報を書き込むことができる。別の例では、ストレージ・メディアは、プロセッサと統合することができる。プロセッサ及びストレージ・メディアは、ＡＳＩＣ中にあってもよい。
【００６５】
ここに開示される方法は、説明した方法をインプリメントするための１または複数の工程またはアクションを含む。方法の工程及び／またはアクションは、本発明のスコープから外れることなく、互いに入れ替えることができる。言い換えれば、実施の形態の正しい動作のために工程やアクションの特別な順序が必要でない限り、特別な工程やアクションの順序及び／または使用は、本発明のスコープから外れることなしに修正可能である。
【００６６】
本発明の特定の実施の形態及びアプリケーションについて示し説明してきたが、本発明がここに開示された正確な構成及びコンポネントに限られないことは、理解されるべきである。本発明の精神及びスコープから外れることなしに、ここに開示された本発明の方法及びシステムの配置、動作及び詳細において各種の修正、変更及び変形が可能であることは、当業者には、明らかであろう。
【図面の簡単な説明】
【００６７】
【図１】コンピュータ・システム及び環境における抽象化レベルを示すブロック図。
【図２】アプリケーション基盤上で走るアプリケーションの使用を示すブロック図。
【図３】アプリケーション基盤用のユーザ・インタフェースの実施の形態を示す図。
【図４】ソフトウェア用のウェブ・サービス・ラッパーを生成する汎用言語エンキャプシュレータを示す図。
【図５】アプリケーション開発のための方法の実施の形態を示す図。
【図６】アプリケーション展開のための方法の実施の形態を示す図。
【図７】計算装置に一般的に採用される主要なハードウェア・コンポネントを示すブロック図。
【図１】
2007503031.tif 000003
【図２】
2007503031.tif 000004
【図３】
2007503031.tif 000005
【図４】
2007503031.tif 000006
【図５】
2007503031.tif 000007
【図６】
2007503031.tif 000008
【図７】
2007503031.tif 000009
【国際調査報告】
2007503031.tif 000010