(57)【要約】【課題】  インストールソフトウェアをネットワークサービスそのものと密接に関連付けることによって、ネットワークサービスをローカルに実行するためのソフトウェアインストールを促進する方法を提供する。【解決手段】  基本通信フレームワークが、ネットワークサービスを提供するために、ネットワーク・サービス・ソフトウェア・コンポーネントを実行するサービスホストシステムとの間で確立される。このシステムを通じて、コンポーネントの入手可能性が判断され、ランタイム環境に対する必要条件が検証される。システムを通じて提供され、コンポーネントのインストール指示で論理的にグループ分けされたコンポーネントを提供するコード群が実行される。【選択図】  図６
2005174347.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークサービスを実行するための自己インストールソフトウェアコンポーネントを提供するシステムであって、
ネットワークサービスを提供するためのネットワーク・サービス・ソフトウェア・コンポーネントを実行するサービスホストシステムとの間に確立される基本通信フレームワークと、
前記サービスホストシステムを通じて、前記ネットワーク・サービス・ソフトウェア・コンポーネントの入手可能性を判断し、ランタイム環境に対する必要条件を検証する検査機構と、
前記サービスホストシステムを通じて前記ネットワーク・サービス・ソフトウェア・コンポーネントを提供するコード群であって、前記ネットワーク・サービス・ソフトウェア・コンポーネントのインストール指示によって論理的にグループ分けされたコード群を実行するヘルパー機構を備える、システム。
【請求項２】
前記サービスホストシステムに定義され、前記ランタイム環境が前記ネットワーク・サービス・ソフトウェア・コンポーネントをインストールおよび実行するために不可欠な必要条件を満たすことを検証するためのインストール述語オブジェクトをさらに備える、請求項１記載のシステム。
【請求項３】
前記サービスホストシステムに定義され、１つまたはそれ以上の必要条件を満たすために必要な１つまたはそれ以上のネットワーク・サービス・ソフトウェア・コンポーネントのコピーを探し出し、入手するためのヘルパーオブジェクトをさらに備える、請求項１記載のシステム。
【請求項４】
前記サービスホストシステムに定義され、前記ネットワーク・サービス・ソフトウェア・コンポーネントに対する更新を確認し、検索し、インストールするための更新オブジェクトをさらに備える、請求項１記載のシステム。
【請求項５】
ネットワークサービスを実行するための自己インストールソフトウェアコンポーネントを提供する方法であって、
ネットワークサービスを提供するためのネットワーク・サービス・ソフトウェア・コンポーネントを実行するサービスホストシステムとの間に基本通信フレームワークを確立し、
前記サービスホストシステムを通じて、前記ネットワーク・サービス・ソフトウェア・コンポーネントの入手可能性を判断し、ランタイム環境に対する必要条件を検証し、
前記サービスホストシステムを通じて前記ネットワーク・サービス・ソフトウェア・コンポーネントを提供するコード群であって、前記ネットワーク・サービス・ソフトウェア・コンポーネントのインストール指示によって論理的にグループ分けされたコード群を実行する
ことを含む、方法。
【請求項６】
前記ランタイム環境が前記ネットワーク・サービス・ソフトウェア・コンポーネントをインストールおよび実行するために不可欠な必要条件を満たすことを検証するためのインストール述語オブジェクトを前記サービスホストシステムに定義することをさらに含む、請求項５記載の方法。
【請求項７】
１つまたはそれ以上の必要条件を満たすために必要な１つまたはそれ以上のネットワーク・サービス・ソフトウェア・コンポーネントのコピーを探し出し、入手するためのヘルパーオブジェクトを前記サービスホストシステムに定義することをさらに含む、請求項５記載の方法。
【請求項８】
前記ネットワーク・サービス・ソフトウェア・コンポーネントに更新を確認し、取り出してインストールするための更新オブジェクトを前記サービスホストシステムに定義することをさらに含む、請求項５記載の方法。
【請求項９】
コンピュータ上で実行するときに、請求項５から８のいずれか１つに記載の方法ステップを実行するように構成される、コンピュータプログラム。
【請求項１０】
ネットワークサービスを実行するための自己インストールソフトウェアコンポーネントを提供する装置であって、
ネットワークサービスを提供するためにネットワーク・サービス・ソフトウェア・コンポーネントを実行するサービスホストシステムとの間に基本通信フレームワークを確立する手段と、
前記サービスホストシステムを通じて、前記ネットワーク・サービス・ソフトウェア・コンポーネントの入手可能性を判断する手段およびランタイム環境に対する必要条件を検証する手段と、
前記サービスホストシステムを通じて前記ネットワーク・サービス・ソフトウェア・コンポーネントを提供するコード群であって、前記ネットワーク・サービス・ソフトウェア・コンポーネントのインストール指示によって論理的にグループ分けされたコード群を実行する手段と、
を備える装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、一般的にソフトウェアコンポーネントインストールに関するものであり、より詳細には、ネットワークサービスを実行するための自己インストールソフトウェアコンポーネントを提供することに関するものである。
【背景技術】
【０００２】
インターネットが通信およびデータ交換媒体として幅広く受け入れられるようになり、広範囲にわたるネットワークサービスがますます多く利用できるようになってきた。ネットワークサービスは、インターネットを含むネットワークを通じてアクセス可能なホストベースのサービスクラスを参照し、例えばファイルサービス、ウェブアプリケーションなどの分散機能または遠隔機能を提供する。一般的に、個々のユーザーは、要求（リクエスト）システムからネットワークサービスにアクセスしており、この要求システムはしばしばクライアントシステムと呼ばれ、要求システムの代わりにネットワークサービスを実行するサービスホストシステムと遠隔接続している。
【０００３】
ネットワークサービスの使用は、そのネットワークサービスの実行とは区別される。サービスホストシステムは、要求（リクエスト）するクライアントシステムに、ネットワークサービス機能を提供する。しかし、クライアントシステムはそれぞれ、同じネットワークサービス機能をローカルで供給するために、初めにネットワークサービスをインストールしなければならない。例えば、ウェブログは、集中的にホストされ、クライアントシステムから公的にアクセス可能なオンライン日記を提供する。ローカルなウェブログをクライアントシステムで実行するためには、ユーザーはまずネットワークサービスの実行に必要なソフトウェアをインストールする必要がある。
【０００４】
残念ながら、ネットワーク・サービス・ソフトウェア・インストールの端末相互間（end-to-end）の処理もまた、ネットワークサービスそのものの使用とは関連しない作業である。通常のソフトウェアインストールでは、ユーザーはいくつかの独立しているものの関連した一連の作業をうまく完了させなければならない。第１に、ユーザーはインストールソフトウェアが必要ということを知る必要がある。問題は、そのようなソフトウェアの名前、タイプ、および性質が、そのネットワークサービスに基づいてすぐに分からないということである。その上、適切なインストールソフトウェアは、異なるタイプや形式で入手できることもある。
【０００５】
第２に、ユーザーは、インストールソフトウェアのコピーを手に入れる必要がある。一般的に、新しいアプリケーションプログラム、ハードウェアおよび周辺装置はそれぞれ、配布メディアによって、あるいはオンラインダウンロードを通じて、インストールソフトウェアを提供する。しかし、ネットワークサービス用のインストールソフトウェアのコピーを入手することは、潜在的な問題を提起している。その最終目的は、ネットークサービスをローカルで「実行」するために必要なソフトウェアをインストールすることであり、ユーザーがその必要なソフトウェアをどこで入手できるかを知っているという誤った想定がなされている。インストールソフトウェアは、アプリケーションプログラムでもよいし、サービスホストシステムから独立して、あるいはサービスホストシステムと連結して、稼動するサーバーを経由し、オンラインダウンロードを通じて利用することもできる。そのソースが何であろうと、ユーザーは必要なインストールソフトウェアのコピーを特定し、探し出して、入手しなければならない。
【０００６】
第３に、ユーザーはネットワークサービスの実行と、さらにインストールソフトウェアの実行に不可欠な必要条件が満たされているかどうかを判断しなければならない。コンピュータシステムにインストールされるすべてのソフトウェア一式は、どの新しいソフトウェアも最初に調和しなければならないランタイム環境を定義している。しかし、オペレーションシステムを含む既存のソフトウェアは、コンピュータシステムによって異なり、違いについていくつか例を挙げるとすれば、タイプ、バージョン、およびパッチレベルが含まれる。それぞれの違いについては、新しいソフトウェアをインストールする前に、第１に考えなければならない。その結果、ユーザーは、さらにインストールソフトウェアが必要であることを知り、コピーを入手するという前のステップの繰り返しを含めた必要条件を最初に満たした後にのみ、インストールを進めることができる。
【０００７】
最後に、インストールの最中、可能であればインストール後に、ユーザーはこのソフトウェアに更新の必要があるかどうかを調べる必要がある。ソフトウェアの更新は、サポートがソフトウェアのコピーの入手先のソースとは別に提供される場合、面倒な作業である。さらに更新ソフトウェアは、例えばオンラインのみで提供されるなど、インストールソフトウェアと比較して、異なる形式で入手可能なこともある。
【０００８】
従来、インストールソフトウェアと更新は、ネットワークサービスから分離したリソースとして利用できるようになっている。オンライン更新については、例えば、マイクロソフト社（米国ワシントン州レッドモンド）が提供するウィンドウズ（登録商標）アップデート（Windows（登録商標） Update）メカニズムを通じて提供されるなど、益々利用可能になっており、この開示を参照することにより本明細書に援用する。しかしこのメカニズムでは、ユーザーはウェブサイトに接続しなければならず、その後ランタイム環境の評価を行うことになる。ウェブサイトで生成されたリストに基づき、ユーザーはローカルインストールのためにサーバーから、サポートされているソフトウェアの更新を選択し、ダウンロードすることができる。しかしながら、この更新は、ソフトウェアの使用とは別の、関連しないプロセスとして実行される。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
従って、インストールソフトウェアをネットワークサービスそのものと密接に関連付けることによって、ネットワークサービスをローカルに実行するためのソフトウェアインストールを促進する方法が必要である。このような方法では、インストールソフトウェアとネットワークサービスソフトウェアの両方を一緒に提供することが好ましい。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、請求項１に記載の発明は、ネットワークサービスを実行するための自己インストールソフトウェアコンポーネントを提供するシステムであって、ネットワークサービスを提供するためのネットワーク・サービス・ソフトウェア・コンポーネントを実行するサービスホストシステムとの間に確立される基本通信フレームワークと、前記サービスホストシステムを通じて、前記ネットワーク・サービス・ソフトウェア・コンポーネントの入手可能性を判断し、ランタイム環境に対する必要条件を検証する検査機構と、前記サービスホストシステムを通じて前記ネットワーク・サービス・ソフトウェア・コンポーネントを提供するコード群であって、前記ネットワーク・サービス・ソフトウェア・コンポーネントのインストール指示によって論理的にグループ分けされたコード群を実行するヘルパー機構を備えることを特徴とする。
【００１１】
請求項２に記載したように、前記システムは、前記サービスホストシステムに定義され、前記ランタイム環境が前記ネットワーク・サービス・ソフトウェア・コンポーネントをインストールおよび実行するために不可欠な必要条件を満たすことを検証するためのインストール述語オブジェクトをさらに備えることを特徴とする。
【００１２】
請求項３に記載したように、前記システムは、前記サービスホストシステムに定義され、１つまたはそれ以上の必要条件を満たすために必要な１つまたはそれ以上のネットワーク・サービス・ソフトウェア・コンポーネントのコピーを探し出し、入手するためのヘルパーオブジェクトをさらに備えることを特徴とする。
【００１３】
請求項４に記載したように、前記システムは、前記サービスホストシステムに定義され、前記ネットワーク・サービス・ソフトウェア・コンポーネントに対する更新を確認し、検索し、インストールするための更新オブジェクトをさらに備えることを特徴とする。
【００１４】
また、請求項５に記載の発明は、ネットワークサービスを実行するための自己インストールソフトウェアコンポーネントを提供する方法であって、ネットワークサービスを提供するためのネットワーク・サービス・ソフトウェア・コンポーネントを実行するサービスホストシステムとの間に基本通信フレームワークを確立し、前記サービスホストシステムを通じて、前記ネットワーク・サービス・ソフトウェア・コンポーネントの入手可能性を判断し、ランタイム環境に対する必要条件を検証し、前記サービスホストシステムを通じて前記ネットワーク・サービス・ソフトウェア・コンポーネントを提供するコード群であって、前記ネットワーク・サービス・ソフトウェア・コンポーネントのインストール指示によって論理的にグループ分けされたコード群を実行することを含むことを特徴とする。
【００１５】
請求項６に記載したように、前記方法は、前記ランタイム環境が前記ネットワーク・サービス・ソフトウェア・コンポーネントをインストールおよび実行するために不可欠な必要条件を満たすことを検証するためのインストール述語オブジェクトを前記サービスホストシステムに定義することをさらに含むことを特徴とする。
【００１６】
請求項７に記載したように、前記方法は、１つまたはそれ以上の必要条件を満たすために必要な１つまたはそれ以上のネットワーク・サービス・ソフトウェア・コンポーネントのコピーを探し出し、入手するためのヘルパーオブジェクトを前記サービスホストシステムに定義することをさらに含むことを特徴とする。
【００１７】
請求項８に記載したように、前記方法は、前記ネットワーク・サービス・ソフトウェア・コンポーネントに更新を確認し、取り出してインストールするための更新オブジェクトを前記サービスホストシステムに定義することをさらに含むことを特徴とする。
【００１８】
また、請求項９に記載の発明は、コンピュータプログラムであって、コンピュータ上で実行するときに、請求項５から８のいずれか１つに記載の方法ステップを実行するように構成されることを特徴とする。
【００１９】
さらに、請求項１０に記載の発明は、ネットワークサービスを実行するための自己インストールソフトウェアコンポーネントを提供する装置であって、ネットワークサービスを提供するためにネットワーク・サービス・ソフトウェア・コンポーネントを実行するサービスホストシステムとの間に基本通信フレームワークを確立する手段と、前記サービスホストシステムを通じて、前記ネットワーク・サービス・ソフトウェア・コンポーネントの入手可能性を判断する手段およびランタイム環境に対する必要条件を検証する手段と、前記サービスホストシステムを通じて前記ネットワーク・サービス・ソフトウェア・コンポーネントを提供するコード群であって、前記ネットワーク・サービス・ソフトウェア・コンポーネントのインストール指示によって論理的にグループ分けされたコード群を実行する手段と、を備えることを特徴とする。
【発明の効果】
【００２０】
本発明によれば、インストールソフトウェアをネットワークサービスそのものと密接に関連付けることによって、ネットワークサービスをローカルに実行するためのソフトウェアインストールを促進することができる。
【発明を実施するための最良の形態】
【００２１】
本発明の一実施形態は、ネットワークサービスを実行するための自己インストールソフトウェアコンポーネントを提供する。基本通信フレームワークが、ネットワークサービスを提供するためにネットワーク・サービス・ソフトウェア・コンポーネントを実行するサービスホストシステムとの間に確立される。前記システムを通じて、前記コンポーネントの入手可能性が判断され、ランタイム環境に対する必要条件が検証される。システムを通じて前記コンポーネントを提供し、前記コンポーネントのインストール指示で、論理的にグループ分けされたコード群が実行される。
【００２２】
図１は、ネットワークサービスを実行するための自己インストールソフトウェアコンポーネントを提供するためのシステム１０を表すブロック図である。システム１０は、１つまたはそれ以上の個別のコンピュータシステム１１、１２を備えており、それぞれのハードウェア、周辺装置、および、オペレーティングシステム、ドライバー、サポートソフトウェアを含むソフトウェアコンポーネントと、ネットワークサービスとリモートサービス、アプリケーションとは異なっていてもよい。さらに、このソフトウェアコンポーネントのバージョンおよびパッチレベルが異なっていても構わない。コンピュータシステム１１、１２は、例えばインターネットなどのネットワーク上で、相互に接続している。ネットワーク１３は、他の種々のネットワークと相互に作用できるように連結配置された、種々の接続形態・構成・配置のコンポーネントで提供されるローカルエリアネットワークおよび広域ネットワークと、従来の有線式、無線式、衛星式、光学式、およびこれらに同等なネットワーク技術を含み、これらに限定されないことは当業者に明らかであろう。
【００２３】
ネットワークサービスをローカルに実行するためのソフトウェアコンポーネントは、さらに図２を参照して以下に説明するように、要求システム１１とサービスホストシステム１２の間で偶然に行われる軽量の対話を通じてインストールされる。簡潔には、サービスホストシステム１２は、ユーザーが要求システム１１でローカルにインストールし、実行しようとしているネットワークサービスを、ホストするシステムである。要求システム１１は、サービスホストシステム１２が、ネットワークサービスをローカルにインストールし実行するために必要なソフトウェアのソースであることを特定する。要求システム１１は、サービスホストシステム１２がネットワークサービスソフトウェアの提供が可能であることを確認し、サービスホストシステム１２の助けを借りて、ランタイム環境がネットワークサービスソフトウェアの必要条件を満たすことを検証する。検証に成功すると、要求システム１１はこのネットワークサービスソフトウェアのダウンロードおよびインストールを、要求者の管理によって、あるいはインストールヘルパーを用いて実行する。インストール後、必要に応じて、ネットワークサービスソフトウェアの更新が実行される。
【００２４】
要求システム１１とサービスホストシステム１２は両方とも、例えばサン・マイクロシステムズ社（米国カリフォルニア州パロ・アルト）がライセンスを供与するＪａｖａ（登録商標）動作環境などの、マシンに依存せずアーキテクチャに中立的な動作環境を提供するマネージコード（managed code）プラットフォームを実行することが好ましい。また、マネージコードプラットフォームは、さらに図５を参照して以下に説明するように、基本通信フレームワークを提供し、それによって要求システム１１およびサービスホストシステム１２は、ランタイム環境の検証と、ソフトウェアインストールと、必要ならばソフトウェアの更新に作用することのできる軽量な要求・応答プロトコルを実行できる。
【００２５】
さらなる実施形態において、要求システム１１およびサービスホストシステム１２の一方または両方は、特定のランタイム環境において実行するように書かれたプログラムとして、インストールソフトウェアおよびネットワークサービスを直接実行する。例えば、このインストールソフトウェアおよびネットワークサービスは、マイクロソフト社（米国ワシントン州レッドモンド）がライセンスを供与するウィンドウズ（登録商標）（Windows（登録商標））動作環境などの、特定の動作環境で実行するように設計されたプラットフォーム固有のネイティブコードとして提供することが可能である。他の形式のプラットフォーム固有のネイティブコードも、宣言的コードを含めて可能である。
【００２６】
図２は、図１のサービスホストシステム１２を表す機能ブロック図２０である。サービスホストシステム１２は、ネットワークサービス２２を実行して、要求システム１１に分散機能または遠隔機能を提供する。１つの実施形態において、サービスホストシステム１２はマネージコードプラットフォーム２１を実行する。マネージコードプラットフォーム２１は、基礎オペレーティングシステム（図示せず）によって実行されるプログラミング言語コンパイラとインタープリタ（図示せず）を備え、ネットワークサービス２２が実行される仮想ランタイム環境を提供することができる。さらなる実施形態において、サービスホストシステム１２は、ネットワークサービス２２を含むプラットフォーム固有のアプリケーションを直接実行する。他のタイプのアプリケーションまたはサービスをマネージコードプラットフォーム２１の環境下で、あるいはそこから独立して実行するためのソフトウェアに実装することも可能である。
【００２７】
サービスホストシステム１２は、クライアントシステムである要求システム１１に対して、ネットワークサービス２２と同等の機能を要求システム１１にローカルに提供するコードをダウンロードし、インストールし、更新するための標準機構（メカニズム）を提供する。この標準機構は、さらに図４を参照して以下に説明するように、サービスホストシステム１２によって提供されるパブリックインターフェイス２３と、要求システム１１からメソッド呼び出し２５を通じてこのパブリックインターフェイス２３に呼び出される既知のメソッド２４一式を含む。ネットワークサービス２２がこの既知のメソッド２４を実装することで、ネットワークサービス２２のコピーを要求するどのシステムも、ネットワークサービスソフトウェアの構成コンポーネントを別のソースから識別したり、探し出す必要なく、インストールおよび更新プロセスを確実に進められるようになっている。しかし、サービスホストシステム１２は、要求システム１１が必要とするまた別の必須コンポーネントのソースとして機能する必要はない。サービスホストシステム１２が要求システム１１を支援する必要があるのは、ネットワークサービス２２の必要条件が満たされているかどうかの確認だけであって、これらの必要条件を満たす手助けをすることもできるが、そうすることが必須ではない。
【００２８】
サービスホストシステム１２は、ネットワークサービス２２のためのソフトウェアとインストールソフトウェアの両方が論理的にグループ化され、要求システム１１には単一の統合コード群として見えるコンポーネント一式として格納される。ストレージ２７内で、実際のネットワークサービスソフトウェアは、コード群２８に格納され、インストールソフトウェアは、インストール述語オブジェクト３０、ヘルパーオブジェクト３１、および更新オブジェクト３２を備えたオブジェクト２９一式に格納される。
【００２９】
図３は、図２の要求システム１１を表す機能ブロック図４０である。要求システム１１は、要求（リクエスト）４５をサービスホストシステム１２に送信し、ブール値４４と、１つまたはそれ以上のコード群２８と、オブジェクト２９とを含みうる応答２６を受信する。要求システム１１は、検査機構４３と、オプションとして、ヘルパー機構４３を実行する。検査機構４２は、サービスホストシステム１２から受信したインストール述語オブジェクト３０および更新オブジェクト３２を実行する。ヘルパー機構４３は、これもまたサービスホストシステム１２から受信した、ヘルパーオブジェクト３１を実行する。１つの実施形態において、要求システム１１は、検査機構４２と、オプションとしてヘルパー機構４３が実行される仮想ランタイム環境を提供する、マネージコードプラットフォーム４１を実行する。さらなる実施形態において、要求システム１１は、検査機構４２と、オプションとしてヘルパー機構４３を含むプラットフォーム固有のアプリケーションを、直接実行する。マネージコードプラットフォーム４１の環境下で、あるいはそこから独立して実行するソフトウェアに、他のタイプのアプリケーションまたはサービスを実装することも可能である。
【００３０】
さらに図６以降を参照して以下に説明するように、要求システム１１は、サービスホストシステムが提供するパブリックインターフェイス２３を通じて既知のメソッド２４を呼び出すことにより、ソフトウェアコンポーネントをインストールする。要求システム１１は、ネットワークサービスソフトウェアが存在する、あるサービスホストシステム１２を探し出すか、または偶然遭遇することによって、例えばネットワークサービス２２などのインストール可能な望ましいソフトウェアを特定する。インストール可能なソフトウェアは、クライアントまたはサービスのどちらの環境にも依存しうる。要求システム１１は、入手可能性要求４５をサービスホストシステム１２に送信し、ネットワークサービスソフトウェアが入手できる場合は、ランタイム環境の検証を進める。検査機構４２は、インストール述語オブジェクト３０を実行し、ランタイム環境にネットワークサービスのインストールおよび実行に不可欠な必要条件がすべてそろっているかどうかを検証する。
【００３１】
上記の実施形態において、インストール述語オブジェクト３０は、マネージコードプラットフォーム４１内で実行するためのモバイルコードとして実装されて、例えばハードウェア、周辺装置、および、オペレーティングシステム、ドライバー、サポートソフトウェアを含むソフトウェアコンポーネントと、ネットワークサービスとリモートサービス、アプリケーションと、さらにソフトウェアコンポーネントのバージョンとパッチレベルなどの、要求システム１１の任意の形態を検証する。さらなる実施形態において、インストール述語オブジェクト３０は、例えば、インストールの進行に不可欠なソフトウェアコンポーネントのリストを特定する宣言的構文などを用いて記述された、プラットフォーム固有のネイティブコードで実装することもできる。要求システム１１が必要条件を満たさない場合は、インストール述語オブジェクト３０は、さらに実際のインストールを進める前に、別途満たさなければならない必要なコンポーネントのリストを生成する。
【００３２】
いったんすべての必要条件が確認されると、要求システム１１は、コード要求４５をサービスホストシステム１２に送信し、ストレージ４６にインストールコード４７として格納されている、ネットワークサービスソフトウェアを含む、コード群２８を受信する。ユーザーはまず第１に、ネットワークサービスソフトウェアのインストールを手動で進める前に、不足したまま未解決の必要条件を満たさなければならない。あるいは、インストールステップをヘルパー機構４３に委任して、ユーザーに代わって未解決の必要条件を満たし、インストールを実行させることができる。インストールを委任する場合、ヘルパー機構４３は、ヘルパーオブジェクト３１を実行することにより、必要条件を満たすために必要なソフトウェアコンポーネントのコピーを探し出し、入手する。必要に応じて、ランタイム環境が再びそれぞれの必要条件に対して検証される。次いで、それぞれの必要条件はインストールされ、その後に続いてネットワークサービスソフトウェアがインストールされる。上記の実施形態において、ヘルパーオブジェクト３１は、マネージコードプラットフォーム４１内で実行するためのモバイルコードとして実装される。さらなる実施形態において、ヘルパーオブジェクト３１は、例えば、宣言的構文を用いて書かれたプラットフォーム固有のネイティブコードで実装することもできる。
【００３３】
インストールが成功すると、要求システム１１は、サービスホストシステム１２に更新要求４５を送信し、必要に応じて、ネットワークサービスソフトウェアの更新を進める。検査機構４２は、更新オブジェクト３２を実行することにより、必要な更新を特定し、検索し、インストールする。上記の実施形態において、更新オブジェクト３２は、マネージコードプラットフォーム４１内で実行するためのモバイルコードとして実装される。さらなる実施の形態において、更新オブジェクト３２は、例えば宣言的構文を用いて書かれたプラットフォーム固有のネイティブコードで実装することもできる。
【００３４】
要求システム１１は、ストレージ４６に受信済みコード群２８とオブジェクト２９のそれぞれを、継続的に記憶することが好ましい。ネットワークサービス２２は、いったんインストールされて実行されると、今度は要求システム１１で動作しながらも、パブリックインターフェイス２３を提供し、これにより他の要求システムが、要求システム１１からネットワークサービスソフトウェアをダウンロードし、更新するために、既知のメソッド２４を呼び出すことを可能とする。このように、ネットワークサービスソフトウェアは、ネットワークサービスのための、「ウイルス性」ソフトウエアとなる。ネットワークサービス２２のインストールが成功した後、それを実行している間、要求システム１１は、他の要求システム１１にネットワークサービスソフトウェアを提供することができる、サービスホストシステム１２になることができる。さらなる実施形態では、ネットワーク・サービス・インストール・ソフトウェアがウイルス性である。また、さらなる実施形態では、更新ソフトウェアがウイルス性である。その他の形式でのネットワークサービス２２の伝播も可能である。
【００３５】
上記の実施形態において、クライアント要求システム１１は、サービスホストシステム１２によって提供されるネットワークサービス２２と同等の機能を持つサービスを、クライアントシステムが提供できるようになるコードを発見し、入手し、インストールし、更新することによって、実質的にサービスホストシステム１２そのものになる。さらなる実施形態において、クライアント要求システム１１がサービスホストシステム１２から入手したコードは、サービスホストシステム１２が提供する機能とは異なる機能を提供することも可能である。例えば、入手したコードは、クライアントシステムがサービスホストシステムと対話できるようにする機能を提供することができる。他のタイプの機能も可能である。
【００３６】
図４は、図２のサービスホストシステム１２が、要求するクライアントに提供するパブリックインターフェイス２３を一例として表すデータ構造図６０である。それぞれのネットワークサービス２２が、既知のメソッド２４を定義することにより、パブリックインターフェイス２３を提供する。１つの実施の形態において、既知のメソッド２４は、標準化されたメソッド定義であり、サービスホストシステム１２のマネージコードプラットフォーム２１内で実行するために、例えばＪａｖａ（登録商標）プログラミング言語などのマシンに依存しないプログラミング言語によるコードで書かれていることが好ましい。しかし、さらなる実施形態において、それぞれの既知のメソッド２４を、要求システム１１によって遠隔地から呼び出すことができるという条件で、既知のメソッド２４は、マネージコードプラットフォームから独立して実行される宣言的構文で書くことができる。既知のメソッドの他での形式の実装も可能である。
【００３７】
一例として、パブリックインターフェイス２３は、ＳｐｅａｋｅａｓｙＣｏｍｐｏｎｅｎｔなどのパブリックインターフェイスを特定するタグ６１と、それぞれの既知のメソッド２４のメソッド定義６２とで構成される。上記の実施形態において、４つのメソッド定義６２が指定されている。それぞれのメソッドが呼び出されると、要求システム１１は、それぞれの既知のメソッド２４に対する入力パラメーターとして、オペレーティングシステムと、バージョンおよびパッチレベルを含めたランタイム環境と、ネットワークサービスソフトウェアの名前とを確認する。
【００３８】
サービスインストーラー提供（ｐｒｏｖｉｄｅｓＳｅｒｖｉｃｅＩｎｓｔａｌｌｅｒ）メソッド定義は、ネットワークサービス２２が、ネットワークサービスソフトウェアを使用するために要求システム１２にインストールしなければならない特別な機能を入手可能にできるかどうかを示す。特別な機能とは、構成コンポーネント、あるいは依存コンポーネントに加えて、実行可能なネットワークサービスソフトウェアも含む。サービスインストーラー提供メソッド定義は、ネットワークサービス２２の入手可能性または入手不可能性を最終的に示すブール値を返すことを仕様として指定している。
【００３９】
クライアント環境検証（ｖｅｒｉｆｙＣｌｉｅｎｔＥｎｖｉｒｏｎｍｅｎｔ）メソッド定義は、述語オブジェクト３０をダウンロードし、この述語オブジェクトを用いて、要求システム１１が、この要求システム１１のランタイム環境でネットワークサービスソフトウェアのインストールが可能かどうかについて、評価することができる。インストール述語オブジェクト３０は、ランタイム環境を評価し、ネットワークサービスソフトウェアのインストールを進められるようになる前に、必要とされるコンポーネントのリストを生成する。
【００４０】
サービスインストーラー入手（ｇｅｔＳｅｒｖｉｃｅＩｎｓｔａｌｌｅｒ）メソッド定義は、実際のインストール可能なコード群２８と、さらにヘルパーオブジェクト３１と、オプションとして更新オブジェクト３２を要求システム１１にダウンロードして、ネットワークサービスソフトウェアをインストールし、必要があれば更新する。ヘルパーオブジェクト３１は、インストールステップをヘルパー機構４３に委任するために使用される。更新オブジェクト３２は、ネットワークサービスソフトウェアの更新が必要かどうかを調べるために使用される。
【００４１】
最後に、コード更新必要性（ｃｏｄｅＵｐｄａｔｅＲｅｑｕｉｒｅｄ）メソッド定義は、例えばインストールに成功した後、あるいは定期的に、ネットワークサービスソフトウェアが更新を必要としているかどうかを示す。更新オブジェクト３２を用いて、要求システム１１は、それぞれ受信したコード群２８のバージョンおよびパッチレベル識別子のレジストリを保持することができ、更新が必要かどうかを判断するためにネットワークサービス２２を定期的に調べることができる。コード更新必要性メソッド定義は、クライアントに関する情報を提供するバージョン記述子（ｖｅｒｓｉｏｎＤｅｓｃｒｉｐｔｏｒ）文字列引数を受け取り、更新状況を最終的に示すブール値を返すことを仕様として指定している。
【００４２】
本明細書では特定のメソッド定義６２を参照して記載しているが、他の実装および他のタイプのメソッド定義および呼び出しも可能である。例えば、既知のメソッド２４は、ネットワークサービス入手可能性、環境検証、インストール可能なコード群、および更新に関する異なるパラメーターを指定することにより、単一のメソッド呼び出し２５を通じて、パブリックインターフェイス２３に呼び出すことが可能である。同様に、既知のメソッド２４は、プロセス間通信メカニズム、またはリモートプロシージャコールを用いた非オブジェクト指向プログラムセマンティックスを通じて、呼び出すこともできる。
【００４３】
図５は、ソフトウェアインストールの処理および更新の工程を表す図７０である。要求システム１１およびサービスホストシステム１２は、ランタイム環境検証と、ソフトウェアインストールと、必要ならばソフトウェア更新に作用する軽量な要求−応答プロトコルを実装する。要求システム１１は、サービスホストシステム１２のパブリックインターフェイス２３に、メソッド呼び出し２５を通じて、既知のメソッド２４を呼び出すことによって、サービスホストシステム１２と通信する。それに応じて、サービスホストシステム１２は、ブール値４４と、１つまたはそれ以上のコード群２８と、オブジェクト２９を含むことができる応答２６を送信する。
【００４４】
前記要求‐応答プロトコルは、３つの論理的に定義されたフェーズで進行する。第１フェーズの環境検証フェーズ７１では、要求システム１１はサービスインストーラー提供メソッド７４を呼び出して、サービスホストシステム１２でネットワークサービスソフトウェアを入手できるかどうかと、特別な機能を要求しているかどうかを判断する。それに応じて、サービスホストシステム１２は、ネットワークサービスソフトウェアが入手できるかどうかを示すブール値７５を返す。ネットワークサービスソフトウェアがサービスホストシステム１２で入手できる場合、要求システム１１は、クライアント環境検証メソッド７６を呼び出して、ネットワークサービスソフトウェアのインストールが作用するために不可欠な必要条件が満たされているかどうかを評価する際に用いる、述語オブジェクト３０を受信する。必要に応じて、要求システム１１は、すべての必要条件が完全に構築されるまで、それぞれの必要条件ごとに、サービスホストシステム１２または他のサービスホストシステムに対して、サービスインストーラー提供メソッド７４呼び出しおよびクライアント環境検証メソッド７６の反復的、あるいは再帰的な繰り返しを実行することができる。
【００４５】
第２フェーズのインストールフェーズ７２では、要求システム１１は、サービスインストーラー入手メソッド７７をサービスホストシステム１２に呼び出して、ネットワークサービスソフトウェアのためにコード群２８と、ヘルパーオブジェクト３１と、必要ならば更新オブジェクト３２を受信する。必要に応じて、要求システム１１は、ネットワークサービスソフトウェアと、環境検証フェーズ７１の最中に確認されたそれぞれの必要条件の両方をインストールするために必要なソフトウェアコンポーネントを入手するために、サービスホストシステム１２または他のサービスホストシステムに対して、サービスインストーラー入手メソッド７７呼び出しの反復的、あるいは再帰的に繰り返して実行することができる。
【００４６】
第３フェーズの更新フェーズ７３では、要求システム１１は、コード更新必要性メソッド７８を呼び出して、ネットワークサービスソフトウェアが更新を必要としているかどうかを判断する。これに応じて、サービスホストシステム１２は、ネットワークサービスソフトウェアの更新が必要とされているかどうかを示すブール値７９を返す。
【００４７】
これら３つのフェーズ７１、７２、７３に追加して、あるいはこれらの代りに、他のフェーズを提供することも可能である。例えば、環境検証、インストール、および更新は、要求システム１１とサービスホストシステム１２の間でやりとりされる単一の要求と単一の応答による１つのフェーズで実行することもできる。さらに、他のプロトコル形式および対話を使用することもできる。例えば、要求システム１１は、サービスホストシステム１２から、必要なネットワークサービスソフトウェアを応答処理なしで取り出すこともできる。
【００４８】
図６は、モバイルコードを通じて、ネットワークサービスを実行するための自己インストールソフトウェアコンポーネントを提供するための方法９０を表すフロー図である。方法９０は、サービスホストシステム１２との軽量な要求−応答プロトコルの対話を処理する要求システム１１の観点から記載されている。方法９０は、例えば、図１の要求システム１１または他のコンポーネントによって実行可能な一連の処理操作、またはステップとして記載されている。
【００４９】
要求システム１１は、インストール候補のネットワークサービス２２を特定する（ブロック９１）ことから開始される。次に、要求システム１１は、さらに図７を参照して以下に説明するように、ネットワークサービス２２の入手先候補であるサービスホストシステム１２から必要なコンポーネントを入手できるかどうかを決定する（ブロック９２）ことで、ターゲットネットワークサービス２２の入手先のサービスホストシステム１２の発見を試みる。
【００５０】
前記コンポーネントが発見できない場合（ブロック９３）、要求システム１１は別のサービスホストシステム１２がネットワークサービスソフトウェアを持っているかどうかの判断を試みる（ブロック９２）。反対に、入手できるコンポーネントが候補のサービスホストシステム１２で発見された場合は（ブロック９３）、要求システム１１は、さらに図８を参照して以下に説明するように、インストールを進めることができるようになる前に必要とされるコンポーネントのリストを生成するために、述語オブジェクト３０を実行することによって、ランタイム環境の検証を試みる（ブロック９４）。
【００５１】
要求システム１１のランタイム環境が、要求とされる必要条件を満たさないために妥当と検証されない場合は（ブロック９５）、要求システム１１は、ネットワークサービス２２をインストールし実行する前に、それぞれ必要条件を満たす必要がある。１つの実施形態において、要求システム１１は、必要条件であるコンポーネントの入手先となるサービスホストシステム１２の発見を試みる（ブロック９２）。必要条件であるコンポーネントは、ネットワークサービスソフトウェアの入手先と同じサービスホストシステム１２によって提供されてもよいし、あるいは別個のソースによって提供されてもよい。ランタイム環境の検証に成功した場合には（ブロック９５）、要求システム１１は、さらに図９Ａおよび図９Ｂを参照して以下に説明するように、ターゲットネットワークサービス２２のためのコンポーネントをダウンロードし、インストールする（ブロック９６）。上記の実施形態において、インストール処理は、コード群２８で個々のインストールステップを実行するユーザーによって明示的に管理することができる。あるいは、インストールステップは、ヘルパーオブジェクト３１に委任することが可能であり、このヘルパーオブジェクト３１は、必要条件であるソフトウェアコンポーネントのコピーを発見し、ランタイム環境を検証し、ターゲットネットワークサービス２２と必要条件であるコンポーネントを要求システム１１にインストールする。
【００５２】
ダウンロードとインストールが失敗した場合は（ブロック９７）、エラーが生成され（ブロック９８）、方法は終了する。反対に、成功した場合は（ブロック９７）、さらに図１０を参照して以下に説明するように、ターゲットネットワークサービス２２のためのソフトウェアコンポーネントが更新される（ブロック９９）。上記の実施形態において、要求システム１１は、更新オブジェクト３２を自動タスクとして定期的に実行して、ターゲットネットワークサービス２２の最新のバージョンまたはパッチが利用可能かどうかを調べることが好ましい。更新を行った後、本方法は終了する。
【００５３】
図７は、図６の方法９０で使用される利用可能な自己インストールソフトウェアコンポーネントを判断するためのルーティン１１０を表すフロー図である。このルーティンの目的の１つは、ネットワークサービスのための自己インストールソフトウェアコンポーネントが、候補のサービスホストシステム１２から入手可能かどうかを判断することである。
【００５４】
まず、サービスホストシステム１２は、ターゲットネットワークサービス２２のソースの候補として特定される（ブロック１１１）。いったん特定されると、要求システム１１は、候補であるサービスホストシステム１２からターゲットネットワークサービス２２の入手可能性を要求し（ブロック１１２）、入手可能性または入手不可能性を示す応答４５を受信する（ブロック１１３）。上記の実施の形態において、候補のサービスホストシステム１２は、入手可能性状態を明示的に示すブール値を返す。その後、ルーティンは呼び出し元に戻る。
【００５５】
図８は、図６の方法９０で使用されるランタイム環境を検証するためのルーティン１２０を表すフロー図である。このルーティンの目的の１つは、ターゲットネットワークサービス２２のインストールおよび実行に不可欠な全ての必要条件が満たされていることを確認することである。
【００５６】
まず、要求システム１１は、サービスホストシステム１２から述語オブジェクト３０を要求後、受信して、継続的に記憶する（ブロック１２２）。次に、要求システム１１は、述語オブジェクト３０を実行し、ランタイム環境を検証する（ブロック１２３）。要求システム１１のランタイム環境の検証に成功した場合は（ブロック１２４）、ルーティンは呼び出し元に戻る。検証できない場合、述語オブジェクト３０は、不足しているコンポーネントのリストを生成し（ブロック１２５）、その後ルーティンが戻る。上記の実施形態において、不足しているコンポーネントのリストが、ターゲットネットワークサービス２２のインストールに必要なソフトウェアコンポーネント一式およびその他のパラメーターとして提供される。
【００５７】
図９Ａおよび図９Ｂは、図６の方法９０で使用される自己インストールソフトウェアコンポーネントをダウンロードし、インストールするためのルーティン１３０を表すフロー図である。このルーティンの目的の１つは、ターゲットネットワークサービス２２をインストールするために、そしてインストールが委任される場合、ユーザーに代わってインストールステップを実行するために、必要とされる全てのコード群２８をダウンロードすることである。
【００５８】
まず、要求システム１１は、ターゲットネットワークサービス２２のための１つまたはそれ以上のコード群２８と、暗黙的にヘルパーオブジェクト３１と、必要に応じて更新オブジェクト３２を、サービスホストシステム１２に要求する（ブロック１３１）。要求システム１１は、それぞれのコード群２８、ヘルパーオブジェクト３１、および更新オブジェクト３２を受信し、継続的に記憶する（ブロック１３２）。ユーザーが、ソフトウェアコンポーネントを手動でインストールすることを選択する場合、つまり、インストールヘルパーを使用しない場合には（ブロック１３３）、ルーティンは呼び出し元に戻り、ユーザーはインストールステップの手動実行に進む。
【００５９】
反対に、インストールがヘルパー機構４３に委任され、ユーザーに代わって未解決の必要条件を満たし、インストールを行う場合は（ブロック１３３）、ヘルパーオブジェクト３１が検索される（ブロック１３４）。それから、それぞれのコード群２８は、次のとおり反復処理される（ブロック１３５−１４４）。それぞれのコード群ごとに（ブロック１３５）、ソフトウェアコンポーネントが不足している場合、つまり、不足しているソフトウェアコンポーネントのリストが、述語オブジェクト３０によって生成された場合は（ブロック１３６）、要求システム１１は、さらに図７を参照して上記で説明したように、不足しているソフトウェアコンポーネントがサービスホストシステム１２から入手可能かどうかを判断する（ブロック１３７）。前記コンポーネントがサービスホストシステム１２から入手できない場合（ブロック１３８）、要求システム１１は、不足しているソフトウェアコンポーネントが入手可能な別のサービスホストシステムを見つけようと試みる（ブロック１３７）。不足しているソフトウェアコンポーネントがいったん発見されると（ブロック１３８）、要求システム１１は、図８を参照して上記で説明したように、要求システム１１のランタイム環境を検証して、ターゲットネットワークサービス２２のインストールおよび実行に不可欠なすべての必要条件が満たされているかどうかを評価する（ブロック１３９）。ランタイム環境が検証されない場合、つまり、現時点で不足しているソフトウェアコンポーネントのリストを作成した述語オブジェクト３０が、さらに不足しているソフトウェアコンポーネントのリストを生成した場合（ブロック１４０）、要求システム１１は、さらに不足しているソフトウェアコンポーネントがサービスホストシステム１２で発見できるかどうかの判断を再び試みる（ブロック１３７）。最後に、いったん不足しているすべてのソフトウェアコンポーネントが入手可能となり、ランタイム環境が検証されると（ブロック１４０）、述語オブジェクト３０に指定されたステップでインストールを実行することによって、ソフトウェアコンポーネントがインストールされる（ブロック１４１）。インストールが成功しなかった場合は（ブロック１４２）、エラーが生成される（ブロック１４３）。反対にインストールが成功した場合、残りのコード群２８それぞれについて処理を継続し（ブロック１４４）、その後ルーティンは呼び出し元に戻る。
【００６０】
図１０は、図６の方法９０で使用される自己インストールソフトウェアコンポーネントを更新するためのルーティン１５０を表すフロー図である。このルーティンの目的の１つは、インストールされたターゲットネットワークサービス２２が、更新を必要とするかどうかをインストール成功後に判断することである。
【００６１】
更新オブジェクト３２が検索されて（ブロック１５１）、要求システム１１はサービスホストシステム１２に更新が必要とされているかどうかを要求する（ブロック１５２）。サービスホストシステム１２からの応答２６を受信し（ブロック１５３）、更新が必要とされていない場合は（ブロック１５４）、ルーティンは呼び出し元に戻る。更新が必要とされている場合は、要求システム１１は、サービスホストシステム１２から必要な更新を要求する（ブロック１５５）。次に、要求システム１１は、更新を受信し（ブロック１５６）、インストールを実行し（ブロック１５７）、その後ルーティンは呼び出し元に戻る。
【００６２】
上記の実施形態において、クライアント要求システム１１は、サービスホストシステム１２が提供するネットワークサービス２２と同等の機能を持つサービスを、クライアントシステムが提供できるようにするコードを発見し、入手し、インストールし、更新することによって、実質的にサービスホストシステム１２そのものになる。さらなる実施形態において、クライアント要求システム１１がサービスホストシステム１２から入手したコードは、サービスホストシステム１２によって提供される機能と異なる機能を提供することもできる。例えば、入手されたコードは、クライアントシステムがサービスホストシステムと対話する機能を提供してもよい。他のタイプの機能を提供することも可能である。
【図面の簡単な説明】
【００６３】
【図１】ネットワークサービスを実行するための自己インストールソフトウェアコンポーネントを提供するためのシステムを表すブロック図である。
【図２】図１のサービスホストシステムを表す機能ブロック図である。
【図３】図２の要求システムを表す機能ブロック図である。
【図４】図２のサービスホストシステムが、要求するクライアントに提供するパブリックインターフェイスを、一例として表すデータ構造図である。
【図５】ソフトウェアインストールの処理および更新の工程を表す図である。
【図６】ネットワークサービスを実行するための自己インストールソフトウェアコンポーネントを提供するための方法を表すフロー図である。
【図７】図６のルーティンで使用される入手可能な自己インストールソフトウェアコンポーネントを判断するためのルーティンを表すフロー図である。
【図８】図６のルーティンで使用されるランタイム環境を検証するためのルーティンを表すフロー図である。
【図９Ａ】図６のルーティンで使用される自己インストールソフトウェアコンポーネントをダウンロードし、インストールするためのルーティンを表すフロー図である。
【図９Ｂ】図６のルーティンで使用される自己インストールソフトウェアコンポーネントをダウンロードし、インストールするためのルーティンを表す、図９Ａから続くフロー図である。
【図１０】図６のルーティンで使用される自己インストールソフトウェアコンポーネントを更新するためのルーティンを表すフロー図である。
【符号の説明】
【００６４】
１１  要求システム
１２  サービスホストシステム
１３  ネットワーク
１４  ストレージ
１５  ストレージ
２１  マネージコードプラットフォーム
２２  ネットワークサービス
２３  パブリックインターフェイス
２４  既知のメソッド
２５  メソッド呼び出し
２６  応答
２７  ストレージ
２８  コード群
２９  オブジェクト
３０  述語オブジェクト
３１  ヘルパーオブジェクト
３２  更新オブジェクト
【図１】
2005174347.tif 000003
【図２】
2005174347.tif 000004
【図３】
2005174347.tif 000005
【図４】
2005174347.tif 000006
【図５】
2005174347.tif 000007
【図６】
2005174347.tif 000008
【図７】
2005174347.tif 000009
【図８】
2005174347.tif 000010
【図９Ａ】
2005174347.tif 000011
【図９Ｂ】
2005174347.tif 000012
【図１０】
2005174347.tif 000013