(57)【要約】仮想ソフトウェア・アプリケーションの動的な配信、およびローカル・データ・ストアとネットワーク・データ・ストアとの間でのアプリケーション・データの割り当てに関する実施形態を説明する。１つのシナリオでは、コンピューター・システムは、データ入力／出力（Ｉ／Ｏ）フィルターを確立し、このフィルターは、仮想ソフトウェア・アプリケーションからオペレーティング・システムのファイル・システムへ送られているデータ・ファイル・リクエストをインターセプトするように、構成される。データＩ／Ｏフィルターは、データ・ファイル・リード・リクエストをインターセプトするが、このリクエストは、指定されたデータ・ファイルをファイル・システムから取得するように構成されている。データＩ／Ｏフィルターは、インターセプトしたリード・リクエストを、ネットワーク・アクセス可能データ・ストアへ送り、このデータ・ストアは、特定のデータ・ファイルを返すように構成されている。次に、Ｉ／Ｏフィルターは、指定されたデータ・ファイルをネットワーク・データ・ストアから受け取ると、その指定されたデータ・ファイルを仮想ソフトウェア・アプリケーションへ送る。このようにして、指定されたデータ・ファイルは、仮想アプリケーションにより使用できるようにされる。
2015507787.tif 000002
【特許請求の範囲】
【請求項１】
複数の計算システムを含むコンピューター・ネットワーク環境における、少なくとも１つのプロセッサーおよびメモリーを含むコンピューター・システムにおいての、仮想ソフトウェア・アプリケーションを動的に配信するための、コンピューターにより実施される方法であって、
仮想ソフトウェア・アプリケーションからオペレーティング・システムのファイル・システムへ送られているデータ・ファイル・リクエストをインターセプトするように構成されるデータ入力／出力（Ｉ／Ｏ）フィルターを確立する行動と、
前記データＩ／Ｏフィルターが、指定されたデータ・ファイルを前記ファイル・システムから取得するように構成されるデータ・ファイル・リード・リクエストを、インターセプトする行動と、
前記データＩ／Ｏフィルターが、インターセプトした前記リード・リクエストを、前記特定のデータ・ファイルを返すように構成されたネットワーク・アクセス可能データ・ストアへ、送る行動と、
前記Ｉ／Ｏフィルターが、前記ネットワーク・データ・ストアから前記指定されたデータ・ファイルを受け取った後、前記指定されたデータ・ファイルを前記仮想ソフトウェア・アプリケーションへ送り、それにより、そのリード・リクエストに応じて前記指定されたデータ・ファイルを前記仮想アプリケーションが使用できるようにする行動と
を含む方法。
【請求項２】
請求項１に記載の方法であって、複数のデータ・ファイルをインターセプトおよびストリーミングして、前記仮想ソフトウェア・アプリケーションにより必要とされる各ファイルを動的に提供するようにする、方法。
【請求項３】
請求項１に記載の方法であって、前記ネットワーク・データ・ストアから受け取った前記データ・ファイルは、前記コンピューター・システムの前記ファイル・システムには格納されない、方法。
【請求項４】
請求項１に記載の方法であって、前記ネットワーク・データ・ストアから動的に取得した各データ・ファイルは、前記仮想ソフトウェア・アプリケーションからは、前記データ・ファイルが前記コンピューター・システムの前記ファイル・システムから受け取られたかのように見える、方法。
【請求項５】
請求項１に記載の方法であって、前記データＩ／Ｏフィルターは、前記ソフトウェア・アプリケーションがデータ・ファイルを要求する方法に関しての変更を行わずに、インプリメントされる、方法。
【請求項６】
請求項１に記載の方法であって、要求された前記データ・ファイルは、前記ネットワーク・データ・ストアから前記コンピューター・システムへストリーミングされる、方法。
【請求項７】
請求項１に記載の方法であって、インターセプトされた前記リクエストは、前記リクエストを前記ネットワーク・データ・ストアへ送るように構成され且つ要求した前記データを前記ネットワーク・ストアから受け取るように構成されるユーザー・モード・サービスへ、送られる、方法。
【請求項８】
請求項７に記載の方法であって、前記ユーザー・モード・サービスは、受け取った前記データを前記Ｉ／Ｏフィルターへ送り、前記Ｉ／Ｏフィルターは、前記データを前記仮想アプリケーションへ送る、方法。
【請求項９】
請求項１に記載の方法であって、前記ネットワーク・データ・ストアはクラウドを含み、前記指定されたデータ・ファイルはハイパーテキスト・トランスファー・プロトコルを用いてクラウドから取得される、方法。
【請求項１０】
複数の計算システムを含むコンピューター・ネットワーク環境における、少なくとも１つのプロセッサーおよびメモリーを含むクライアント・コンピューター・システムにおいての、ローカル・データ・ストアとネットワーク・データ・ストアとの間でのアプリケーション・データの割り当てを行うための、コンピューターにより実施される方法であって、
仮想アプリケーションの何れの指定された部分がローカル・データ・ストアに格納されるかと、何れの部分がネットワーク・データ・ストアに格納されるかとのインジケーションを、管理ユーザーから受け取る行動と、
前記仮想アプリケーションの何れの指定された部分が前記ローカル・データ・ストアに格納されるかを記述する１以上のメタデータを作成する行動と、
仮想アプリケーションから、指定されたデータ・ファイルのデータを要求するデータ・ファイル・リクエストを受け取る行動と、
前記指定されたデータ・ファイルが前記ローカル・データ・ストアに格納されているか前記リモート・データ・ストアに格納されているかの判定を、作成された前記メタデータに基づいて行う行動と、
前記判定に基づいて、前記データ・ファイル・リクエストを、前記ローカル・データ・ストアと前記リモート・データ・ストアとの少なくとも１つへ送る行動と
を含む方法。
【請求項１１】
請求項１０に記載の方法であって、前記管理ユーザーは、前記ネットワーク・データ・ストアにおけるアプリケーションを、前記アプリケーションのパッケージを置換することにより更新する、方法。
【請求項１２】
請求項１１に記載の方法であって、前記ローカルのコンピューター・システムにおけるローカル・サービスは、前記ローカルのコンピューター・システムが前記データを読めることを確なものとするために、前記データ・ファイルの暗号解読、前記データ・ファイルの再フォーマット、および前記データ・ファイルの圧縮解除のうちの少なくとも１つを行うように構成される、方法。
【請求項１３】
コンピューター・システムであって、
１以上のプロセッサーと、
システム・メモリーと、
前記１以上のプロセッサーにより実行されたときに、前記計算システムに、仮想ソフトウェア・アプリケーションを動的に配信する方法を行うようにさせるコンピューター実行可能命令を格納する１以上のコンピューター可読ストレージ媒体と
を含み、前記方法は、
仮想ソフトウェア・アプリケーション１１０からファイル・システムへ送られているデータ・ファイル・リクエスト１１１をインターセプトするように構成されるデータ入力／出力（Ｉ／Ｏ）フィルターを確立する行動と、
前記Ｉ／Ｏフィルターが、指定されたデータ・ファイルを前記ファイル・システムから取得するように構成されるデータ・ファイル・リード・リクエストを、インターセプトする行動と、
要求された前記データ・ファイルに対して、前記ファイル・システムにおいてスパース・ファイルを作成する行動であって、前記スパース・ファイルは、要求された前記データ・ファイルに対するプレースホルダー情報を含み、前記プレースホルダー情報はファイルの名前およびサイズを含む、行動と、
前記ファイルが存在することを前記仮想ソフトウェア・アプリケーションへ示す行動であって、前記示すことは、要求された前記データ・ファイルのファイルの名前およびサイズを含む、行動と、
前記仮想ソフトウェア・アプリケーションから、要求された前記データ・ファイルの実際のデータ・コンテンツを求めるリクエストを、受け取る行動と、
インターセプトされた前記リード・リクエストをユーザー・モード・サービスへ送る行動であって、前記ユーザー・モード・サービスは、前記リード・リクエストを、特定の前記データ・ファイルを返すように構成されたネットワーク・アクセス可能データ・ストアへ送る、行動と
前記ネットワーク・データ・ストアから、前記ユーザー・モード・サービスにおいて前記指定されたデータ・ファイルを受け取った後、前記ユーザー・モード・サービスが、前記データ・ファイルのコンテンツを前記Ｉ／Ｏフィルターへ送る行動であって、前記Ｉ／Ｏフィルターは、前記データ・ファイルのコンテンツを前記仮想ソフトウェア・アプリケーションへ送り、それにより、そのリード・リクエストに応じて前記指定されたデータ・ファイルを前記仮想アプリケーションが使用できるようにする、行動と
を含む、
コンピューター・システム。
【請求項１４】
請求項１３に記載のコンピューター・システムであって、要求された前記データ・ファイルは、前記仮想ソフトウェア・アプリケーションへストリーミングされ、前記データ・ファイルのコンテンツの何れのものも前記ファイル・システムにセーブされない、コンピューター・システム。
【請求項１５】
請求項１４に記載のコンピューター・システムであって、前記仮想ソフトウェア・アプリケーションが前記ユーザーにより使用されると、データ・ファイルは、前記仮想アプリケーションが必要としたときに前記ネットワーク・データ・ストアから動的および自動的にストリーミングされる、コンピューター・システム。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  コンピューターは、労働力、家庭、モバイル・デバイス、および他の多くの場所で、高度に統合されている。コンピューターは、大量の情報を迅速かつ効率的に処理することができる。コンピューターで実行されるように設計されたソフトウェア・アプリケーションは、ユーザーが、ビジネス・アプリケーション、学業、エンターテイメント、およびその他を含む広範囲の種類の機能を行うことを可能にする。多くの場合、ソフトウェア・アプリケーションは、特定のタスク、例えば、文書を作成するためのワード・プロセッサー・アプリケーションや、Ｅメールの送信、受信、および整理のためのＥメール・プログラムなどを行うように、設計される。
【０００２】
[0002]  それぞれの場合において、ソフトウェア・アプリケーションは、ホスト側コンピューター・システム（hosting computer system）の様々なハードウェア・コンポーネントとインタラクションし、また、それらを用いる。例えば、ソフトウェア・アプリケーションは、例えば、ハード・ディスクやＤＶＤやフラッシュ・ドライブなどのようなローカル・データ・ストアとインタラクションすることができる。典型的には、アプリケーションは、入力／出力（Ｉ／Ｏ）リクエストを行い、Ｉ／Ｏリクエストは、アプリケーションからオペレーティング・システムのファイル・システムへ送られる。ファイル・システムは、ディスクからの必要なデータへアクセスしてそれをアプリケーションへ返す。仮想アプリケーションが用いられる場合、データを単にローカル・ハード・ディスクから取得する代わりに、データの少なくとも一部をリモート・データ・ストア（通常はネットワーク・ファイル・サーバー）へ要求する。次に、データは、コンピューター・システムにより受け取られ、そのローカル・ハード・ディスクに格納される。次に、コンピューターのファイル・システムは、データを、ローカルに格納されたデータに関して標準的に行うように、アプリケーションへ送る。
【発明の概要】
【０００３】
[0003]  ここで説明する実施形態は、仮想ソフトウェア・アプリケーションの動的な配信、およびローカル・データ・ストアとネットワーク・データ・ストアとの間でのアプリケーション・データの割り当てに関する。１つの実施形態では、コンピューター・システムは、データ入力／出力（Ｉ／Ｏ）フィルターを確立し、このフィルターは、仮想ソフトウェア・アプリケーションからオペレーティング・システムのファイル・システムへ送られているデータ・ファイル・リクエストをインターセプトするように、構成される。データＩ／Ｏフィルターは、データ・ファイル・リード（read）・リクエストをインターセプトするが、このリクエストは、指定されたデータ・ファイルをファイル・システムから取得するように構成されている。データＩ／Ｏフィルターは、インターセプトしたリード・リクエストを、ネットワーク・アクセス可能データ・ストアへ送り、このデータ・ストアは、その特定のデータ・ファイルを返すように構成されている。次に、Ｉ／Ｏフィルターは、指定されたデータ・ファイルをネットワーク・データ・ストアから受け取ると、その指定されたデータ・ファイルを仮想ソフトウェア・アプリケーションへ送る。このようにして、指定されたデータ・ファイルは、仮想アプリケーションにより使用できるようにされる。
【０００４】
[0004]  別の実施形態では、コンピューター・システムは、ローカル・データ・ストアとネットワーク・データ・ストアとの間でアプリケーション・データを割り当てる。コンピューター・システムは、仮想アプリケーションの何れの指定された部分がローカル・データ・ストアに格納されるかと、何れの部分がネットワーク・データ・ストアに格納されるかとのインジケーションを、管理ユーザーから受け取る。コンピューター・システムは、仮想アプリケーションの何れの指定された部分がローカル・データ・ストアに格納されるかを記述する様々なメタデータを作成する。次に、コンピューター・システムは、仮想アプリケーションから、指定されたデータ・ファイルのデータを要求するデータ・ファイル・リクエストを受け取り、指定されたデータ・ファイルがローカル・データ・ストアに格納されているかリモート・データ・ストアに格納されているかを、作成したメタデータに基づいて判定する。次に、その判定に基づいて、コンピューター・システムは、データ・ファイル・リクエストを、ローカル・データ・ストアとリモート・データ・ストアとの何れかへ送る。
【０００５】
[0005]  この概要は、以下の詳細な説明で更に説明する概念のうちの選択したものを、簡素化した形で紹介するために提供されている。この概要は、特許請求の範囲に記載の主題事項の鍵となる特徴や本質的な特徴を特定することを意図しておらず、また、特許請求の範囲に記載の主題事項の範囲を決定する際の支援として用いることを意図していない。
【０００６】
[0006]  更なる特徴および利点は、後の説明で述べられており、また、一部は、当業者には説明から明らかであり、また、ここでの教示を実施することにより学ぶことができる。本発明の特徴および利点は、特許請求の範囲において示す装置や組み合わせを用いることにより実現し、得ることができる。本発明の実施形態の特徴は、以下の説明および特許請求の範囲から更に完全に明らかになるか、または後に述べる発明を実施することにより学ぶことができる。
【０００７】
[0007]  本発明の実施形態の上記および他の利点および特徴を更に明確にするために、図面を参照して、本発明の実施形態のより特定的な説明を提供する。それらの図面は、単に、本発明の典型的な実施形態を示すものであり、従って、本発明の範囲を限定するものとして考慮されないと理解される。本発明の実施形態は、図面を用いて更に特定的かつ詳細に記述され説明される。
【図面の簡単な説明】
【０００８】
【図１】図１は、仮想アプリケーションを動的に配信することを含む本発明の実施形態が動作でき得るコンピューター・アーキテクチャーを示す。
【図２】図２は、仮想ソフトウェア・アプリケーションを動的に配信するための例示の方法のフローチャートを示す。
【図３】図３は、アプリケーション・データをローカル・データ・ストアとリモート・データ・ストアとの間で割り当てるための例示の方法のフローチャートを示す。
【図４】図４は、ローカル・データ・ストアとリモート・データ・ストアとの間でデータが割り当てられる本発明の実施形態を示す。
【発明を実施するための形態】
【０００９】
[0012]  ここで説明する実施形態は、仮想ソフトウェア・アプリケーションの動的な配信、およびローカル・データ・ストアとネットワーク・データ・ストアとの間でのアプリケーション・データの割り当てに関する。１つの実施形態では、コンピューター・システムは、データ入力／出力（Ｉ／Ｏ）フィルターを確立し、このフィルターは、仮想ソフトウェア・アプリケーションからオペレーティング・システムのファイル・システムへ送られているデータ・ファイル・リクエストをインターセプトするように、構成される。データＩ／Ｏフィルターは、データ・ファイル・リード・リクエストをインターセプトするが、このリクエストは、指定されたデータ・ファイルをファイル・システムから取得するように構成されている。データＩ／Ｏフィルターは、インターセプトしたリード・リクエストを、ネットワーク・アクセス可能データ・ストアへ送り、このデータ・ストアは、特定のデータ・ファイルを返すように構成されている。次に、Ｉ／Ｏフィルターは、指定されたデータ・ファイルをネットワーク・データ・ストアから受け取ると、その指定されたデータ・ファイルを仮想ソフトウェア・アプリケーションへ送る。このようにして、指定されたデータ・ファイルは、仮想アプリケーションにより使用できるようにされる。
【００１０】
[0013]  別の実施形態では、コンピューター・システムは、ローカル・データ・ストアとネットワーク・データ・ストアとの間でアプリケーション・データを割り当てる。コンピューター・システムは、仮想アプリケーションの何れの指定された部分をローカル・データ・ストアに格納すべきかと、何れの部分をネットワーク・データ・ストアに格納すべきかとのインジケーションを、管理ユーザーから受け取る。コンピューター・システムは、仮想アプリケーションの何れの指定された部分がローカル・データ・ストアに格納されるかを記述する様々なメタデータを作成する。次に、コンピューター・システムは、仮想アプリケーションから、指定されたデータ・ファイルのデータを要求するデータ・ファイル・リクエストを受け取り、指定されたデータ・ファイルがローカル・データ・ストアに格納されているかリモート・データ・ストアに格納されているかを、作成したメタデータに基づいて判定する。次に、その判定に基づいて、コンピューター・システムは、データ・ファイル・リクエストを、ローカル・データ・ストアとリモート・データ・ストアとの何れかへ送る。
【００１１】
[0014]  以下の説明は、行うことができる幾つかの方法および方法の実行に関する。方法の実行は、特定の順に説明されるか、またはフローチャートにおいて特定の順に生じるように示されている場合があるが、特に述べていないかぎりは、必ずしも特定の順にする必要はなく、また、１つの実行が、その実行の前に別の実行が完了されることを条件とする場合には、特定の順にする必要があることに、留意されたい。
【００１２】
[0015]  後に詳細に説明するが、本発明の実施形態は、例えば、１以上のプロセッサーやシステム・メモリーなどのようなコンピューター・ハードウェアを含む特定用途向けまたは汎用のコンピューターを含むか、またはそのようなコンピューターを用いる。また、本発明の範囲内にある実施形態は、コンピューター実行可能命令および／またはデータ構造を伝送または格納する物理的媒体および他のコンピューター可読媒体を含む。そのようなコンピューター可読媒体は、汎用または特定用途向けのコンピューター・システムによりアクセスできる任意の使用可能な媒体とすることができる。データの形でコンピューター実行可能命令を格納するコンピューター可読媒体は、コンピューター・ストレージ媒体である。コンピューター実行可能命令を伝送するコンピューター可読媒体は伝送媒体である。従って、限定ではなく例として、本発明の実施形態は、少なくとも２つの異なる種類のコンピューター可読媒体、即ち、コンピューター・ストレージ媒体および伝送媒体を含むことができる。
【００１３】
[0016]  コンピューター・ストレージ媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、ＲＡＭをベースにしたソリッド・ステート・ドライブ（ＳＤＤ）、フラッシュ・メモリ、相変化メモリー（ＰＣＭ）または他のタイプのメモリー、または他の光ディスク・ストレージ、磁気ディスク・ストレージ、または他の磁気記憶装置、またはコンピューター実行可能命令またはデータまたはデータ構造の形態で望まれるプログラム・コード手段を格納するために使用でき且つ汎用または特定用途向けのコンピューターによりアクセスできる他の任意の媒体を含む。
【００１４】
[0017]  「ネットワーク」は、コンピューター・システムおよび／またはモジュールおよび／または他の電子デバイスの間での電子データのトランスポートを可能とする１以上のデータ・リンクおよび／またはデータ・スイッチとして定義される。ネットワーク（有線と、ワイヤレスと、有線とワイヤレスとの組み合わせとの何れか）を通じて情報がコンピューターへ転送または提供されるとき、コンピューターは、適切に、その接続を伝送媒体として見る。伝送媒体はネットワークを含むことができ、ネットワークは、コンピューター実行可能命令の形態やデータ構造の形態にされたデータや望まれるプログラム・コード手段を伝送するために使用でき、かつ汎用または特定用途向けのコンピューターによりアクセスできる。上記のものの組み合わせも、コンピューター可読媒体の範囲に含まれるべきである。
【００１５】
[0018]  更に、コンピューター・システムの様々なコンポーネントへ到達すると、コンピューター実行可能命令またはデータ構造の形態のプログラム・コード手段は、伝送媒体からコンピューター・ストレージ媒体へ（またはその逆に）自動的に転送され得る。例えば、ネットワークまたはデータ・リンクを介して受け取ったコンピューター実行可能命令またはデータ構造は、ネットワーク・インターフェース・モジュール（例えば、ネットワーク・インターフェース・カード、即ち、「ＮＩＣ」）内のＲＡＭへバッファ記憶することができ、次に、コンピューター・システムのＲＡＭへ、および／またはコンピューター・システムの揮発性の低いコンピューター・ストレージ媒体へ、最終的に転送される。従って、コンピューター・ストレージ媒体が、伝送媒体を用いる（主に用いることさえある）コンピューター・システム・コンポーネントに含まれ得ることを、理解すべきである。
【００１６】
[0019]  コンピューター実行可能（またはコンピューター理解可能）命令は、例えば、汎用コンピューター、特定用途向けコンピューター、または特定用途向け処理デバイスに、１つの特定の機能または１グループの機能を行わせる命令を含む。コンピューター実行可能命令は、例えば、バイナリーや、アセンブリ言語などのような中間フォーマット命令や、更にはソース・コードなどであり得る。主題事項は、構造的な特徴や方法論的な行動（act）に対して特定的な言語で記載されているが、特許請求の範囲で定義される主題事項は、上記の特徴や行動に必ずしも限定されるものではない。むしろ、説明した特徴や行動は、特許請求の範囲を実施する際の例示的形態として開示されたものである。
【００１７】
[0020]  本発明を、多くのタイプのコンピューター・システム構成を用いて、ネットワーク計算環境において実施できることが、当業者には理解できるであろう。コンピューター・システム構成は、パーソナル・コンピューター、デスクトップ・コンピューター、ラップトップ・コンピューター、メッセージ・プロセッサー、手持ち型デバイス、マルチプロセッサー・システム、マイクロプロセッサー・ベースまたはプログラマブルの消費者向け電子機器、ネットワークＰＣ、ミニコンピューター、メインフレーム・コンピューター、モバイル電話、ＰＤＡ、ページャー、ルーター、スイッチなどを含む。また、本発明は、分散型システム環境においても実施することができる。分散型システム環境では、ローカル・コンピューター・システムとリモート・コンピューター・システムとがネットワークを介してリンクされ（有線データ・リンクと、ワイヤレス・データ・リンクと、有線データ・リンクとワイヤレス・データ・リンクとの組み合わせとの何れかによる）、それぞれがタスク（例えば、クラウド・コンピューティング、クラウド・サービスなど）を行う。分散型システム環境では、プログラム・モジュールは、ローカル・メモリー・ストレージ・デバイスとリモート・メモリー・ストレージ・デバイスとの双方に配されることができる。
【００１８】
[0021]  図１は、本発明の原理を用いることができるコンピューター・アーキテクチャー１００を示す。コンピューター・アーキテクチャー１００は、ユーザー・モード１４０およびカーネル・モード１４１で動作するコンピューター・システムを含む。コンピューター・システムは、クラウド計算システムを含めての、ローカルまたは分散型の任意のタイプのものとすることができる。各動作モードは、特定のタイプのオペレーションを行うように構成された様々なモジュールを含む。これらの動作モードおよびコンピューター・システム・モジュールは、仮想ソフトウェア・アプリケーションをシームレス且つ効率的な様式で配置するために用いることができる。
【００１９】
[0022]  ここで述べられる仮想ソフトウェア・アプリケーションとは、ローカルで実行されているように見えるが、実際にはネットワーク・アプリケーション・サーバーで実行されているアプリケーションである。ネットワーク・アプリケーション・サーバーは、アプリケーションのデータを、ネットワークを介してユーザーに提供する。ここでの実施形態では、ユーザーは、ユーザーが標準的な場合と同様にアプリケーション・アイコン（または仮想アプリケーションにより開かれるデータ・ファイル）をクリックしてアプリケーションを開くことにより、プロセスを開始することができる。オペレーティング・システムは、ユーザーから開始信号を受け取ると、アプリケーションの実行可能ファイル（１以上）のためのプロセス・アドレス空間を、その実行可能ファイル（１以上）をメモリー内へ読み込むことにより、初期設定する。ここで用いる「データ・ファイル」という用語は、設定ファイル（典型的には実行可能コードの一部ではない）を含むデータ・ファイル、および／またはアプリケーションの実行可能バイナリー・ファイルを含むイメージの双方を指し得ることに留意されたい。ここでは、設定ファイルと実行可能ファイルとの双方が予期されサポートされるので、ここでは、データ・ファイルという用語はそれらを記述するために用いられる。
【００２０】
[0023]  次に、オペレーティング・システムは、アプリケーションに対するエントリー・ポイントへの命令ポインターを設定し、プロセスを実行する。オペレーティング・システム内の仮想化レイヤーは、この起動フェーズの間にそれ自体を検出して初期設定する。その後、仮想アプリケーションは、ユーザーのコンピューター・システムで実行される。
【００２１】
[0024]  幾つかの場合、仮想アプリケーションのデータ・ファイルは、必要に応じて動的にストリーミングされる。ターゲットのコンピューター・システムにおいて仮想アプリケーションが発行されるとき、スパース・データ・ファイルのみが作成される。スパース・データ・ファイルは、標準的なデータ・ファイルのように「見える」が、ファイルに対してのプレースホルダーのみが存在する。プレースホルダーは、ファイルの名前およびサイズを含む。スパース・ファイルに対応するデータ・ファイルのコンテンツは、まだストリーミングされていない。ストリーミングは、ファイルの実際のデータが要求された後に行われる。その時点で、そのファイルのデータは、ネットワーク・アクセス可能データ・ストア１３０からストリーミングされる。典型的には、データ・ファイルの実際のデータは、オペレーティング・システムが実行可能ファイル（１以上）をメモリーへ読み込むまでは、必要ではない。別の実装では、ファイル・データは、ストリーミングされコピーされ、オペレーティング・システムのリード・リクエストは、コンピューター・システムのローカル・ハード・ドライブ（または他のデータ・ストア）へストリーミングされコピーされているデータにより、満足させられる。
【００２２】
[0025]  しかし、ここで説明する実施形態は、ファイルのコンテンツをローカル・ハード・ディスクへコピーしない。ストリーミングされたコンテンツは、ディスクに格納され得る前に、データ入力／出力（Ｉ／Ｏ）フィルターによりインターセプトされる。データＩ／Ｏフィルターは、リード・リクエストを満足させるように、ストリーミングされたデータをアプリケーションへ渡す。次に、アプリケーションは、そのストリーミングされたデータの何れもディスクへ書き込まず、そのストリーミングされたデータを用いて、通常行われるように、動作する。実際、仮想アプリケーションは、そのリード・リクエストがローカル・ハード・ドライブによっては満足させられなかったが動的にストリーミングされたデータにより満足させられたことさえ、知らない（または知る必要はない）。仮想アプリケーションまたはコンピューター・システムのファイル・システムに対する変更を行う必要はない。むしろ、データＩ／Ｏフィルターが中間でシームレスに動作して、動的にストリーミングされる仮想アプリケーションを提供する。この同じ仮想ソフトウェア・アプリケーション（ネットワーク・データ・ストアに格納されている）は、実質的に任意の数の他のコンピューター・システムおよび／または仮想マシンへ提供することができる。更には、同じアプリケーションが複数の異なるコンピューター・システムにわたって用いられるとき、ディスク空間は複製されない。なぜなら、サーバー上のそのアプリケーションの１つのコピーを、様々なコンピューター・システムのそれぞれへストリーミングできるからである。これらの概念は、図２および図３それぞれの方法２００および方法３００と関連して後に更に説明する。
【００２３】
[0026]  上述のシステムおよびアーキテクチャーの観点では、開示される主題事項に従ってインプリメントできる方法論は、図２および図３のフローチャートを参照すると、より良く理解できる。説明を簡単にするために、方法論は、一連のブロックで示され、説明される。しかし、特許請求の範囲に記載の主題事項は、ブロックの順番により限定されないことを、理解および解釈すべきである。なぜなら、幾つかのブロックは、ここで示され説明される順とは別の順序で生じることや、他のブロックと同時に生じることがあり得るからである。更には、以下で説明する方法論をインプリメントするために、全ての示したブロックを必要としない場合もある。
【００２４】
[0027]  図２は、仮想ソフトウェア・アプリケーションを動的に配信するための方法２００のフローチャートを示す。ここで、環境１００のコンポーネントおよびデータを頻繁に参照して方法２００を説明する。
【００２５】
[0028]  方法２００は、仮想ソフトウェア・アプリケーションからオペレーティング・システムのファイル・システムへ送られているデータ・ファイル・リクエストをインターセプトするように構成されるデータ入力／出力（Ｉ／Ｏ）フィルターを確立する行動を含む（行動２１０）。例えば、データＩ／Ｏフィルター１２０は、クライアント・コンピューター・システムのオペレーティング・システム・カーネル・モード１４１において確立することができる。データＩ／Ｏフィルターは、仮想アプリケーション１１０から送られるリード・リクエスト１１１をインターセプトすることができる。データ・リクエストは、標準的なアプリケーション・リード・リクエストであり、典型的には、仮想アプリケーションからファイル・システム１２５へ送られる。この場合、データＩ／Ｏフィルターは、ファイル・システムへ（そして次にディスク１２６へ）送られていたであろうリード・リクエストをインターセプトする。Ｉ／Ｏデータ・フィルターは、ソフトウェア・アプリケーションがデータ・ファイルを要求する方法に関しての変更を行わずに、インプリメントされる。従って、伝統的なソフトウェア・スタックは変更されずに残る。幾つかの場合、Ｉ／Ｏフィルターは、オペレーティング・システムのプロセスの一部として実行されるドライバーとすることができる。
【００２６】
[0029]  次に、方法２００は、指定されたデータ・ファイルをファイル・システムから取得するように構成されたデータ・ファイル・リード・リクエストを、データＩ／Ｏフィルターがインターセプトする行動を含む（行動２２０）。例えば、データＩ／Ｏフィルター１２０は、リード・リクエスト１１１を、ファイル・システム１２５へ送られる前にインターセプトすることができる。リード・リクエストは、仮想アプリケーション１１０がアクセスを試みているデータ・ファイルに関するリクエストである。データ・ファイルは、ローカル・ディスクに格納されているのではなく、ネットワーク・アクセス可能データ・ストア１３０に格納されている。要求された各ファイルに対して、ディスク１２６においてスパース・ファイル１２７が動的に作成される。上述のように、スパース・ファイルはプレースホルダー・ファイルであり、ファイルの名前およびサイズのみを含むが、実際のファイル・データを含まない。プレースホルダーは、ファイルが存在するかどうかを判定すること、という仮想アプリケーションの最初のリクエストを満足させる。仮想アプリケーションは、ファイルが存在するということで満足させられたとき（仮想アプリケーションがスパース・ファイルを読んだ後）、アプリケーションは、リード・リクエスト１１１におけるファイルの実際のデータを要求する。
【００２７】
[0030]  リード・リクエストをインターセプトするこのプロセスは、アプリケーションの各ファイルに対して生じ得る。従って、各ファイルは、各ファイルが必要とされたときに、仮想アプリケーションへ動的にストリーミングすることができる。ファイルは、単独又は複数でストリーミングすることができる。幾つかの場合には、複数のデータ・ファイルが要求され、並列にストリーミングされ得る。リード・リクエストがデータＩ／Ｏフィルターで受け取られるとき、そのリクエストは、Ｉ／Ｏフィルターによりインターセプトされるカーネル・モードＩ／Ｏリクエストへと変換される。次に、データＩ／Ｏフィルターは、インターセプトしたリード・リクエストをネットワーク・アクセス可能データ・ストア１３０へ送り、ネットワーク・アクセス可能データ・ストア１３０は、特定のデータ・ファイル１３１を返すように構成されている（行動２３０）。幾つかの場合には、インターセプトされたリクエストをユーザー・モード・サービス１１５へ送ることができ、ユーザー・モード・サービス１１５は、ネットワーク・アクセス可能データ・ストアとデータＩ／Ｏフィルターとの間に位置する。ユーザー・モード・サービスは、ユーザーのコンピューター・システムで、またはネットワークでリンクされた別のコンピューター・システムで、実行することができる。システムは、データＩ／Ｏフィルターからデータ・リクエスト１１１を受け取り、そのリクエストをネットワーク・データ・ストアへ送る。また、要求されたデータをネットワーク・ストアから受け取って、それをデータＩ／Ｏフィルターへ渡すために、サービスを用いることもできる。幾つかの場合、ネットワーク・データ・ストアは、クラウド（またはインターネット）を含むことができ、従って、指定されたデータ・ファイルは、ハイパーテキスト・トランスファー・プロトコル（ＨＴＴＰ）を用いてクラウド／インターネットから取得することができる。
【００２８】
[0031]  次に、指定されたデータ・ファイルをネットワーク・アクセス可能データ・ストアから受け取った後、Ｉ／Ｏフィルターは、その指定されたデータ・ファイルを仮想ソフトウェア・アプリケーションへ送り、それにより、指定されたデータ・ファイルは、そのリード・リクエストに応じて仮想ソフトウェア・アプリケーションによる使用が可能とされる（行動２４０）。従って、データ・リクエスト１１１は、ディスクへ送られる前にインターセプトすることができ、データをローカルまたはリモートのデータ・ストア１３０からフェッチするサービスへ送ることができる。サービスは、フェッチしたデータ１３１をＩ／Ｏフィルターへ返すように送り、Ｉ／Ｏフィルターは、そのデータを仮想アプリケーション１１０へ送る。従って、アプリケーション・ファイルは、ローカルのコンピューター・システムのファイル・システムへ格納せずに、ユーザーのコンピューター・システムへ（特定的には、仮想アプリケーションへ）、動的にストリーミングすることができる。ネットワーク・データ・ストアから動的に取得された各データ・ファイルは、仮想ソフトウェア・アプリケーションからは、データ・ファイルがコンピューター・システムのファイル・システムから受け取られたかのように見える。
【００２９】
[0032]  付加的または代替的に、ローカルのコンピューター・システムのアプリケーション・サービスまたはＩ／Ｏフィルターは、受け取ったデータをローカルのコンピューター・システムが読み取れることを保証するために、受け取ったデータを変換または変更するサービスを提供することができる。アプリケーション・データは、任意のフォーマット、任意の暗号化タイプ、および任意の圧縮タイプでネットワーク・データ・ストアに格納され得るので、アプリケーション・サービスまたはＩ／Ｏフィルターは、受け取ったデータを可読な形にするために、データの圧縮解除、暗号解読、および／または再フォーマットを行うように構成することができる。必要に応じて、このサービスにより他のオペレーションを行うこともできる。このように、アプリケーションのネイティブ・スタックに対する変更を全く行わずに、システムをインプリメントすることができる。
【００３０】
[0033]  図３は、ローカル・データ・ストアとネットワーク・データ・ストアとの間でアプリケーション・データを割り当てるための方法３００のフローチャートを示す。ここで、図４の環境４００のコンポーネントおよびデータを頻繁に参照して方法３００を説明する。
【００３１】
[0034]  方法３００は、仮想アプリケーションの何れの指定された部分がローカル・データ・ストアに格納されるかと、何れの部分がネットワーク・データ・ストアに格納されるかとのインジケーションを、管理ユーザーから受け取る行動を含む（行動３１０）。例えば、データＩ／Ｏフィルター４２０は、仮想アプリケーション４１０の何れの指定された部分がローカル・データ・ストア４２６に格納されるかと、何れの部分がネットワーク・アクセス可能データ・ストア４３０に格納されるかとのインジケーション４２３を、管理ユーザー４２５から受け取ることができる。従って、少なくとも幾つかの場合、幾つかのファイルが、ユーザーのローカルのコンピューター・システムへローカルに格納されることを指定し、他のファイルが、リモート・データ・ストアに格納されることを指定することが、コンピューターの管理者には望ましいであろう。管理者は、何れのファイルが何れの場所に格納されるかを指定することができ、ユーザーが仮想アプリケーション４１０を使用しているときに、その決定を更新することができる。従って、ローカル・データ・ストア４２６に格納されたファイル４３１は、削除するように管理者により指定された場合には、削除することができる。逆に、データ・ファイルは、ネットワーク・アクセス可能データ・ストアからローカル・データ・ストアへ移動させるように管理者により指定された場合には、そのようにすることができる。ローカルに格納されているデータ・ファイルを参照するとき、ファイルは、ローカルに格納されてディスクに存在するが、ファイルの名前およびサイズの情報のみを含む空のスパース・ファイルとしてであることに、留意されたい。
【００３２】
[0035]  また、管理者は、ネットワーク・データ・ストア４３０のアプリケーションのパッケージを更新することができる。従って、更新されたファイルが次に仮想アプリケーションにより要求されたとき、その更新されたファイルが、古いバージョンに代えて提供される。従って、仮想アプリケーションは、新たなアプリケーション・パッケージへと切り替えることにより、更新することができる。それらの更新されたファイルは、それらのファイルへ後にアクセスするユーザーの全てへ、提供することができる。更新を必要とする何れのローカル・ファイルも置換するように、ローカル・ファイル・システムで新たなファイルが作成される。
【００３３】
[0036]  方法３００はまた、仮想アプリケーションの何れの指定された部分がローカル・データ・ストアに格納されるかを記述する１以上のメタデータを作成する行動を含む（行動３２０）。ローカルのコンピューター・システムは、メタデータ４２１を作成することができ、メタデータ４２１は、仮想アプリケーション４１０から受け取ったデータ・リクエスト４１１を何れへ送るかを決定するために、データＩ／Ｏフィルターにより用いられる。メタデータは、各ファイルに対して、データ・ファイルが格納されている場所（ローカル４２６に、またはリモート４３０に）を示す。従って、データＩ／Ｏフィルターが仮想アプリケーションからデータ・リクエストを受け取ると、そのリクエストをユーザー・モード・サービス１１５へ（またはネットワーク・データ・ストアへ直接に）自動的に送る代わりに、データＩ／Ｏフィルターは、メタデータ４２１へアクセスして、そのデータがローカルに格納されているかリモート・ストアに格納されているかを判定する。データがローカルに格納されている場合、データ・リクエストはローカル・ファイル・システムへ送られる。データがリモートに格納されている場合、データ・リクエストはネットワーク・データ・ストアへ送られる。従って、上述のように、管理者４２５は、各ファイルが格納される場所を示すことができ、Ｉ／Ｏフィルターには、管理者の選択がなされたときにそれが知らせられる（インジケーション４２３を介して）。従って、メタデータは、管理者がデータ・ファイルを割り当てるときに継続的に更新することができ、データＩ／Ｏフィルターは、更新されたメタデータに基づいてデータ・リクエストを正しく送ることができる。
【００３４】
[0037]  従って、上述のように、データ・ファイル・リクエスト４１１は、指定されたデータ・ファイルのデータを要求する仮想アプリケーションから受け取ることができる（行動３３０）。次に、データＩ／Ｏフィルター４２０は、作成したメタデータ４２１に基づいて、指定されたデータ・ファイルがローカル・データ・ストア４２６に格納されているかリモート・データ・ストア４３０に格納されているかを、判定する（行動３４０）。その判定に基づいて、データＩ／Ｏフィルターは、データ・ファイル・リクエストを、ローカル・データ・ストアとリモート・データ・ストアとの何れかへ送る（行動３５０）。データ・ファイル・リクエストは、単独または複数で受け取ることができ、適切なデータ・ストアへ単独または複数で送ることができる。同様に、データ４２１は、単一のファイルまたはファイルのグループとして受け取ることができる。幾つかの場合、様々なデータ・リクエストを、ローカル・データ・ストアとリモート・データ・ストアとの双方へ同時に送ることができる。個々のデータ・ストアによりデータ・リクエストが満足させられると、データを、データＩ／Ｏフィルターへ返すように送ることができ、次に、単一のファイルまたはファイルのグループとして仮想アプリケーションへ送ることができる。幾つかの場合、データは、ローカル・データ・ストアとリモートのネットワーク・アクセス可能データ・ストアとの何れかまたは双方から、ストリーミングすることができる。リモート・データ・ストアからのデータが受け取られると、それは、何れのデータもローカル・データ・ストアへ格納せずに仮想アプリケーションへ渡される。
【００３５】
[0038]  従って、仮想ソフトウェア・アプリケーションを動的に配信する方法、システム、およびコンピューター・プログラム製品が提供される。仮想アプリケーションがユーザーにより使用されると、データ・ファイルは、仮想アプリケーションが必要としたときにネットワーク・データ・ストアから動的および自動的にストリーミングされる。更に、ローカル・データ・ストアとネットワーク・アクセス可能データ・ストアとの間での動的なデータの割り当てを可能にする方法、システム、およびコンピューター・プログラム製品が提供される。
【００３６】
[0039]  本発明は、本発明の精神および本質的特徴から離れずに、別の特定の形態で実施することもできる。説明した実施形態は、全ての点で、単なる例示であり、限定するものではないと考慮される。従って、本発明の範囲は、上記の説明ではなく、特許請求の範囲により示される。特許請求の範囲と等価の意味および範囲にある全ての変更は、特許請求の範囲の範囲内に含まれる。
【図１】
2015507787.tif 000003
【図２】
2015507787.tif 000004
【図３】
2015507787.tif 000005
【図４】
2015507787.tif 000006
【国際調査報告】
2015507787.tif 000007
2015507787.tif 000008