(57)【要約】アプリケーション仮想化システムは、ｗｅｂアプリケーション等のサーバーアプリケーションを容易に配置できるようにし、アプリケーションとその状態をシステムから分離し、アプリケーションを容易に他のサーバーに移動することを可能にしている。アプリケーション仮想化システムは競合を隔離する方法を提供し、競合情報を提供する複数のアプリケーションが独立して動作し、競合を避けること可能にする。アプリケーション仮想化システムはアプリケーション準備セッションの報知を受け取り、セッションを監視してアプリケーションがクライアント上で動作するために使用する環境設定情報を収集する。アプリケーション仮想化システムは収集された情報を仮想化されるべきアプリケーションが配置されるまで格納する。後に管理者がアプリケーションを配置するとき、システムは格納された情報を取り出し、この情報及びクライアントからの情報を使用してメタデータを再構成し、アプリケーションを仮想化する。
2013521578.tif 000002
【特許請求の範囲】
【請求項１】
仮想化のためのｗｅｂサーバーアプリケーションを準備するためのコンピューターにより実現される方法であって、
仮想化すべきｗｅｂサーバーアプリケーションの監視を開始する指示を受取るステップであり、前記アプリケーションは特定のｗｅｂアプリケーションを指定するパラメーターを有するｗｅｂサーバーのネーティブの仮想化されていないプロセスを使用して呼び出される、前記ステップと、
前記ｗｅｂアプリケーションのインストールを開始するステップと、
前記ｗｅｂアプリケーションのインストールの間に前記ｗｅｂアプリケーションを呼び出すパラメーターを含む環境設定データを捕捉するステップと、
前記ｗｅｂアプリケーションのインストールの監視を終了するステップと、
前記ｗｅｂアプリケーションを後に配置する間に使用するために前記捕捉した環境設定データを格納するステップと、
前記格納された環境設定データを含めて前記ｗｅｂアプリケーションを、配置するためのパッケージにするステップと
を備え、
上記のステップは少なくとも一つのプロセッサーにより実行される、ことを特徴とする方法。
【請求項２】
前記監視の開始の指示を受取るステップは、管理者がアプリケーション監視ツールを開始させたことを検出することを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記監視は、インストールの後に取られた終了スナップショットと比較するために前記ｗｅｂアプリケーションのインストールの前にテストサーバーの状態を格納する開始スナップショットを取り、インストールの間に前記ｗｅｂアプリケーションによって行われた環境設定の変更を検出することを含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記インストールを開始するステップは、新しいプロセスの作成を検出し、コア仮想化システムをプロセスに入れることを含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記環境設定データを捕捉するステップは、ｗｅｂアプリケーションに関連したアプリケーションプール名を検出することを含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記環境設定データを捕捉するステップは、インストールの間にｗｅｂアプリケーションによって変更された１つ以上のファイル、レジストリ値、又はアプリケーション特有の環境設定を検出することを含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記監視を終了するステップは、インストールの前に取られた開始スナップショットと比較するためにｗｅｂアプリケーションと関連したデータの終了スナップショットを取ることを含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記捕捉した環境設定データを格納するステップは、ＸＭＬファイルを作成し、後に取り出すために環境設定データをＸＭＬファイルに存続させることを含むことを特徴とする請求項１に記載の方法。
【請求項９】
前記ｗｅｂアプリケーションをパッケージ化するステップは、前記ｗｅｂアプリケーションに関連した１つ以上のファイル及び環境設定データを含むアーカイブファイルを作成することを含むことを特徴とする請求項１に記載の方法。
【請求項１０】
サーバーアプリケーションを仮想化するコンピューターシステムであって、
ソフトウエア命令を実行するように構成されたプロセッサー及びメモリーと、
仮想化のために準備されつつあるアプリケーションを監視してアプリケーションに関連した環境設定データを検出するように構成された監視コンポーネントと、
仮想化のために準備されつつあるアプリケーションに関連した環境設定データを格納するためのパッケージを生成するように構成されたパッケージ作成コンポーネントと、
仮想化のために準備されつつあるアプリケーションの監視と、仮想化されたアプリケーションを１つ以上のターゲットコンピューターシステムへの配置との間にアプリケーションパッケージを格納するように構成されたアプリケーションパッケージストアと、
ターゲットコンピューターシステムが仮想化されたアプリケーションを呼び出すことができるようにアプリケーションパッケージをターゲットコンピューターシステムに配置するように構成されたアプリケーション配置コンポーネント（１４０）と、
仮想化されたアプリケーションに関連した環境設定データを検出し、ターゲットコンピューターシステム上で動作するように構成された他の仮想アプリケーション又は非仮想アプリケーションとの競合を回避するように環境設定データを変更するように構成されたコンフリクト管理コンポーネント（１５０）と、
仮想化されたアプリケーションとターゲットコンピューターシステムのホストオペレーティングシステムとの間に一段の間接参照を提供するように構成されたアプリケーション実行環境（１６０）と
を備えたことを特徴とするコンピューターシステム。
【請求項１１】
前記監視コンポーネントは、アプリケーションプログラミングインターフェース（ＡＰＩ）をフックして、変更が要求されたのに応じてアプリケーションによって環境設定に加えられた変更を検出するように更に構成されていることを特徴とする請求項１０に記載のシステム。
【請求項１２】
前記アプリケーション配置コンポーネントは、アプリケーションをｗｅｂアプリケーション管理コンポーネントに登録することを含む、ターゲットコンピューターシステム上でのアプリケーション特有の環境設定を実行するように更に構成されていることを特徴とする請求項１０に記載のシステム。
【請求項１３】
前記コンフリクト管理コンポーネントは、その中で実行するための名前付きアプリケーションプールを指定するｗｅｂサーバーアプリケーションのために名称の競合を検出し、他のアプリケーションと競合しないように名称を変更するように更に構成されていることを特徴とする請求項１０に記載のシステム。
【請求項１４】
前記競合管理コンポーネントは、コンポーネントのデフォルトの動作を上書きする情報を管理者から受け取り、特定のアプリケーションプール名を指定してｗｅｂアプリケーションのために名称の競合を避けるように更に構成されていることを特徴とする請求項１０に記載のシステム。
【請求項１５】
前記アプリケーション実行環境は、ターゲットコンピューターシステム上のワーカープロセス内でのアプリケーションの開始を検出することを特徴とする請求項１０に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
［背景技術］
仮想化とは物理ハードウエアによって仮想マシーンを実行し、次に仮想マシーン上でオペレーティングシステム及びアプリケーションを動作させることを指している。仮想マシーンはハードウエアの機能の共通点を表しても良く、又はオペレーティングシステム（ＯＳ）とアプリケーションを準備するのが容易なよく知られた構成を表しても良い。リソースの要求が増加したとき仮想マシーンを新しい物理ハードウエアに容易に移動させることを可能とするため、、メンテナンスサイクルのために、そして物理サーバーの負荷をバランスさせるために、多数のデータセンターが仮想化を用いている。仮想化は多くの状況で有用であるが、多くの仮想マシーンが（例えば、中央処理装置（ＣＰＵ）、メモリー、及びネットワークインターフェースカード（ＮＩＣ）等の）同一のリソースを取り合うために制限もある。
【０００２】
アプリケーションの仮想化は、仮想マシーンが下層に有るハードウエアからＯＳを隔離するのと似た方法でアプリケーションを下層にあるＯＳから隔離する単一アプリケーションレベルでの仮想環境を提供する。例えば、オペレーティングシステムは幾つかのアプリケーションをネーティブで（本来のものとして）動作させる一方、他のアプリケーションを動作させる仮想環境を提供することができる。このことは、例えばオペレーティングシステムが異なるオペレーティングシステムのために設計されたアプリケーションを動作させることを可能にし得る。アプリケーションの仮想化はユーザーにとってホストオペレーティングシステム内でネーティブで動作しているアプリケーションと仮想環境内で動作しているアプリケーションとの区別を曖昧にする。例えば、両方の種類のアプリケーションがタスクバー又はオペレーティングシステムシェルによって提供されたメニュー内に並ぶことも可能である。例えば、マイクロソフト（登録商標）のアプリケーション仮想化（ＡＰＰ−Ｖ）は、アプリケーションを中央管理された仮想サービスに変換する。仮想サービスは、インストールされず、アプリケーションと競合しない。物理環境において、全てのアプリケーションはメモリーの割り当て、デバイスドライバー、及びもっと多くのものを含む種々のサービスをそのオペレーティングシステム（ＯＳ）に依存している。アプリケーションとそのＯＳとの間の非互換性はサーバーの仮想化又はプレゼンテーションの仮想化のどちらかによって扱うことができるが、１つのＯＳの同一の実体にインストールされた２つのアプリケーションの間の非互換性はアプリケーションの仮想化によって解決される。
【０００３】
通常、サーバーアプリケーションを仮想化することは他のアプリケーションより難しい。専用の実行ファイルを動作させることによってオペレーティングシステムシェルからユーザーによって開始することが多いクライアントアプリケーションとは異なり、サーバーアプリケーションは要求に応じて、或いはスケジュールにしたがって動作するオペレーティングシステムサービス、ワーカープロセス、およびデーモンを含むことができる。管理者たちはサーバーアプリケーションを仮想化し、パッケージ又はファイルのグループをコンピューターシステムにコピーすることと同じ位容易に配置（ｄｅｐｌｏｙ）できるようにする（例えば、ｘｃｏｐｙで配置可能にする）ことを望んでいる。マイクロソフトインターネット情報サーバー（ＩＩＳ）等のサーバーコンポーネントはそのコンポーネントを使用して動作するアプリケーションのためのアプリケーション仮想化をネーティブではサポートしていない。企業はＩＩＳアプリケーション等のサーバーアプリケーションを仮想化してよりダイナミックにし、アプリケーションをその都度再インストールすること無しにアプリケーションをマシーンからマシーンに持って行きたいと望んでいる。この方法は負荷をバランスさせることができるか又はより低いオーバーヘッドで彼等のサーバーをメンテナンスできるため企業にとって生産性を守ることになる。ＩＩＳはｗｅｂアプリケーションの概念（例えば、ｗｅｂサイト）を有しており、これらのｗｅｂアプリケーションはアプリケーションプールの内部で動作する。ＩＩＳはｗｅｂサイトのために要求に応答するワーカープロセスを作成するときにこのアプリケーションプール名を指定する。１つの問題点はアプリケーションの名称が競合する可能性が有るということである。例えば、管理者は幾つかのＩＩＳアプリケーションを、各アプリケーション（又はアプリケーションプール）が標準名「デフォルト（Ｄｅｆａｕｌｔ）」を有する単一のサーバー上で仮想化したいと考える可能性が有る。現在これを実行すると競合が生じ、第１のそのようなｗｅｂアプリケーションのみが正しく動作することになる。
【発明の概要】
【０００４】
ｗｅｂアプリケーション等のサーバーアプリケーションを容易に配置することができ、アプリケーション及びその状態をシステムから分離し、アプリケーションを容易に他のサーバーに移動させることが可能になるアプリケーション仮想化システムが本明細書に記述されている。アプリケーション仮想化システムはｗｅｂサーバーアプリケーションプール名等の競合を隔離する方法を提供し、競合情報を提供する複数のアプリケーションが独立して動作し、競合を避けること可能にする。アプリケーション仮想化システムはアプリケーション準備セッションの報知を受け取り、セッションを監視してアプリケーションがクライアント上で動作するために使用する環境設定情報を収集する。アプリケーション仮想化システムは収集された情報を仮想化されるべきアプリケーションが配置されるまで格納する。後に管理者がアプリケーションを配置するとき、システムは格納された情報を取り出し、この情報及びクライアントからの情報を使用してメタデータを再構成し、アプリケーションを仮想化する。アプリケーション仮想化システムはパッケージ化の時に要求を抽出し、アプリケーションのアプリケーションプールの名称などのｗｅｂアプリケーションについてのメタデータを格納する。後にｗｅｂアプリケーションを配置する際にシステムは格納されたメタデータを参照し、ｗｅｂアプリケーションを仮想環境に関連した正しいアプリケーションプールに収める。
【０００５】
この概要は以下に詳細な説明の欄で更に説明された選択された概念を簡略化した形で導入するために設けられたものある。この概要は請求項に記載された主題の主要な特徴又は必須な特徴を特定することを意図したものでもなく、請求項に記載された主題の範囲を限定するために用いられることを意図したものでもない。
【図面の簡単な説明】
【０００６】
【図１】図１は一実施形態におけるアプリケーション仮想化システムのコンポーネントを示すブロック図である。
【図２】図２は一実施形態における仮想化のためのサーバーアプリケーションを準備するためのアプリケーション仮想化システムの処理を示すフロー図である。
【図３】図３は一実施形態におけるサーバーアプリケーションを配置し、仮想化するアプリケーション仮想化システムの処理を示すフロー図である。
【図４】図４は一実施形態におけるアプリケーション仮想化システムの動作環境及び実装コンポーネントを示すブロック図である。
【発明を実施するための形態】
【０００７】
ｗｅｂアプリケーション等のサーバーアプリケーションを容易に配置できるようにし、アプリケーション及びその状態をシステムから分離できるようにし、アプリケーションが容易に他のサーバーに移動できるようにするアプリケーション仮想化システムが本明細書に記述されている。アプリケーション仮想化システムはｗｅｂサーバーアプリケーションプール名等の競合を隔離し、競合した情報を提供する複数のアプリケーションが独立に動作し、衝突を回避する方法を提供している。通常アプリケーションを仮想化することは、通常、メタデータ抽出、メタデータの格納及び再構成、及び実行時の要求の管理の３つのステップが関係している。メタデータ抽出はアプリケーションが何時仮想化の準備ができたかを知り、コンフィグレーション情報を抽出するためにアプリケーションを監視するプロセスである。環境設定情報はアプリケーションがそれ自身をオペレーティングシステム又は他のアプリケーションに結びつけるどの様な方法を含むことも可能である。
【０００８】
アプリケーション仮想化システムは、アプリケーション準備セッションの報知を受けとり、アプリケーションがクライアント上で動作するために使用する環境設定情報を収集するためにセッションを監視する。例えば、システムはアプリケーションのインストール前後の環境設定情報のスナップショットを取得し、それらの差をアプリケーションメタデータとして格納するようにしても良い。アプリケーション仮想化システムは収集された情報を仮想化されるべきアプリケーションが配置されるまで格納する。管理者が後でアプリケーションを配置するとき、システムは格納された情報を取りだし、その情報とクライアントからの情報を使用してメタデータを再構成してアプリケーションを仮想化する。例えば、マイクロソフト  ＩＩＳ（商標）に対して、システムはＩＩＳがアプリケーションを割り当てるアプリケーションプール名を獲得し、アプリケーションプール名をアプリケーションについてのメタデータとして格納し、配置のときに使用し、場合によって変更するようにしても良い。後にｗｅｂアプリケーションを配置するときに、システムは格納されたメタデータを参照してｗｅｂアプリケーションを仮想環境に関係した正しいアプリケーションプール内に収める。このようにしてアプリケーション仮想化システムは同一の物理コンピューターハードウエア及びオペレーティングシステム上で複数のサーバーアプリケーションが仮想化されて並行して動作することを可能にしている。
【０００９】
ＮＴサービス（ＮＴ  ｓｅｒｖｉｃｅｓ）、ＣＯＭ＋アプリケーション、ＷＭＩプロバイダ、シェアポイント（ＳｈａｒｅＰｏｉｎｔ）アプリケーション、及びｗｅｂ（例えば、ＩＩＳ）アプリケーション等のように多くの異なるタイプのサーバーアプリケーションが存在している。そのそれぞれが仮想化のために独自の取り組みを行っている。特にＷｅｂアプリケーションは明細書で述べたような幾つかの具体的な取り組みを行っている。
【００１０】
第１の取り組みはｗｅｂサーバーが、ｗｅｂアプリケーションがいつ開始するかを制御し、ｗｅｂアプリケーションを動作させるために作成されたプロセスがネーティブ（本来の）環境で実行可能にインストールされることである。ＮＴサービスに対しては、そのファイルパスに基いてサービスが仮想化されるべきか否かを容易に判断することができる。もしファイルパスが仮想パッケージＡ内に有れば、仮想化レイヤーはそのパッケージのための仮想環境内でＮＴサービスを開始することができる。もしパスが仮想パッケージＢ内に有れば、仮想化レイヤーはその仮想環境内にでＮＴサービスを開始することができる、等である。もしパスがどの仮想パッケージにも当て嵌まらない場合には、サービスは仮想化されない。マイクロソフト（ＴＭ）ＩＩＳなどの典型的なｗｅｂサーバーについては、実行可能なパスは全てのｗｅｂサイト又はサーバーによってホストされるｗｅｂアプリケーションに対して同一であり、具体的にはＩＩＳのための w3wp.exe 等のワーカープロセスへのパスである。しかしながらワーカープロセスへのパラメーターはアプリケーションプール名を含んでいる、等のように異なっていても良い。アプリケーション仮想化システムは仮想化すべきｗｅｂアプリケーションを検出し、どのようにかかるアプリケーションが仮想化されるかを変更するためにこの情報を使用するように仮想化レイヤーを変更する。例えば、システムはアプリケーションプール名が重複せず、アプリケーションプール名と仮想パッケージとの間のマップが維持されることを保証する。ワーカープロセスが作成されたとき、システムはマップ内のアプリケーションプール名を参照してワーカープロセスが仮想化されるべきであるか否かを決定する。
【００１１】
他の取組みは、どの様にして（ｗｅｂアプリケーションとは異なり）それに関連したアプリケーションプールを持たないｗｅｂサーバー仮想ディレクトリを仮想化するかということに関している。システムは仮想ディレクトリをｗｅｂアプリケーションに変換し、アプリケーションプールをｗｅｂアプリケーションに関連づけることでこの取組みを解決している。
【００１２】
他の取組みはｗｅｂアプリケーションを配置するときにどのようにして環境設定の競合を防止するかということに関している。Ｗｅｂ環境設定はＩＩＳと他のｗｅｂサーバーにおいて異なるレベルで適用することができる。環境設定は、サーバー、ｗｅｂサイト、ｗｅｂアプリケーション及び階層内でｗｅｂサイトから下の仮想ディレクトリに適用することができる。Ｗｅｂアプリケーションインストーラはｗｅｂサーバーをどのレベルで構成することも自由である。もしアプリケーション仮想化システムがこの環境設定をそのままで捕捉し、同一レベルに配置すると、システムは競合を生じ、ローカルにインストールされた仮想ｗｅｂアプリケーション又は他の仮想ｗｅｂアプリケーションを壊す可能性がある。この問題に対する解決策は我々が問題にしているｗｅｂアプリケーションの上で行われた環境設定の変更を捕捉し、それらを配置中のｗｅｂアプリケーションレベルに適用してシステム上の他のｗｅｂアプリケーションに影響を与えないようにすることである。
これらの詳細及び他の詳細は本明細書で更に記述する。
【００１３】
アプリケーション仮想化サブシステムの主な役割は監視、視覚化、登録、及び実行時仮想化である。これらの各々は明細書において別々に記述されている。
【００１４】
監視は、コンピューターシステムに加えられた変更を検出するためにインストールプロセスをワッチすることに関している。幾つかの実施形態において、シーケンサー（Ｓｅｑｕｅｎｃｅｒ）と呼ばれるアプリケーションがアプリケーション仮想化の監視段階を担当する。幾つかのサブシステムがインストールを監視するためにアプリケーションプログラミングインターフェース（ＡＰＩｓ）をフックし、他のサブシステムがインストール前後のコンピューターシステムの状態のスナップショットを比較して変化を検出するようにしても良い。前者の例は仮想サービスサブシステムがクリエートサービス（）ＡＰＩ（ＣｒｅａｔｅＳｅｒｖｉｃｅ（）ＡＰＩ）をフックして、いつインストーラによって新しいオペレーティングシステムサービスが追加されたかを検出することである。一方、前の例において記述されたＩＩＳサブシステムがインストール前後のＩＩＳ環境設定を比較することによって、それが使用する情報を収集することが可能である。例えば、マイクロソフトツールのＭＳＤｅｐｌｏｙ（ＭＳＤｅｐｌｏｙ）はユーザーが特定のｗｅｂサーバーに結合したＷｈａｔ−ｉｆデプロイメント（ｗｈａｔ−ｉｆ  ｄｅｐｌｏｙｍｅｎｔｓ）を動作させることを可能にしている。スナップショットを比較し、拡張可能なマークアップ言語ファイル（例えば、ｓａｖ＿ｐｒｏｖｉｄｅｒｓ．ｘｍｌ）等のマシーンから独立したメタデータ片を生成するために同一のツールをアプリケーション仮想化システムと共に使用することができる。監視の終了時にシステムはグローバルレベルで設定された全てのｗｅｂサーバー環境設定を削除し、環境設定を個々のｗｅｂアプリケーションに適用してデプロイメント（配置）中の競合の防止に寄与する。加えて、もし監視の間に最上レベルｗｅｂ仮想ディレクトリが生成されていたならば、システムはそれらをアプリケーションプールに関連したｗｅｂアプリケーションに変換し、配置時にその仮想ディレクトリが仮想化されることを可能にしている。
【００１５】
視覚化は、管理者にアプリケーションによって行われた変更の視覚的表示を仮想化するためのアプリケーションを準備することを示すことに関している。シーケンサーが監視中に検出した変化を一連のタブで表示する。アプリケーション仮想化システムは特定のアプリケーションタイプを仮想化するためのサブシステムを呼び出しても良く、各サブシステムが視覚化のためのそのサブシステムにとって適当なユーザーインターフェースを提供しても良い。これによってシーケンサーが視覚化段階の間に各サブシステムの明確な知識を有している必要が無くなる。サブシステムの視覚化インターフェースはアプリケーション仮想化システムの視覚化アプリケーションによってそれらのために作成されたウインドウ内にそれらの結果を表示することを担当する。
【００１６】
登録は、仮想アプリケーションを動作させるターゲットコンピューターシステムを準備することに関している。仮想アプリケーションはクライアント上にはインストールされないけれども、幾つかの情報がシームレスなユーザーエクスペリエンスを提供（例えば、アプリケーションがスタートメニュー内に現れるように、又はｗｅｂアプリケーションがｗｅｂサーバーメタベース内で利用できるように）するためにクライアントに公開される。アプリケーション仮想化システムは、監視の間にサブシステムによって収集された情報をクライアント上の適当な設定位置に公開する。例えば、仮想ｗｅｂアプリケーションはそれらのアプリケーション環境設定及びアプリケーションプール情報をｗｅｂサーバーに登録させる。加えて、登録プロセスの一部はアプリケーションプール名を特定の仮想アプリケーションに関係付けることに関している。ｗｅｂアプリケーションがクライアント上にインストールされたとき、クライアントは新しいｗｅｂサーバーワーカープロセスを生成する要求を傍受し、もしワーカープロセスのアプリケーションプール名が仮想アプリケーションのためのものと一致していれば、ワーカープロセスが適当な仮想環境内に作成される。
【００１７】
登録に密接に関係したサブシステムの他の責任は環境設定である。登録は一度実行される。しかしながら、環境設定はシステムがそのコンポーネントを登録した後に何回も行われる可能性がある。登録の一例は、本明細書に記述されたｗｅｂサイト、アプリケーション、及びアプリケーションプールを生成することである。環境設定項目の一例はデータベース接続ストリングである。この値は、アプリケーションのためのバックエンドデータベースが移動したときにはアプリケーションが登録された後に変更することが必要となる可能性がある。適用可能なサブシステムは、例えばサブシステムの特定の知識の適用を必要とする（例えば、特定のＡＰＩを呼び出すことによって設定される必要が有る）環境設定等のサブシステム特有の環境設定値を適用することを担当する。
【００１８】
実行時仮想化は、仮想化されたアプリケーションの実行時に機能をフックし、アプリケーションがクライアント上にローカルにインストールされたかのようにそのリソースにアクセスすることが可能になるように機能の動作を変更することを指している。実行時仮想化はまた、或るシステムプロセス（即ち、仮想アプリケーションのパッケージの一部ではないプロセス）が仮想化されるべきであるか否かの判断を行うことを指している。例えば、ＩＩＳサブシステムはコマンドライン上に渡されたアプリケーションプール名に基づいてＩＩＳワーカープロセス（例えば、w3wp.exe）が仮想化されるべきであるか否かを決定する。
【００１９】
図１は一実施形態におけるアプリケーション仮想化システムのコンポーネントを示すブロック図である。システム１００は監視コンポーネント１１０、パッケージ作成コンポーネント１２０、アプリケーションパッケージストア１３０、アプリケーション配置コンポーネント１４０、コンフリクト管理コンポーネント１５０、及びアプリケーション実行環境１６０を含んでいる。これらのコンポーネントの各々については本明細書に更に詳細に説明されている。
【００２０】
監視コンポーネント１１０は、仮想化のために準備されつつあるアプリケーションを監視してアプリケーションに関係した環境設定データを検出する。監視コンポーネント１１０は、サブシステムが現在のアプリケーションを操作することに興味があるか否かについて登録されたサブシステム全体を通して各サブシステムに質問することを繰り返すようにしても良い。コンポーネント１１０はアプリケーションプロセスに興味を示した１つ以上のサブシステムを呼び出し、サブシステムがアプリケーションによって行われたサブシステム特有の環境設定変化を監視することを可能にする。監視コンポーネント１１０はまたアプリケーションによって行われた環境設定の変更を検出するために監視の前後のアプリケーションのスナップショットを取得するスナップショットサービスを提供するようにしても良い。
【００２１】
パッケージ作成コンポーネント１２０は、仮想化のために準備されつつあるアプリケーションに関係した環境設定データを格納するためのパッケージを作成する。パッケージは、圧縮、認証、暗号化、又はパッケージを小さくするか又はパッケージの作者のセキュリティ又は確実性を提供するなどの他の処理が含まれる種々のコンテナファイルフォーマットを含んでも良い。例えば、パッケージはＺＩＰ、ＣＡＢ、又は多くのファイルと設定を単一のファイルに格納するのに適したアーカイブファイルフォーマットとすることができる。パッケージ作成コンポーネント１２０は新しいアプリケーションが仮想化のために準備されているときにパッケージを作成し、一般的な環境設定情報とカスタム仮想化サブシステムによって検出されるもの等のアプリケーション特有の環境設定情報を格納しても良い。
【００２２】
アプリケーションパッケージストア１３０は、仮想化のために準備されつつあるアプリケーションの監視と仮想化されたアプリケーションの１つ以上の目標コンピューターシステムへの配置との間にアプリケーションパッケージを格納する。アプリケーションパッケージストア１３０はファイルシステム、ネットワークベースストレージ、クラウドベースストレージサービス、データベース等の種々の記憶媒体を含むことができる。
【００２３】
アプリケーション配置コンポーネント１４０は、目標とするコンピューターシステム（ターゲットコンピューターシステム）が仮想化されたアプリケーションを呼び出すことができるように、アプリケーションパッケージを目標とするコンピューターシステムに配置する。コンポーネント１４０が目標とするシステム上で、ファイルタイプ関連付けの追加、アプリケーションパッケージへのリンクの追加、オペレーティングシステムサービス環境設定の実行、及びｗｅｂサーバー環境設定情報の追加などのアプリケーション特有の環境設定を実行するようにしても良い。アプリケーション配置コンポーネント１４０がアプリケーションパッケージに関連したサブシステムを呼び出してサブシステム特有の登録タスクを実行し、仮想化されたアプリケーションが目標とするコンピューターシステム上で動作するための準備をするようにしても良い。
【００２４】
コンフリクト管理コンポーネント１５０は、仮想化されたアプリケーションに関連した環境設定データを検出し、目標とするコンピューターシステム上で動作するように構成された他の仮想アプリケーションまたは非仮想アプリケーションとの競合を避けるように環境設定データを変更する。例えばコンポーネント１５０が、その中で実行する名前付きアプリケーションプールを指定しているｗｅｂサーバーアプリケーションについて、名前の競合を検出する。コンポーネント１５０はまた、競合に対処する動作を決定する管理者からの情報も受け取るようにしても良い。例えば、管理者は、ｗｅｂアプリケーションの名前に競合が生じた際に標準の動作を無効にしてｗｅｂアプリケーションに対して特定の名前を指定するようにしても良い。
【００２５】
アプリケーション実行環境１６０は、仮想化されたアプリケーションと目標とするコンピューターシステムのホストオペレーティングシステムの間に１段の間接参照を提供する。ラッパー（ｗｒａｐｐｅｒ）は非常に薄く、アプリケーションがホストオペレーティングシステム上で動作するように設計されているときのようにアプリケーションが殆どネーティブ状態で動作することが可能である。その代わりに、又はそれに加えて、ラッパーはＡＰＩを提供し、他のオペレーティングシステム又はオペレーティングシステムの他のバージョンのために設計されたアプリケーションに予期されるような他の制約を満足するようにしてもよい。このようにしてアプリケーション実行環境１６０が仮想アプリケーションに、そのためにアプリケーションがホストオペレーティングシステムの利用可能なリソースを使用するように設計された環境を提供する。アプリケーション実行環境１６０はまた実行時にサブシステム特有の仮想化されたアプリケーションの操作を提供するための適当なサブシステム（又は複数のサブシステム）を呼び出す。
【００２６】
アプリケーション仮想化システムが実装されるコンピューティング装置は、中央処理装置、メモリー、入力装置（例えば、キーボード及びポインティング装置）、出力装置（例えば、表示装置）、及び記憶装置（例えばディスクドライブ又は他の不揮発性記憶媒体）を含んでも良い。メモリー及び記憶装置はシステムを実現又は可能化するコンピュータにより実行可能な命令（例えば、ソフトウエア）でエンコードされていても良いコンピュータにより読取り可能な記録媒体である。更に、データ構造及びメッセージ構造は通信リンク上の信号等のデータ伝送媒体を介して格納又は伝送することができる。インターネット、ローカルエリアネットワーク、広域ネットワーク、ポイント間ダイヤルアップ接続、携帯電話ネットワーク等の種々の通信リンクが使用可能である。
【００２７】
システムの実施形態はパーソナルコンピューター、サーバーコンピューター、ハンドヘルド又はラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースシステム、プログラム可能な個人用電化製品、デジタルカメラ、ネットワークＰＣ，ミニコンピューター、メインフレームコンピューター、上記のシステム又は装置の何れかを含む分散コンピューティング環境、等を含む種々の動作環境で実現することが可能である。コンピューターシステムは携帯電話、パーソナルデジタルアシスタント、スマートフォン、パーソナルコンピューター、プログラム可能な個人用電化製品、デジタルカメラ、等であっても良い。
【００２８】
システムはプログラムモジュール等の、一以上のコンピューター又は他の装置によって実行されるコンピューターにより実行可能な命令の一般的な文脈で記述することができる。通常プログラムモジュールは特定のタスクを実行するか特定の抽象的なデータタイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造、等を含む。通常、プログラムモジュールの機能は種々の実施形態において必要に応じて組み合わされるか又は分散されていても良い。
【００２９】
図２は一実施形態におけるアプリケーション仮想化システムの仮想化のためのサーバーアプリケーションを準備する処理を示すフロー図である。処理はブロック２１０において開始し、システムは仮想化されるべきサーバーアプリケーションの監視を開始する指示を受け取る。例えば、管理者はｗｅｂアプリケーションをテストサーバーにインストールする前に本明細書に記述されたシーケンサーを開始するようにしても良い。システムはインストール中にサーバーアプリケーションによって行われた環境設定の変化を検出するためにインストール後に取られた終了スナップショットと比較するためのサーバーアプリケーションのインストールの前のテストサーバーの状態を格納するための開始スナップショットを取るようにしても良い。
【００３０】
続くブロック２２０において、システムがサーバーアプリケーションのインストールを開始する。管理者がセットアッププログラムを動作させ、システムが新しいプロセスの作成を検出し、コア仮想化システムをプロセスに注入するようにしても良い。例えば、もし管理者が監視を作動させ、サーバーアプリケーションを開始すると、次にシステムがサーバーアプリケーションに関連したワーカープロセスの開始を検出し、コア仮想化エンジンをスタートさせ、コア仮想化システムをワークプロセスに注入し、それによって例えばシステムがプロセスのＡＰＩコール及び他の動作を監視できるようにしても良い。続くブロック２３０において、システムがサーバーアプリケーションのインストールの間の環境設定データを捕捉する。例えば、サーバーアプリケーションはｗｅｂ又は他のアプリケーションに関連したアプリケーション名を提供し、その名称及び他の情報でｗｅｂサーバーメタベースを構成する、等を行っても良い。サブシステムがプロセスによって変更されたファイル及びレジストリーキー、及びマイクロソフトアクティブディレクトリー（ＡＣＴＩＶＥ  ＤＩＲＥＣＴＯＲＹ）又はＩＩＳメタベースの変更、等の他の環境設定の変更を検出するようにしても良い。
【００３１】
続くブロック２４０において、システムはサーバーアプリケーションのインストールの監視を終了する。例えば、管理者が本明細書に記述されたシーケンサーにインストールが終了したことを報知するか、又はシステムが自動的にインストールが終了したことを検出するようにしても良い。システムはサーバーアプリケーション及び関連したデータの終了スナップショットを取って、前に取った開始スナップショットと比較するようにしても良い。続くブロック２５０において、システムは続いて行われるサーバーアプリケーションの配置の間に使用するために捕捉した環境設定データを格納する。例えば、システムがＸＭＬファイル又は他のデータストアを作成し、後で取り出すために環境設定データをデータストアで維持するようにしても良い。
【００３２】
続くブロック２６０において、システムはサーバーアプリケーションを配置するために、格納された環境設定データを含めてパッケージにする。例えば、システムはアプリケーションのアーカイブファイル又は管理者がＸＣＯＰＹ又は他のファイル複写ツール等のツールを用いて容易に他のサーバーに配置できる他のコンパクトな表現を作成しても良い。ブロック２６０の後にこれらのステップは終了する。
【００３３】
図３は一実施形態におけるアプリケーション仮想化システムのサーバーアプリケーションを配置し仮想化する処理を示すフロー図である。処理はブロック３１０において開始し、システムはサーバーアプリケーションを目標とするコンピューターに配置するための環境設定データを含むアプリケーションパッケージを受け取る。例えば、アプリケーションパッケージは本明細書に記述されたようなアプリケーションの監視の間に検出された環境設定データのＸＭＬ又は他のデータストアを含むファイルのディレクトリ又はアーカイブファイルを含んでいても良い。続くブロック３２０において、システムは受け取ったアプリケーションパッケージ内の、目標とするコンピューター上で動作する他のアプリケーションと競合する可能性のある環境設定データを検出する。例えば、もしサーバーアプリケーションがｗｅｂアプリケーションであれば、システムが環境設定データによって指定されたアプリケーションプール名が目標とするコンピューター上の他のｗｅｂアプリケーションと競合するか又は競合する可能性があるか否かを検出するようにしても良い。
【００３４】
続くブロック３３０において、システムはサーバーアプリケーションが目標とするコンピューター上で目標とするコンピューター上の他のアプリケーションとの競合せずに動作することを可能にするアプリケーションインストールパラメーターを設定する。例えば、システムが前のステップにおいて競合する名称を検出した場合、システムは競合を避けるために修正した名称を有するインストールパラメーターを設定しても良い。幾つかの実施形態において、システムは同一の名称を有する他のアプリケーションプールとの競合を避けためにアプリケーションプール名にグローバル一意識別子（ＧＵＩＤ）を付加する。システムはまた、管理者又は他のソースからアプリケーションの環境設定のために使用する代替インストールパラメーターを指定する指定変更情報を受け取るようにしても良い。
【００３５】
続くブロック３４０において、システムは設定されたアプリケーションインストールパラメーターでサーバーアプリケーションを動作させるために目標とするコンピューターシステムを環境設定する。例えば、システムはアプリケーションを環境設定するために環境設定データを環境設定データベース、１つ以上のファイル、ｗｅｂサーバーメタベース等に書き込んでも良い。アプリケーションを環境設定することはアプリケーションが目標とするコンピューター上で動作するように準備することである。例えば、ｗｅｂアプリケーションについては、環境設定はｗｅｂアプリケーションのための仮想ディレクトリ、ポート、及びファイル位置をｗｅｂサーバーアプリケーションマネージャー（例えば、ＩＩＳマネージャー）に提供することを含んでも良い。
【００３６】
続くブロック３５０において、システムは環境設定されたサーバーアプリケーションを開始するための要求を指示するアプリケーション実行指示を受け取る。例えば、その指示はネットワーク（例えば、サーバーによってホストされるｗｅｂページへのアクセスによる）又は他のソースを介して受け取った要求から到来するものであっても良い。幾つかの実施形態において、システムはサーバーアプリケーションを開始するコールを傍受するためにサーバーアプリケーション管理コンポーネントにコンポーネントを注入する。例えば、ｗｅｂサーバーはサーバー上でホストされる各ｗｅｂサイトを操作するためのワーカープロセスを開始する管理アプリケーションを含んでいることが多い。システムはシステムによって管理された仮想環境が管理アプリケーションの本来の動作の代わりになるようにワーカープロセスを呼び出すコールを傍受するようにしても良い。
【００３７】
続くブロック３６０において、システムは受け取ったアプリケーション実行指示に関連したアプリケーションパッケージをロードし、仮想環境中でアプリケーションを実行する。システムがアプリケーション仮想化システムに関連したモジュール又は他の実行可能なコードをロードして、そのためにアプリケーションが設計された環境を模した仮想環境をアプリケーションに提供するためにコールのリダイレクト、ＡＰＩフック、及び他の仮想化の動作を可能にするようにしても良い。システムはまたファイルアクセス要求、レジストリアクセス要求、ｗｅｂサーバー特有の要求、等のアプリケーションが作成する可能性のある種々のタイプの要求を処理する１つ以上の仮想化サブシステムを呼び出すようにしても良い。アプリケーションが実行されるにつれて、仮想化サブシステムによって配置されたフックや他の間接指定処理によって、仮想化によって提供された独立性を容認するリダイレクト又は他の処理を必要とするアプリケーションの要求をシステムが処理することが可能になる。ブロック３６０の後に、これらのステップは終了する。
【００３８】
図４は一実施形態におけるアプリケーション仮想化システムの動作環境及び実装コンポーネントを示すブロック図である。幾つかの実施形態において、アプリケーション仮想化システムはアプリケーションを仮想するためにオペレーティングシステムドライバー４３０及び幾つかのユーザーモードコンポーネントを使用する。仮想化ドライバー４３０（例えば、ｓｆｔｐｌａｙ．ｓｙｓ）がａｔオペレーティングシステムのカーネルレベルで仮想環境を管理する。ドライバーのプロセスマネージャーコンポーネントが仮想環境マッピングへのプロセスＩＤを維持している。プロセスが作成されるにつれて、プロセスマネージャーコンポーネントが親プロセスの仮想環境に自動的に子プロセスを追加する。プロセスマネージャーコンポーネントはまた、仮想プロセスの作成と終了及び仮想環境内で動作するプロセスが無くなった時点についてユーザーモード仮想化ライブラリー４２０に報知する。
【００３９】
ドライバー４３０の役割の１つはレジストリとファイルシステムの仮想化を実行することである。レジストリ及びファイルマッピング情報は仮想環境が仮想化ライブラリー４２０を使用して最初に作成されたときにドライバー４３０にアップロードされる。ドライバー４３０はこの情報をレジストリ及びファイルシステムＡＰＩの動作を仮想アプリケーション４４０にとってはアプリケーションが目標とするコンピューターシステムにローカルにインストールされたかのように見えるように変更するのに使用する。
【００４０】
ユーザーモード仮想化ライブラリー４２０（例えば、ｏｓｇｕａｒｄ．ｌｉｂ）は仮想環境及びプロセスを管理するＡＰＩを含み、ユーザーモードと仮想化ドライバー４３０の間のインターフェースである。仮想化ライブラリー４２０はまた、種々のアプリケーションサブシステムにわたって使用される仮想ファイルシステム及び仮想レジストリを含む仮想サブシステムを有しており、内蔵している。仮想化ライブラリー４２０は実行時と同様に仮想アプリケーションをパッケージにするときに使用される。シーケンサー４１０はインストールプロセスを監視することによって仮想アプリケーションをパッケージ化するために管理者によって使用されるアプリケーションであり、リスナー（図示せず）は実行時に仮想アプリケーションを管理するオペレーティングシステムサービスである。
【００４１】
仮想化実行時モジュール（例えば、ｓｆｔｌｄｒ．ｄｌｌ）は子プロセスを作成するときに仮想化ライブラリー４２０又はそれ自身によって各仮想プロセスに注入されたライブラリーである。迂回ライブラリーが仮想アプリケーション４４０プロセス内のファンクションをフックするために用いられる。レジストリ及びファイルシステムの仮想化のために幾つかのコールは仮想化ドライバー４３０にリダイレクトされ、その他のものはそれぞれのサブシステムの仮想化を実行するために仮想化ライブラリー４２０内にＲＰＣコールを行う。
【００４２】
その初期化の間、仮想化ライブラリー４２０はレジストリ内にリストされたサブシステムモジュールの各々を動的にロードし、それらのファクトリーインターフェースにポインタを格納する。シーケンサー４１０またはリスナーが仮想環境を作成するために仮想環境マネージャーを使用している場合ば、ファクトリーが各サブシステムの実体を作成するために使用される。サブシステムの実体は仮想環境オブジェクト内に格納されており、シーケンサー又はリスナーによって取り込むことが可能である。
【００４３】
多くのサブシステムが仮想ファイルシステムへのアクセス及びそれらの仮想化を実行するレジストリを必要とする。例えば、仮想ＣＯＭ及び仮想サービスサブシステムの両方がそれぞれ仮想ＣＯＭオブジェクトを作成し、仮想サービスを開始するために仮想レジストリーキーへのアクセスを必要とする。従って、幾つかの実施形態においては、仮想レジストリ及びファイルシステムサブシステムは汎用化されず、寧ろ主要なコンポーネントである。サブシステムはそれらの監視及び実行時インターフェースを介してそれらに渡された仮想環境オブジェクトを通してこれらのコアサブシステムにアクセスすることが可能である。
【００４４】
監視インターフェースが、検出したサブシステムの変更をマニフェスト４５０ファイル内に格納する。このマニフェスト４５０はこの情報を表示し編集することを可能にする視覚化インターフェース、コンポーネントを登録するのにこの情報を使用する登録インターフェースを含む他のインターフェースに渡される。
【００４５】
幾つかの実施形態において、アプリケーション仮想化システムが管理者が仮想化されたｗｅｂアプリケーションのためにアプリケーションプール名を指定変更することを可能にする。例えば、管理者が同一プール内で二つのｗｅｂアプリケーションが動作するように環境設定することを欲するかも知れない。この場合には、ｗｅｂアプリケーションが或る名称を使用するように設計されている場合があり、管理者はそのアプリケーションプール名を使用するために  ｓａｖ＿ｐｒｏｖｉｄｅｒ．ｘｍｌ  又は他のロケーションをアプリケーションメタデータを格納する為に変更し、それによってｗｅｂアプリケーションが正しく機能し続けるようにすることができる。
【００４６】
幾つかの実施形態において、アプリケーション仮想化システムは単一の仮想環境内で複数のサーバーアプリケーションを動作させる。
【００４７】
多くの場合、本明細書に記述されたアプリケーション毎に別々の仮想環境が望ましいけれども、システムは単一の環境内でアプリケーションを仮想化することもできる。例えば、管理者が目標とするコンピューターシステムのリソースを維持することを望むかもしれず、関連したアプリケーションが、複数の仮想環境の分離によっては許されない方法で互いに通信することを望むかも知れない。
【００４８】
以上の内容から、アプリケーション仮想化システムの特定の実施形態が説明のために本明細書に記述されてきたけれども、本発明の趣旨及び範囲から逸脱することなく種々の変更が可能であることが理解される筈である。従って、発明は添付された請求項による以外には限定されない。
【図１】
2013521578.tif 000003
【図２】
2013521578.tif 000004
【図３】
2013521578.tif 000005
【図４】
2013521578.tif 000006
【国際調査報告】
2013521578.tif 000007
2013521578.tif 000008