特許第6188713号(P6188713)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ マイクロソフト テクノロジー ライセンシング,エルエルシーの特許一覧

<>
  • 特許6188713-自律ネットワーク・ストリーミング 図000002
  • 特許6188713-自律ネットワーク・ストリーミング 図000003
  • 特許6188713-自律ネットワーク・ストリーミング 図000004
  • 特許6188713-自律ネットワーク・ストリーミング 図000005
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6188713
(24)【登録日】2017年8月10日
(45)【発行日】2017年8月30日
(54)【発明の名称】自律ネットワーク・ストリーミング
(51)【国際特許分類】
   G06F 12/00 20060101AFI20170821BHJP
   G06F 13/10 20060101ALI20170821BHJP
   G06F 9/44 20060101ALI20170821BHJP
【FI】
   G06F12/00 545A
   G06F12/00 514A
   G06F13/10 330B
   G06F9/06 620K
【請求項の数】4
【全頁数】13
(21)【出願番号】特願2014-547293(P2014-547293)
(86)(22)【出願日】2012年12月6日
(65)【公表番号】特表2015-507787(P2015-507787A)
(43)【公表日】2015年3月12日
(86)【国際出願番号】US2012068055
(87)【国際公開番号】WO2013090101
(87)【国際公開日】20130620
【審査請求日】2015年12月2日
(31)【優先権主張番号】13/327,695
(32)【優先日】2011年12月15日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】314015767
【氏名又は名称】マイクロソフト テクノロジー ライセンシング,エルエルシー
(74)【代理人】
【識別番号】100140109
【弁理士】
【氏名又は名称】小野 新次郎
(74)【代理人】
【識別番号】100075270
【弁理士】
【氏名又は名称】小林 泰
(74)【代理人】
【識別番号】100101373
【弁理士】
【氏名又は名称】竹内 茂雄
(74)【代理人】
【識別番号】100118902
【弁理士】
【氏名又は名称】山本 修
(74)【代理人】
【識別番号】100153028
【弁理士】
【氏名又は名称】上田 忠
(74)【代理人】
【識別番号】100120112
【弁理士】
【氏名又は名称】中西 基晴
(74)【代理人】
【識別番号】100196508
【弁理士】
【氏名又は名称】松尾 淳一
(74)【代理人】
【識別番号】100147991
【弁理士】
【氏名又は名称】鳥居 健一
(74)【代理人】
【識別番号】100119781
【弁理士】
【氏名又は名称】中村 彰吾
(74)【代理人】
【識別番号】100162846
【弁理士】
【氏名又は名称】大牧 綾子
(74)【代理人】
【識別番号】100173565
【弁理士】
【氏名又は名称】末松 亮太
(74)【代理人】
【識別番号】100138759
【弁理士】
【氏名又は名称】大房 直樹
(72)【発明者】
【氏名】モーガン,ピーター・アズィズ
【審査官】 井上 宏一
(56)【参考文献】
【文献】 米国特許出願公開第2011/0029968(US,A1)
【文献】 国際公開第2011/025989(WO,A1)
【文献】 特開2011−159295(JP,A)
【文献】 特表2004−502236(JP,A)
【文献】 特表2002−521745(JP,A)
【文献】 国際公開第2011/126776(WO,A1)
【文献】 特表2013−524365(JP,A)
【文献】 特表2013−506170(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
G06F 9/44
G06F 13/10
(57)【特許請求の範囲】
【請求項1】
複数の計算システムを含むコンピューター・ネットワーク環境における、少なくとも1つのプロセッサーおよびメモリーを含むコンピューター・システムにおいての、仮想ソフトウェア・アプリケーションを動的に配信するための、コンピューターにより実施される方法であって、
仮想ソフトウェア・アプリケーションからオペレーティング・システムのファイル・システムへ送られているデータ・ファイル・リード・リクエストをインターセプトするように構成されるデータ入力/出力(I/O)フィルターを確立する行動と、
前記データ入力/出力(I/Oフィルターが、指定されたデータ・ファイルを前記ファイル・システムから取得するように構成されるデータ・ファイル・リード・リクエストを、インターセプトする行動と、
前記データ入力/出力(I/Oフィルターが、インターセプトした前記データ・ファイル・リード・リクエストを、前記指定されたデータ・ファイルを返すように構成されたネットワーク・アクセス可能データ・ストアへ、送る行動と、
前記データ入力/出力(I/Oフィルターが、前記ネットワーク・アクセス可能データ・ストアから前記指定されたデータ・ファイルを受け取った後、前記指定されたデータ・ファイルを前記仮想ソフトウェア・アプリケーションへ送り、それにより、そのデータ・ファイル・リード・リクエストに応じて前記指定されたデータ・ファイルを前記仮想ソフトウェア・アプリケーションが使用できるようにする行動と
を含む方法において、
前記ネットワーク・アクセス可能データ・ストアから受け取った前記データ・ファイルは、前記コンピューター・システムの前記ファイル・システムには格納されない、方法
【請求項2】
請求項1に記載の方法であって、インターセプトされた前記リクエストは、前記リクエストを前記ネットワーク・アクセス可能データ・ストアへ送るように構成され且つ要求した前記データを前記ネットワーク・アクセス可能データ・ストアから受け取るように構成されるユーザー・モード・サービスへ、送られる、方法。
【請求項3】
請求項に記載の方法であって、前記ユーザー・モード・サービスは、受け取った前記データを前記データ入力/出力(I/Oフィルターへ送り、前記データ入力/出力(I/Oフィルターは、前記データを前記仮想ソフトウェア・アプリケーションへ送る、方法。
【請求項4】
請求項1〜3のいずれか一項に記載の方法であって、前記ネットワーク・アクセス可能データ・ストアはクラウドを含み、前記指定されたデータ・ファイルはハイパーテキスト・トランスファー・プロトコルを用いてクラウドから取得される、方法。
【発明の詳細な説明】
【背景技術】
【0001】
[0001] コンピューターは、労働力、家庭、モバイル・デバイス、および他の多くの場所で、高度に統合されている。コンピューターは、大量の情報を迅速かつ効率的に処理することができる。コンピューターで実行されるように設計されたソフトウェア・アプリケーションは、ユーザーが、ビジネス・アプリケーション、学業、エンターテイメント、およびその他を含む広範囲の種類の機能を行うことを可能にする。多くの場合、ソフトウェア・アプリケーションは、特定のタスク、例えば、文書を作成するためのワード・プロセッサー・アプリケーションや、Eメールの送信、受信、および整理のためのEメール・プログラムなどを行うように、設計される。
【0002】
[0002] それぞれの場合において、ソフトウェア・アプリケーションは、ホスト側コンピューター・システム(hosting computer system)の様々なハードウェア・コンポーネントとインタラクションし、また、それらを用いる。例えば、ソフトウェア・アプリケーションは、例えば、ハード・ディスクやDVDやフラッシュ・ドライブなどのようなローカル・データ・ストアとインタラクションすることができる。典型的には、アプリケーションは、入力/出力(I/O)リクエストを行い、I/Oリクエストは、アプリケーションからオペレーティング・システムのファイル・システムへ送られる。ファイル・システムは、ディスクからの必要なデータへアクセスしてそれをアプリケーションへ返す。仮想アプリケーションが用いられる場合、データを単にローカル・ハード・ディスクから取得する代わりに、データの少なくとも一部をリモート・データ・ストア(通常はネットワーク・ファイル・サーバー)へ要求する。次に、データは、コンピューター・システムにより受け取られ、そのローカル・ハード・ディスクに格納される。次に、コンピューターのファイル・システムは、データを、ローカルに格納されたデータに関して標準的に行うように、アプリケーションへ送る。
【発明の概要】
【0003】
[0003] ここで説明する実施形態は、仮想ソフトウェア・アプリケーションの動的な配信、およびローカル・データ・ストアとネットワーク・データ・ストアとの間でのアプリケーション・データの割り当てに関する。1つの実施形態では、コンピューター・システムは、データ入力/出力(I/O)フィルターを確立し、このフィルターは、仮想ソフトウェア・アプリケーションからオペレーティング・システムのファイル・システムへ送られているデータ・ファイル・リクエストをインターセプトするように、構成される。データI/Oフィルターは、データ・ファイル・リード(read)・リクエストをインターセプトするが、このリクエストは、指定されたデータ・ファイルをファイル・システムから取得するように構成されている。データI/Oフィルターは、インターセプトしたリード・リクエストを、ネットワーク・アクセス可能データ・ストアへ送り、このデータ・ストアは、その特定のデータ・ファイルを返すように構成されている。次に、I/Oフィルターは、指定されたデータ・ファイルをネットワーク・データ・ストアから受け取ると、その指定されたデータ・ファイルを仮想ソフトウェア・アプリケーションへ送る。このようにして、指定されたデータ・ファイルは、仮想アプリケーションにより使用できるようにされる。
【0004】
[0004] 別の実施形態では、コンピューター・システムは、ローカル・データ・ストアとネットワーク・データ・ストアとの間でアプリケーション・データを割り当てる。コンピューター・システムは、仮想アプリケーションの何れの指定された部分がローカル・データ・ストアに格納されるかと、何れの部分がネットワーク・データ・ストアに格納されるかとのインジケーションを、管理ユーザーから受け取る。コンピューター・システムは、仮想アプリケーションの何れの指定された部分がローカル・データ・ストアに格納されるかを記述する様々なメタデータを作成する。次に、コンピューター・システムは、仮想アプリケーションから、指定されたデータ・ファイルのデータを要求するデータ・ファイル・リクエストを受け取り、指定されたデータ・ファイルがローカル・データ・ストアに格納されているかリモート・データ・ストアに格納されているかを、作成したメタデータに基づいて判定する。次に、その判定に基づいて、コンピューター・システムは、データ・ファイル・リクエストを、ローカル・データ・ストアとリモート・データ・ストアとの何れかへ送る。
【0005】
[0005] この概要は、以下の詳細な説明で更に説明する概念のうちの選択したものを、簡素化した形で紹介するために提供されている。この概要は、特許請求の範囲に記載の主題事項の鍵となる特徴や本質的な特徴を特定することを意図しておらず、また、特許請求の範囲に記載の主題事項の範囲を決定する際の支援として用いることを意図していない。
【0006】
[0006] 更なる特徴および利点は、後の説明で述べられており、また、一部は、当業者には説明から明らかであり、また、ここでの教示を実施することにより学ぶことができる。本発明の特徴および利点は、特許請求の範囲において示す装置や組み合わせを用いることにより実現し、得ることができる。本発明の実施形態の特徴は、以下の説明および特許請求の範囲から更に完全に明らかになるか、または後に述べる発明を実施することにより学ぶことができる。
【0007】
[0007] 本発明の実施形態の上記および他の利点および特徴を更に明確にするために、図面を参照して、本発明の実施形態のより特定的な説明を提供する。それらの図面は、単に、本発明の典型的な実施形態を示すものであり、従って、本発明の範囲を限定するものとして考慮されないと理解される。本発明の実施形態は、図面を用いて更に特定的かつ詳細に記述され説明される。
【図面の簡単な説明】
【0008】
図1図1は、仮想アプリケーションを動的に配信することを含む本発明の実施形態が動作でき得るコンピューター・アーキテクチャーを示す。
図2図2は、仮想ソフトウェア・アプリケーションを動的に配信するための例示の方法のフローチャートを示す。
図3図3は、アプリケーション・データをローカル・データ・ストアとリモート・データ・ストアとの間で割り当てるための例示の方法のフローチャートを示す。
図4図4は、ローカル・データ・ストアとリモート・データ・ストアとの間でデータが割り当てられる本発明の実施形態を示す。
【発明を実施するための形態】
【0009】
[0012] ここで説明する実施形態は、仮想ソフトウェア・アプリケーションの動的な配信、およびローカル・データ・ストアとネットワーク・データ・ストアとの間でのアプリケーション・データの割り当てに関する。1つの実施形態では、コンピューター・システムは、データ入力/出力(I/O)フィルターを確立し、このフィルターは、仮想ソフトウェア・アプリケーションからオペレーティング・システムのファイル・システムへ送られているデータ・ファイル・リクエストをインターセプトするように、構成される。データI/Oフィルターは、データ・ファイル・リード・リクエストをインターセプトするが、このリクエストは、指定されたデータ・ファイルをファイル・システムから取得するように構成されている。データI/Oフィルターは、インターセプトしたリード・リクエストを、ネットワーク・アクセス可能データ・ストアへ送り、このデータ・ストアは、特定のデータ・ファイルを返すように構成されている。次に、I/Oフィルターは、指定されたデータ・ファイルをネットワーク・データ・ストアから受け取ると、その指定されたデータ・ファイルを仮想ソフトウェア・アプリケーションへ送る。このようにして、指定されたデータ・ファイルは、仮想アプリケーションにより使用できるようにされる。
【0010】
[0013] 別の実施形態では、コンピューター・システムは、ローカル・データ・ストアとネットワーク・データ・ストアとの間でアプリケーション・データを割り当てる。コンピューター・システムは、仮想アプリケーションの何れの指定された部分をローカル・データ・ストアに格納すべきかと、何れの部分をネットワーク・データ・ストアに格納すべきかとのインジケーションを、管理ユーザーから受け取る。コンピューター・システムは、仮想アプリケーションの何れの指定された部分がローカル・データ・ストアに格納されるかを記述する様々なメタデータを作成する。次に、コンピューター・システムは、仮想アプリケーションから、指定されたデータ・ファイルのデータを要求するデータ・ファイル・リクエストを受け取り、指定されたデータ・ファイルがローカル・データ・ストアに格納されているかリモート・データ・ストアに格納されているかを、作成したメタデータに基づいて判定する。次に、その判定に基づいて、コンピューター・システムは、データ・ファイル・リクエストを、ローカル・データ・ストアとリモート・データ・ストアとの何れかへ送る。
【0011】
[0014] 以下の説明は、行うことができる幾つかの方法および方法の実行に関する。方法の実行は、特定の順に説明されるか、またはフローチャートにおいて特定の順に生じるように示されている場合があるが、特に述べていないかぎりは、必ずしも特定の順にする必要はなく、また、1つの実行が、その実行の前に別の実行が完了されることを条件とする場合には、特定の順にする必要があることに、留意されたい。
【0012】
[0015] 後に詳細に説明するが、本発明の実施形態は、例えば、1以上のプロセッサーやシステム・メモリーなどのようなコンピューター・ハードウェアを含む特定用途向けまたは汎用のコンピューターを含むか、またはそのようなコンピューターを用いる。また、本発明の範囲内にある実施形態は、コンピューター実行可能命令および/またはデータ構造を伝送または格納する物理的媒体および他のコンピューター可読媒体を含む。そのようなコンピューター可読媒体は、汎用または特定用途向けのコンピューター・システムによりアクセスできる任意の使用可能な媒体とすることができる。データの形でコンピューター実行可能命令を格納するコンピューター可読媒体は、コンピューター・ストレージ媒体である。コンピューター実行可能命令を伝送するコンピューター可読媒体は伝送媒体である。従って、限定ではなく例として、本発明の実施形態は、少なくとも2つの異なる種類のコンピューター可読媒体、即ち、コンピューター・ストレージ媒体および伝送媒体を含むことができる。
【0013】
[0016] コンピューター・ストレージ媒体は、RAM、ROM、EEPROM、CD−ROM、RAMをベースにしたソリッド・ステート・ドライブ(SDD)、フラッシュ・メモリ、相変化メモリー(PCM)または他のタイプのメモリー、または他の光ディスク・ストレージ、磁気ディスク・ストレージ、または他の磁気記憶装置、またはコンピューター実行可能命令またはデータまたはデータ構造の形態で望まれるプログラム・コード手段を格納するために使用でき且つ汎用または特定用途向けのコンピューターによりアクセスできる他の任意の媒体を含む。
【0014】
[0017] 「ネットワーク」は、コンピューター・システムおよび/またはモジュールおよび/または他の電子デバイスの間での電子データのトランスポートを可能とする1以上のデータ・リンクおよび/またはデータ・スイッチとして定義される。ネットワーク(有線と、ワイヤレスと、有線とワイヤレスとの組み合わせとの何れか)を通じて情報がコンピューターへ転送または提供されるとき、コンピューターは、適切に、その接続を伝送媒体として見る。伝送媒体はネットワークを含むことができ、ネットワークは、コンピューター実行可能命令の形態やデータ構造の形態にされたデータや望まれるプログラム・コード手段を伝送するために使用でき、かつ汎用または特定用途向けのコンピューターによりアクセスできる。上記のものの組み合わせも、コンピューター可読媒体の範囲に含まれるべきである。
【0015】
[0018] 更に、コンピューター・システムの様々なコンポーネントへ到達すると、コンピューター実行可能命令またはデータ構造の形態のプログラム・コード手段は、伝送媒体からコンピューター・ストレージ媒体へ(またはその逆に)自動的に転送され得る。例えば、ネットワークまたはデータ・リンクを介して受け取ったコンピューター実行可能命令またはデータ構造は、ネットワーク・インターフェース・モジュール(例えば、ネットワーク・インターフェース・カード、即ち、「NIC」)内のRAMへバッファ記憶することができ、次に、コンピューター・システムのRAMへ、および/またはコンピューター・システムの揮発性の低いコンピューター・ストレージ媒体へ、最終的に転送される。従って、コンピューター・ストレージ媒体が、伝送媒体を用いる(主に用いることさえある)コンピューター・システム・コンポーネントに含まれ得ることを、理解すべきである。
【0016】
[0019] コンピューター実行可能(またはコンピューター理解可能)命令は、例えば、汎用コンピューター、特定用途向けコンピューター、または特定用途向け処理デバイスに、1つの特定の機能または1グループの機能を行わせる命令を含む。コンピューター実行可能命令は、例えば、バイナリーや、アセンブリ言語などのような中間フォーマット命令や、更にはソース・コードなどであり得る。主題事項は、構造的な特徴や方法論的な行動(act)に対して特定的な言語で記載されているが、特許請求の範囲で定義される主題事項は、上記の特徴や行動に必ずしも限定されるものではない。むしろ、説明した特徴や行動は、特許請求の範囲を実施する際の例示的形態として開示されたものである。
【0017】
[0020] 本発明を、多くのタイプのコンピューター・システム構成を用いて、ネットワーク計算環境において実施できることが、当業者には理解できるであろう。コンピューター・システム構成は、パーソナル・コンピューター、デスクトップ・コンピューター、ラップトップ・コンピューター、メッセージ・プロセッサー、手持ち型デバイス、マルチプロセッサー・システム、マイクロプロセッサー・ベースまたはプログラマブルの消費者向け電子機器、ネットワークPC、ミニコンピューター、メインフレーム・コンピューター、モバイル電話、PDA、ページャー、ルーター、スイッチなどを含む。また、本発明は、分散型システム環境においても実施することができる。分散型システム環境では、ローカル・コンピューター・システムとリモート・コンピューター・システムとがネットワークを介してリンクされ(有線データ・リンクと、ワイヤレス・データ・リンクと、有線データ・リンクとワイヤレス・データ・リンクとの組み合わせとの何れかによる)、それぞれがタスク(例えば、クラウド・コンピューティング、クラウド・サービスなど)を行う。分散型システム環境では、プログラム・モジュールは、ローカル・メモリー・ストレージ・デバイスとリモート・メモリー・ストレージ・デバイスとの双方に配されることができる。
【0018】
[0021] 図1は、本発明の原理を用いることができるコンピューター・アーキテクチャー100を示す。コンピューター・アーキテクチャー100は、ユーザー・モード140およびカーネル・モード141で動作するコンピューター・システムを含む。コンピューター・システムは、クラウド計算システムを含めての、ローカルまたは分散型の任意のタイプのものとすることができる。各動作モードは、特定のタイプのオペレーションを行うように構成された様々なモジュールを含む。これらの動作モードおよびコンピューター・システム・モジュールは、仮想ソフトウェア・アプリケーションをシームレス且つ効率的な様式で配置するために用いることができる。
【0019】
[0022] ここで述べられる仮想ソフトウェア・アプリケーションとは、ローカルで実行されているように見えるが、実際にはネットワーク・アプリケーション・サーバーで実行されているアプリケーションである。ネットワーク・アプリケーション・サーバーは、アプリケーションのデータを、ネットワークを介してユーザーに提供する。ここでの実施形態では、ユーザーは、ユーザーが標準的な場合と同様にアプリケーション・アイコン(または仮想アプリケーションにより開かれるデータ・ファイル)をクリックしてアプリケーションを開くことにより、プロセスを開始することができる。オペレーティング・システムは、ユーザーから開始信号を受け取ると、アプリケーションの実行可能ファイル(1以上)のためのプロセス・アドレス空間を、その実行可能ファイル(1以上)をメモリー内へ読み込むことにより、初期設定する。ここで用いる「データ・ファイル」という用語は、設定ファイル(典型的には実行可能コードの一部ではない)を含むデータ・ファイル、および/またはアプリケーションの実行可能バイナリー・ファイルを含むイメージの双方を指し得ることに留意されたい。ここでは、設定ファイルと実行可能ファイルとの双方が予期されサポートされるので、ここでは、データ・ファイルという用語はそれらを記述するために用いられる。
【0020】
[0023] 次に、オペレーティング・システムは、アプリケーションに対するエントリー・ポイントへの命令ポインターを設定し、プロセスを実行する。オペレーティング・システム内の仮想化レイヤーは、この起動フェーズの間にそれ自体を検出して初期設定する。その後、仮想アプリケーションは、ユーザーのコンピューター・システムで実行される。
【0021】
[0024] 幾つかの場合、仮想アプリケーションのデータ・ファイルは、必要に応じて動的にストリーミングされる。ターゲットのコンピューター・システムにおいて仮想アプリケーションが発行されるとき、スパース・データ・ファイルのみが作成される。スパース・データ・ファイルは、標準的なデータ・ファイルのように「見える」が、ファイルに対してのプレースホルダーのみが存在する。プレースホルダーは、ファイルの名前およびサイズを含む。スパース・ファイルに対応するデータ・ファイルのコンテンツは、まだストリーミングされていない。ストリーミングは、ファイルの実際のデータが要求された後に行われる。その時点で、そのファイルのデータは、ネットワーク・アクセス可能データ・ストア130からストリーミングされる。典型的には、データ・ファイルの実際のデータは、オペレーティング・システムが実行可能ファイル(1以上)をメモリーへ読み込むまでは、必要ではない。別の実装では、ファイル・データは、ストリーミングされコピーされ、オペレーティング・システムのリード・リクエストは、コンピューター・システムのローカル・ハード・ドライブ(または他のデータ・ストア)へストリーミングされコピーされているデータにより、満足させられる。
【0022】
[0025] しかし、ここで説明する実施形態は、ファイルのコンテンツをローカル・ハード・ディスクへコピーしない。ストリーミングされたコンテンツは、ディスクに格納され得る前に、データ入力/出力(I/O)フィルターによりインターセプトされる。データI/Oフィルターは、リード・リクエストを満足させるように、ストリーミングされたデータをアプリケーションへ渡す。次に、アプリケーションは、そのストリーミングされたデータの何れもディスクへ書き込まず、そのストリーミングされたデータを用いて、通常行われるように、動作する。実際、仮想アプリケーションは、そのリード・リクエストがローカル・ハード・ドライブによっては満足させられなかったが動的にストリーミングされたデータにより満足させられたことさえ、知らない(または知る必要はない)。仮想アプリケーションまたはコンピューター・システムのファイル・システムに対する変更を行う必要はない。むしろ、データI/Oフィルターが中間でシームレスに動作して、動的にストリーミングされる仮想アプリケーションを提供する。この同じ仮想ソフトウェア・アプリケーション(ネットワーク・データ・ストアに格納されている)は、実質的に任意の数の他のコンピューター・システムおよび/または仮想マシンへ提供することができる。更には、同じアプリケーションが複数の異なるコンピューター・システムにわたって用いられるとき、ディスク空間は複製されない。なぜなら、サーバー上のそのアプリケーションの1つのコピーを、様々なコンピューター・システムのそれぞれへストリーミングできるからである。これらの概念は、図2および図3それぞれの方法200および方法300と関連して後に更に説明する。
【0023】
[0026] 上述のシステムおよびアーキテクチャーの観点では、開示される主題事項に従ってインプリメントできる方法論は、図2および図3のフローチャートを参照すると、より良く理解できる。説明を簡単にするために、方法論は、一連のブロックで示され、説明される。しかし、特許請求の範囲に記載の主題事項は、ブロックの順番により限定されないことを、理解および解釈すべきである。なぜなら、幾つかのブロックは、ここで示され説明される順とは別の順序で生じることや、他のブロックと同時に生じることがあり得るからである。更には、以下で説明する方法論をインプリメントするために、全ての示したブロックを必要としない場合もある。
【0024】
[0027] 図2は、仮想ソフトウェア・アプリケーションを動的に配信するための方法200のフローチャートを示す。ここで、環境100のコンポーネントおよびデータを頻繁に参照して方法200を説明する。
【0025】
[0028] 方法200は、仮想ソフトウェア・アプリケーションからオペレーティング・システムのファイル・システムへ送られているデータ・ファイル・リクエストをインターセプトするように構成されるデータ入力/出力(I/O)フィルターを確立する行動を含む(行動210)。例えば、データI/Oフィルター120は、クライアント・コンピューター・システムのオペレーティング・システム・カーネル・モード141において確立することができる。データI/Oフィルターは、仮想アプリケーション110から送られるリード・リクエスト111をインターセプトすることができる。データ・リクエストは、標準的なアプリケーション・リード・リクエストであり、典型的には、仮想アプリケーションからファイル・システム125へ送られる。この場合、データI/Oフィルターは、ファイル・システムへ(そして次にディスク126へ)送られていたであろうリード・リクエストをインターセプトする。I/Oデータ・フィルターは、ソフトウェア・アプリケーションがデータ・ファイルを要求する方法に関しての変更を行わずに、インプリメントされる。従って、伝統的なソフトウェア・スタックは変更されずに残る。幾つかの場合、I/Oフィルターは、オペレーティング・システムのプロセスの一部として実行されるドライバーとすることができる。
【0026】
[0029] 次に、方法200は、指定されたデータ・ファイルをファイル・システムから取得するように構成されたデータ・ファイル・リード・リクエストを、データI/Oフィルターがインターセプトする行動を含む(行動220)。例えば、データI/Oフィルター120は、リード・リクエスト111を、ファイル・システム125へ送られる前にインターセプトすることができる。リード・リクエストは、仮想アプリケーション110がアクセスを試みているデータ・ファイルに関するリクエストである。データ・ファイルは、ローカル・ディスクに格納されているのではなく、ネットワーク・アクセス可能データ・ストア130に格納されている。要求された各ファイルに対して、ディスク126においてスパース・ファイル127が動的に作成される。上述のように、スパース・ファイルはプレースホルダー・ファイルであり、ファイルの名前およびサイズのみを含むが、実際のファイル・データを含まない。プレースホルダーは、ファイルが存在するかどうかを判定すること、という仮想アプリケーションの最初のリクエストを満足させる。仮想アプリケーションは、ファイルが存在するということで満足させられたとき(仮想アプリケーションがスパース・ファイルを読んだ後)、アプリケーションは、リード・リクエスト111におけるファイルの実際のデータを要求する。
【0027】
[0030] リード・リクエストをインターセプトするこのプロセスは、アプリケーションの各ファイルに対して生じ得る。従って、各ファイルは、各ファイルが必要とされたときに、仮想アプリケーションへ動的にストリーミングすることができる。ファイルは、単独又は複数でストリーミングすることができる。幾つかの場合には、複数のデータ・ファイルが要求され、並列にストリーミングされ得る。リード・リクエストがデータI/Oフィルターで受け取られるとき、そのリクエストは、I/Oフィルターによりインターセプトされるカーネル・モードI/Oリクエストへと変換される。次に、データI/Oフィルターは、インターセプトしたリード・リクエストをネットワーク・アクセス可能データ・ストア130へ送り、ネットワーク・アクセス可能データ・ストア130は、特定のデータ・ファイル131を返すように構成されている(行動230)。幾つかの場合には、インターセプトされたリクエストをユーザー・モード・サービス115へ送ることができ、ユーザー・モード・サービス115は、ネットワーク・アクセス可能データ・ストアとデータI/Oフィルターとの間に位置する。ユーザー・モード・サービスは、ユーザーのコンピューター・システムで、またはネットワークでリンクされた別のコンピューター・システムで、実行することができる。システムは、データI/Oフィルターからデータ・リクエスト111を受け取り、そのリクエストをネットワーク・データ・ストアへ送る。また、要求されたデータをネットワーク・ストアから受け取って、それをデータI/Oフィルターへ渡すために、サービスを用いることもできる。幾つかの場合、ネットワーク・データ・ストアは、クラウド(またはインターネット)を含むことができ、従って、指定されたデータ・ファイルは、ハイパーテキスト・トランスファー・プロトコル(HTTP)を用いてクラウド/インターネットから取得することができる。
【0028】
[0031] 次に、指定されたデータ・ファイルをネットワーク・アクセス可能データ・ストアから受け取った後、I/Oフィルターは、その指定されたデータ・ファイルを仮想ソフトウェア・アプリケーションへ送り、それにより、指定されたデータ・ファイルは、そのリード・リクエストに応じて仮想ソフトウェア・アプリケーションによる使用が可能とされる(行動240)。従って、データ・リクエスト111は、ディスクへ送られる前にインターセプトすることができ、データをローカルまたはリモートのデータ・ストア130からフェッチするサービスへ送ることができる。サービスは、フェッチしたデータ131をI/Oフィルターへ返すように送り、I/Oフィルターは、そのデータを仮想アプリケーション110へ送る。従って、アプリケーション・ファイルは、ローカルのコンピューター・システムのファイル・システムへ格納せずに、ユーザーのコンピューター・システムへ(特定的には、仮想アプリケーションへ)、動的にストリーミングすることができる。ネットワーク・データ・ストアから動的に取得された各データ・ファイルは、仮想ソフトウェア・アプリケーションからは、データ・ファイルがコンピューター・システムのファイル・システムから受け取られたかのように見える。
【0029】
[0032] 付加的または代替的に、ローカルのコンピューター・システムのアプリケーション・サービスまたはI/Oフィルターは、受け取ったデータをローカルのコンピューター・システムが読み取れることを保証するために、受け取ったデータを変換または変更するサービスを提供することができる。アプリケーション・データは、任意のフォーマット、任意の暗号化タイプ、および任意の圧縮タイプでネットワーク・データ・ストアに格納され得るので、アプリケーション・サービスまたはI/Oフィルターは、受け取ったデータを可読な形にするために、データの圧縮解除、暗号解読、および/または再フォーマットを行うように構成することができる。必要に応じて、このサービスにより他のオペレーションを行うこともできる。このように、アプリケーションのネイティブ・スタックに対する変更を全く行わずに、システムをインプリメントすることができる。
【0030】
[0033] 図3は、ローカル・データ・ストアとネットワーク・データ・ストアとの間でアプリケーション・データを割り当てるための方法300のフローチャートを示す。ここで、図4の環境400のコンポーネントおよびデータを頻繁に参照して方法300を説明する。
【0031】
[0034] 方法300は、仮想アプリケーションの何れの指定された部分がローカル・データ・ストアに格納されるかと、何れの部分がネットワーク・データ・ストアに格納されるかとのインジケーションを、管理ユーザーから受け取る行動を含む(行動310)。例えば、データI/Oフィルター420は、仮想アプリケーション410の何れの指定された部分がローカル・データ・ストア426に格納されるかと、何れの部分がネットワーク・アクセス可能データ・ストア430に格納されるかとのインジケーション423を、管理ユーザー425から受け取ることができる。従って、少なくとも幾つかの場合、幾つかのファイルが、ユーザーのローカルのコンピューター・システムへローカルに格納されることを指定し、他のファイルが、リモート・データ・ストアに格納されることを指定することが、コンピューターの管理者には望ましいであろう。管理者は、何れのファイルが何れの場所に格納されるかを指定することができ、ユーザーが仮想アプリケーション410を使用しているときに、その決定を更新することができる。従って、ローカル・データ・ストア426に格納されたファイル431は、削除するように管理者により指定された場合には、削除することができる。逆に、データ・ファイルは、ネットワーク・アクセス可能データ・ストアからローカル・データ・ストアへ移動させるように管理者により指定された場合には、そのようにすることができる。ローカルに格納されているデータ・ファイルを参照するとき、ファイルは、ローカルに格納されてディスクに存在するが、ファイルの名前およびサイズの情報のみを含む空のスパース・ファイルとしてであることに、留意されたい。
【0032】
[0035] また、管理者は、ネットワーク・データ・ストア430のアプリケーションのパッケージを更新することができる。従って、更新されたファイルが次に仮想アプリケーションにより要求されたとき、その更新されたファイルが、古いバージョンに代えて提供される。従って、仮想アプリケーションは、新たなアプリケーション・パッケージへと切り替えることにより、更新することができる。それらの更新されたファイルは、それらのファイルへ後にアクセスするユーザーの全てへ、提供することができる。更新を必要とする何れのローカル・ファイルも置換するように、ローカル・ファイル・システムで新たなファイルが作成される。
【0033】
[0036] 方法300はまた、仮想アプリケーションの何れの指定された部分がローカル・データ・ストアに格納されるかを記述する1以上のメタデータを作成する行動を含む(行動320)。ローカルのコンピューター・システムは、メタデータ421を作成することができ、メタデータ421は、仮想アプリケーション410から受け取ったデータ・リクエスト411を何れへ送るかを決定するために、データI/Oフィルターにより用いられる。メタデータは、各ファイルに対して、データ・ファイルが格納されている場所(ローカル426に、またはリモート430に)を示す。従って、データI/Oフィルターが仮想アプリケーションからデータ・リクエストを受け取ると、そのリクエストをユーザー・モード・サービス115へ(またはネットワーク・データ・ストアへ直接に)自動的に送る代わりに、データI/Oフィルターは、メタデータ421へアクセスして、そのデータがローカルに格納されているかリモート・ストアに格納されているかを判定する。データがローカルに格納されている場合、データ・リクエストはローカル・ファイル・システムへ送られる。データがリモートに格納されている場合、データ・リクエストはネットワーク・データ・ストアへ送られる。従って、上述のように、管理者425は、各ファイルが格納される場所を示すことができ、I/Oフィルターには、管理者の選択がなされたときにそれが知らせられる(インジケーション423を介して)。従って、メタデータは、管理者がデータ・ファイルを割り当てるときに継続的に更新することができ、データI/Oフィルターは、更新されたメタデータに基づいてデータ・リクエストを正しく送ることができる。
【0034】
[0037] 従って、上述のように、データ・ファイル・リクエスト411は、指定されたデータ・ファイルのデータを要求する仮想アプリケーションから受け取ることができる(行動330)。次に、データI/Oフィルター420は、作成したメタデータ421に基づいて、指定されたデータ・ファイルがローカル・データ・ストア426に格納されているかリモート・データ・ストア430に格納されているかを、判定する(行動340)。その判定に基づいて、データI/Oフィルターは、データ・ファイル・リクエストを、ローカル・データ・ストアとリモート・データ・ストアとの何れかへ送る(行動350)。データ・ファイル・リクエストは、単独または複数で受け取ることができ、適切なデータ・ストアへ単独または複数で送ることができる。同様に、データ421は、単一のファイルまたはファイルのグループとして受け取ることができる。幾つかの場合、様々なデータ・リクエストを、ローカル・データ・ストアとリモート・データ・ストアとの双方へ同時に送ることができる。個々のデータ・ストアによりデータ・リクエストが満足させられると、データを、データI/Oフィルターへ返すように送ることができ、次に、単一のファイルまたはファイルのグループとして仮想アプリケーションへ送ることができる。幾つかの場合、データは、ローカル・データ・ストアとリモートのネットワーク・アクセス可能データ・ストアとの何れかまたは双方から、ストリーミングすることができる。リモート・データ・ストアからのデータが受け取られると、それは、何れのデータもローカル・データ・ストアへ格納せずに仮想アプリケーションへ渡される。
【0035】
[0038] 従って、仮想ソフトウェア・アプリケーションを動的に配信する方法、システム、およびコンピューター・プログラム製品が提供される。仮想アプリケーションがユーザーにより使用されると、データ・ファイルは、仮想アプリケーションが必要としたときにネットワーク・データ・ストアから動的および自動的にストリーミングされる。更に、ローカル・データ・ストアとネットワーク・アクセス可能データ・ストアとの間での動的なデータの割り当てを可能にする方法、システム、およびコンピューター・プログラム製品が提供される。
【0036】
[0039] 本発明は、本発明の精神および本質的特徴から離れずに、別の特定の形態で実施することもできる。説明した実施形態は、全ての点で、単なる例示であり、限定するものではないと考慮される。従って、本発明の範囲は、上記の説明ではなく、特許請求の範囲により示される。特許請求の範囲と等価の意味および範囲にある全ての変更は、特許請求の範囲の範囲内に含まれる。
図1
図2
図3
図4