(57)【要約】  遠隔実行管理処理は、ネットワークコンピューティングプロバイダにおける、ソフトウェアプロセスインスタンスの態様の実行および管理を対象とする。クライアントコンピューティングデバイスは、ソフトウェアプロセスインスタンスをインスタンス化し得る。クライアントコンピューティングデバイスは、ネットワークコンピューティングプロバイダにおける実行のためにソフトウェアプロセスインスタンスの少なくとも１つのサブプロセスを識別することを含む、ソフトウェアプロセスインスタンスのための遠隔プロセス構成を決定する。クライアントコンピューティングデバイスは、遠隔セッション構成情報をネットワークコンピューティングプロバイダに提供し得る。遠隔セッション構成情報に基づいて、ネットワークコンピューティングプロバイダは、少なくとも１つのサブプロセスに対応する遠隔セッションをインスタンス化し得る。ネットワークコンピューティングプロバイダは、処理結果を、遠隔セッションによって少なくとも１つのサブプロセスの実行に関連するクライアントコンピューティングデバイスに伝送し得る。
2014531670.tif 000002
【特許請求の範囲】
【請求項１】
遠隔プロセス実行のためのシステムであって、
１つ以上のコンピュータプロセッサと、
前記１つ以上のコンピュータプロセッサの少なくとも１つによってアクセス可能な少なくとも１つのコンピュータメモリと、
前記１つ以上のコンピュータプロセッサによって実行される実行可能なソフトウェアモジュールを備える遠隔実行管理構成要素と、
を備え、
前記遠隔実行管理構成要素が、
ソフトウェアプロセス遠隔プロセス構成インスタンスのための遠隔プロセス構成を決定するように動作可能であり、前記遠隔プロセス構成が、遠隔操作のための前記ソフトウェアプロセスインスタンスの少なくとも１つのサブプロセスを識別し、
前記遠隔実行管理構成要素が、
前記ソフトウェアプロセスインスタンスの前記少なくとも１つのサブプロセスに関連するプロセスデータをネットワークコンピューティングプロバイダに提供するように動作可能であり、前記プロセスデータが、前記ソフトウェアプロセスインスタンスの前記少なくとも１つのサブプロセスに関連するデータ、および、前記ソフトウェアプロセスインスタンスの前記少なくとも１つのサブプロセスに関連する複数の命令の少なくとも１つを少なくとも識別し、
前記遠隔実行管理構成要素が、
前記ネットワークコンピューティングプロバイダから１つ以上の処理結果を得るように動作可能であり、前記１つ以上の処理結果が、前記ネットワークコンピューティングプロバイダにおいて前記複数の命令の１つ以上の前記実行と関連し、
前記遠隔実行管理構成要素が、
前記ソフトウェアプロセスインスタンスに従って、前記得られた１つ以上の処理結果を処理するように動作可能である、
システム。
【請求項２】
前記遠隔プロセス構成が、データを前記ネットワークコンピューティングおよびストレージ構成要素と交換するための通信プロトコルを識別する、
請求項１に記載のシステム。
【請求項３】
前記クライアントコンピューティングデバイスが、プロセスデータを前記ネットワークコンピューティングプロバイダに提供し、１つ以上の処理結果を、ネットワーク接続により前記ネットワークコンピューティングプロバイダから得る、
請求項１に記載のシステム。
【請求項４】
前記少なくとも１つのサブプロセスが、第１のサブプロセスおよび第２のサブプロセスを含む、
請求項１に記載のシステム。
【請求項５】
前記プロセスデータが、前記ソフトウェアプロセスインスタンスに関連する一式のデータを含む、
請求項１に記載のシステム。
【請求項６】
前記遠隔実行管理構成要素がさらに、ソフトウェアプロセス実行データに少なくとも部分的に基づいて、ソフトウェアプロセスインスタンスのための遠隔プロセス構成を決定するように動作可能である、
請求項１に記載のシステム。
【請求項７】
前記遠隔実行管理構成要素がさらに、前記ソフトウェアプロセス実行データに基づいて、前記ネットワークコンピューティングプロバイダにおける遠隔実行のための前記ソフトウェアプロセスインスタンスのサブプロセスを識別するように動作可能である、
請求項６に記載のシステム。
【請求項８】
前記遠隔実行管理構成要素がさらに、前記ソフトウェアプロセス実行データに基づいて、通信プロトコルを前記ソフトウェアプロセスインスタンスのサブプロセスと関連付けるように動作可能である、
請求項６に記載のシステム。
【請求項９】
前記遠隔プロセス構成が、前記ネットワークコンピューティングプロバイダから得られた情報に基づく、
請求項１に記載のシステム。
【請求項１０】
遠隔プロセス実行のためのコンピュータで実現される方法であって、前記方法は、
ソフトウェアプロセスインスタンスを初期化するステップと、
前記ソフトウェアプロセスインスタンスのための遠隔プロセス構成であって、前記ソフトウェアプロセスインスタンスの少なくとも１つのサブプロセスを識別する遠隔プロセス構成を決定するステップと、
前記少なくとも１つのサブプロセスに関連するデータ、および、前記少なくとも１つのサブプロセスに関連する複数の実行可能なデバイス命令の少なくとも１つを識別するプロセスデータを、ネットワークコンピューティングプロバイダに提供するステップと、
前記少なくとも１つのサブプロセスに関連する前記複数の実行可能なデバイス命令の１つ以上の実行と関連する１つ以上の処理結果を、前記ネットワークコンピューティングプロバイダから得るステップと、
前記ソフトウェアプロセスインスタンスに従って、前記得られた１つ以上の処理結果を処理するステップと、
を含む、
コンピュータで実現される方法。
【請求項１１】
前記クライアントコンピューティングデバイスが、プロセスデータを前記ネットワークコンピューティングプロバイダに提供し、１つ以上の処理結果を、ネットワーク接続により前記ネットワークコンピューティングプロバイダから得る、
請求項１０に記載のコンピュータで実現される方法。
【請求項１２】
前記プロセスデータが、前記ソフトウェアプロセスインスタンスに関連する一式のデータを含む、
請求項１０に記載のコンピュータで実現される方法。
【請求項１３】
前記クライアントコンピューティングデバイスにて、前記ソフトウェアプロセスインスタンスを終了するステップと、
前記クライアントコンピューティングデバイスにて、第２のソフトウェアプロセスインスタンスを初期化するステップと、
前記クライアントコンピューティングデバイスにおける終了の前の、前記ソフトウェアプロセスインスタンスの最後の状態と関連する、１つ以上の処理結果を前記ネットワークコンピューティングプロバイダから得るステップと、
をさらに含む、
請求項１０に記載のコンピュータで実現される方法。
【請求項１４】
処理のために、第２のプロセスデータを第１のコンピューティングデバイスに提供するステップをさらに含み、
前記第２のプロセスデータが、前記第１のコンピューティングデバイスにおいて行われる前記少なくとも１つのサブプロセスに関連する第２の複数の実行可能な命令を識別する、
請求項１０に記載のコンピュータで実現される方法。
【請求項１５】
前記コンピューティングデバイスに関連するコンピューティングリソース使用に基づいて、プロセスデータを前記第１のコンピューティングデバイスに提供するか、または、前記ネットワークコンピューティングプロバイダに提供するかどうかを決定するステップをさらに含む、
請求項１４に記載のコンピュータで実現される方法。
【発明の詳細な説明】
【背景技術】
【０００１】
一般的に説明されるならば、コンピューティングデバイスは、そのコンピューティングデバイスに多種多様な機能または行為を行わせる、多数のコンピュータ可読命令からなるプロセスを実行する。通常、オペレーティングシステムが、しばしば、コンピューティングデバイスに関連する「ローレベル動作」と称される、基本的な機能または機能性の多くを管理する。一態様において、基本的な機能性の管理は、デバイスメモリ、データストレージ、および入力／出力等のコンピューティングデバイスに関連するリソースの管理を含むことができる。別の態様において、基本的な機能性の管理は、コンピューティングデバイス上でインスタンス化され、命令の実行を要求する、通常、プロセスまたはスレッドと称される、１つ以上のソフトウェアアプリケーションに関連する命令の管理を含むことができる。例えば、オペレーティングシステムは、様々なアプリケーション、サービス、およびデバイス上でインスタンス化された他のプロセスの中でのデバイスリソースの割り当ておよび実行の順序を決定し得る。
【０００２】
場合によっては、コンピューティングデバイス上で実行するプロセスのリソース要件は、利用可能なコンピューティングデバイスリソースの能力を超え得る。そのような状況において、ユーザは、応答性の遅延または欠如を経験し得る。例示の実施例を参照すると、コンピューティングデバイスは、コンピューティングデバイス上で実行するグラフィックス編集アプリケーションを介して大きな画像ファイルをロードおよび表示するように命令され得る。コンピューティングデバイスが、要求を処理するために利用可能なデバイスメモリを十分に有しない場合、オペレーティングシステムは、デバイスメモリおよび画像ファイルの１つ以上の部分を、ハードドライブまたはフラッシュメモリストレージ等の待ち時間の長いストレージに一時的にロードすることができる。その後、オペレーティングシステムは、デバイスメモリおよび待ち時間の長いストレージに記憶された情報を置き換えることができ、しばしばスワッピングと称される。多くの場合、メモリをスワッピングすることは、遅くて時間のかかるプロセスであり得る。引き続き例示の実施例に関して、ユーザは、グラフィックス編集アプリケーションが、画像ファイル上の画像処理操作を行うことも要求し得る。したがって、グラフィックス編集アプリケーションは、画像処理操作に対応する一連の実行可能な命令からなるサブプロセスの実行を引き起こし得る。画像ファイルが大きい場合、コンピューティングデバイスが制限されたコンピューティングリソースしか使用できない場合、または変換がコンピューティング上複雑である場合、サブプロセスは、完了するために相当量の時間を費やすことがあり、デバイス上で同時に実行するアプリケーションおよびオペレーティングシステムのサブプロセス等の他のプロセスの実行に影響を及ぼし得る。
【０００３】
クライアントコンピューティングデバイスを利用するユーザの観点から、ユーザの経験は、コンピューティングデバイス上の様々なソフトウェアプロセスの実行に関連する性能および待ち時間に関して定義され得る。上記プロセスのいずれの待ち時間および性能制限も、ユーザの経験を減少させ得る。さらに、待ち時間および非効率性は、処理力、メモリまたはネットワーク接続性等のリソースが制限されたコンピューティングデバイス、例えば、ネットブック、タブレット、スマートフォン等で特に明らかであり得る。
【０００４】
前述の態様および本発明の付帯利益の多くは、添付の図面と併せて考慮されるとき、以下の詳細な説明を参照することによってさらに良く理解されるように、より容易に理解されるであろう。
【図面の簡単な説明】
【０００５】
【図１】クライアントコンピューティングデバイスおよびネットワークコンピューティングプロバイダを含むネットワークコンピューティング環境を示すブロック図である。
【図２】クライアントコンピューティングデバイスとネットワークコンピューティングプロバイダとの間の新たなソフトウェアプロセスおよび遠隔セッションのインスタンス化を示す、図１のネットワークコンピューティング環境のブロック図である。
【図３】ネットワークコンピューティングプロバイダとクライアントコンピューティングデバイスとの間のアプリケーションデータの処理を示す、図１のネットワークコンピューティング環境のブロック図である。
【図４】クライアントコンピューティングデバイスとネットワークコンピューティングプロバイダとの間の新たな遠隔セッションのインスタンス化を示す、図１のネットワークコンピューティング環境のブロック図である。
【図５】ネットワークコンピューティングプロバイダにおける遠隔セッション構成情報の決定および新たな遠隔セッションのインスタンス化を示す、図１のネットワークコンピューティング環境のブロック図である。
【図６】クライアントコンピューティングデバイスによって実装されるクライアントの新たな遠隔セッションルーチンを示すフロー図である。
【図７】ネットワークコンピューティングプロバイダによって実装される新たな遠隔セッションルーチンを示すフロー図である。
【図８】クライアントコンピューティングデバイスよって実装される遠隔セッションユーザ対話ルーチンを示すフロー図である。
【発明を実施するための形態】
【０００６】
一般的に説明されるならば、本開示は、クライアントコンピューティングデバイスと１つ以上の遠隔ネットワークコンピューティングプロバイダとの間のソフトウェアプロセス遠隔セッションの生成および管理を対象とする。具体的に、本開示の態様は、遠隔セッション構成情報に従って、クライアントコンピューティングデバイスとネットワークコンピューティングプロバイダとの間でプロセスデータおよび処理結果を生成するためのソフトウェアプロセスの処理に関して説明される。本開示に記載される実施形態の態様は、例示の目的で、ソフトウェアアプリケーションに対応する１つ以上の遠隔セッションの管理について説明し得るが、当業者であれば、本明細書に開示される技法が、オペレーティングシステムプロセスおよびサービスを含むがこれらに限定されない任意の数のソフトウェアプロセスに適用され得ることを理解するであろう。さらに、本開示の様々な態様は、例示の実施例および実施形態に関して説明されるが、当業者であれば、開示される実施形態および実施例が限定するものとして見なされるべきでないことを理解するであろう。
【０００７】
特定の例示の実施例を参照すると、ユーザは、クライアントコンピューティングデバイスが、ソフトウェアアプリケーションプロセス（これ以降「アプリケーション」と称する）等のソフトウェアプロセスインスタンスをロードすることを要求し得る。一実施形態において、ロードされた後、アプリケーションは、クライアントコンピューティングデバイスにおいて実行されるように設計された多数のコンピュータで実行可能な命令に対応し得る。例示的に、一式のコンピュータで実行可能な命令は、「サブプロセス」と称される場合があり、特定の機能性または行為の実装と関連し得る。
【０００８】
特定の実施例の目的で、グラフィック編集アプリケーションは、画像を処理するためにメモリにロードし得ると想定する。ユーザは、画像フィルタをメモリ内の画像に適用することを要求し得る。本実施例に従って、画像フィルタは、フィルタの構成に従ってメモリ内の画像データを操作するサブプロセスに対応し得る（例えば、明度を調整する、または視覚的アーチファクトを除去する）。
【０００９】
要求の受信に続いて、クライアントコンピューティングデバイスは、選択されたサブプロセスの実行に関連するソフトウェアプロセス構成情報を得る。一実施形態において、ソフトウェアプロセス構成情報は、アプリケーションに関連する１つ以上のサブプロセスを識別する情報、ならびにサブプロセスのリソース使用または処理要件を特定する情報を含んでよい。クライアントコンピューティングデバイスは、デバイスリソースの現在または将来の利用可能性（例えば、処理力、メモリ、ストレージ、ネットワーク使用等）を含むがこれに限定されないデバイス状態に関する様々な情報をさらに得てもよい。
【００１０】
ソフトウェアプロセス構成情報ならびにデバイス状態またはリソースの利用可能性に関連する情報を使用して、クライアントコンピューティングデバイスは、ネットワークコンピューティングプロバイダにおいて実行する１つ以上の遠隔セッション内の遠隔実行のためのアプリケーションの１つ以上のサブプロセスを識別してもよく、それらは遠隔セッション構成情報として具現化され得る。遠隔セッション構成情報は、ネットワークコンピューティングプロバイダにおける遠隔セッションとクライアントコンピューティングデバイスにおけるアプリケーションインスタンスとの間のプロセスデータおよび処理結果のパッケージ化および伝送のための１つ以上の通信プロトコルを識別し得る。
【００１１】
クライアントコンピューティングデバイスによる遠隔セッション構成情報の決定に続いて、クライアントコンピューティングデバイスは、アプリケーションの１つ以上の構成要素のローカルインスタンス化を引き起こし得る。クライアントコンピューティングデバイスはさらに、遠隔セッション構成情報をネットワークコンピューティングプロバイダに提供し得る。遠隔セッション構成情報に基づいて、ネットワークコンピューティングプロバイダは、アプリケーションのサブルーチンの少なくともいくつかの部分を実行するネットワークコンピューティングプロバイダに関連するコンピューティング構成要素等の１つ以上の遠隔セッションをインスタンス化するか、またはインスタンス化させ得る。例えば、ネットワークコンピューティングプロバイダは、クライアントコンピューティングデバイスにおいてインスタンス化されているアプリケーションのサブプロセスに対応する１つ以上のソフトウェアプロセスをホストするようにコンピューティング構成要素をインスタンス化し得る。さらなる実施例では、一実施形態において、ネットワークコンピューティングプロバイダは、クライアントコンピューティングデバイスにおいてインスタンス化されたアプリケーションの並列コピーを含む仮想マシンのインスタンスをインスタンス化するか、またはインスタンス化させることができる。
【００１２】
ネットワークコンピューティングプロバイダは、１つ以上の遠隔セッションにおいて処理するために、クライアントコンピューティングデバイスから初期プロセスデータを得てもよい。１つ以上の遠隔セッションは、初期プロセスデータを処理してもよく、処理結果をクライアントコンピューティングデバイスに伝送し戻してもよい。インスタンス化されたネットワークコンピューティング構成要素上の遠隔セッションとクライアントコンピューティングデバイス上のアプリケーションとの間で交換されたプロセスデータおよび処理結果を含むがこれらに限定されない情報は、一般に「遠隔セッション情報」と称され得る。処理結果を受信すると、クライアントコンピューティングデバイスは、さらなる処理および／またはユーザへの提示のために処理結果をアプリケーションに提供し得る。一実施形態において、ネットワークコンピューティングプロバイダにおけるプロセスデータの伝送および処理は、クライアントコンピューティングデバイスにおいて実行するアプリケーションに対して透過的であってもよい。しかしながら、クライアントのユーザの観点から、処理結果は、クライアントコンピューティングデバイスにおいてローカルに実行するサブプロセスによって生成されたように見え得る。
【００１３】
図１は、クライアントコンピューティングデバイス１０２およびネットワークコンピューティングプロバイダ１０６を含む、ネットワークコンピューティング環境１００を示すブロック図である。図１に示されるように、ネットワークコンピューティング環境１００は、ソフトウェアアプリケーションプロセス１２２およびオペレーティングシステム１０８等のソフトウェアプロセスを実行するためのクライアントコンピューティングデバイス１０２を含む。例示的な実施形態において、クライアントコンピューティングデバイス１０２は、パーソナルコンピューティングデバイス、ラップトップコンピューティングデバイス、携帯型コンピューティングデバイス、端末コンピューティングデバイス、モバイルデバイス（例えば、携帯電話、タブレットコンピューティングデバイス等）、ワイヤレスデバイス、様々な電子デバイスおよび電子機器、ならびに同類のものを含む、多種多様なコンピューティングデバイスに対応し得る。例示的な実施形態において、クライアントコンピューティングデバイス１０２は、広域ネットワークまたはローカルエリアネットワーク等の通信ネットワーク１０４上で通信を確立するために必要なハードウェアおよびソフトウェア構成要素を含む。例えば、クライアントコンピューティングデバイス１０２は、インターネットまたはイントラネットを介して通信を促進するネットワーキング機器およびブラウザソフトウェアアプリケーションを備えてもよい。クライアントコンピューティングデバイス１０２は、例えば、中央処理装置およびアーキテクチャ、メモリ、マスストレージ、グラフィックス処理装置、通信ネットワーク利用可能性、ならびに帯域幅等の多様なローカルコンピューティングリソースを有してもよい。
【００１４】
一実施形態において、クライアントコンピューティングデバイス１０２は、グラフィックスマネジャー１１０、入力／出力マネジャー（「Ｉ／Ｏマネジャー」）１１２、プロセスマネジャー１１４、メモリマネジャー１１６、およびファイルシステムマネジャー等の１つ以上のオペレーティングシステムプロセスからなるオペレーティングシステム１０８を実行し得る。例示的に、グラフィックスマネジャー１１０は、グラフィックス処理および出力デバイス上に表示するためのデータおよびコンテンツの出力を操作し得る。Ｉ／Ｏマネジャー１１２は、入力および出力機能を操作するとともに、ネットワークプロトコルおよびネットワーク使用、ならびにクライアントコンピューティングデバイス１０２と通信ネットワーク１０４上の他のネットワーク化デバイスとの間のアクセスを管理し得る。メモリマネジャー１１６は、ソフトウェアプロセス間のメモリの割り当てを管理し得、クライアントコンピューティングデバイス上の仮想メモリおよびメモリキャッシングを処理し得る。ファイルシステムマネジャー１１８は、ハードドライブ、フラッシュメモリ、ネットワークドライブ、または他のローカルもしくは遠隔ストレージ構成要素を含むがこれらに限定されないストレージ構成要素１２０上のファイルおよびデータの記憶および検索読み出しを管理し得る。様々な他の実施形態において、オペレーティングシステム１０８は、例示の目的で本明細書に図示されているオペレーティングシステム処理よりも少数、それらよりも多く、またはそれらの任意の組み合わせを含んでもよい。
【００１５】
プロセスマネジャー１１４は、クライアントコンピューティングデバイス１０２上で実行可能な１つ以上のソフトウェアアプリケーションプロセス１２２の実行、ローディング、およびスケジューリングを管理し得る。例示的に、各ソフトウェアアプリケーションプロセス１２２は、複数の論理的に関連するデバイスで実行可能な命令からなる任意の数のサブプロセスを含んでよい。
【００１６】
さらに引き続き図１を参照して、ネットワークコンピューティング環境１００は、通信ネットワーク１０４を介してクライアントコンピューティングデバイス１０２と通信するネットワークコンピューティングプロバイダ１０６を含むこともできる。図１に示されるネットワークコンピューティングプロバイダ１０６はまた、ネットワークコンピューティングプロバイダに関連する１つ以上のコンピューティングデバイスの論理的関連にも対応する。具体的に、ネットワークコンピューティングプロバイダ１０６は、通信ネットワーク１０４上のノードに対応する多数のポイントオブプレゼンス（Ｐｏｉｎｔ  ｏｆ  Ｐｒｅｓｅｎｃｅ（「ＰＯＰ」））位置１３８、１４４を含むことができる。各ＰＯＰ１３８、１４４は、一般にＮＣＣのインスタンスと称される、仮想マシンの多数のインスタンスを介してソフトウェアアプリケーションプロセス１２２またはそれらのサブプロセス等のアプリケーションをホストするためのネットワークコンピューティング構成要素（ＮＣＣ）１４０、１４６を含む。関連技術分野における熟練者であれば、仮想マシンの複数のインスタンスを提供するか、または仮想マシンのインスタンス形成を動的に生じさせるために、ＮＣＣ１４０、１４６が物理的コンピューティングデバイスリソースおよびソフトウェアを含むことを理解するであろう。そのような形成は、例えば、クライアントコンピューティングデバイスからの特定の要求に基づき得るか、またはＮＣＣは、それ自体上の仮想マシンのインスタンスの動的形成を開始し得る。各ＮＣＣ  ＰＯＰ１３８、１４４は、ユーザデータ、ステータス情報、処理要件、使用歴データ、およびＮＣＣ１４０、１４６のインスタンスによって処理され、様々なクライアントコンピュータに伝送されるコンテンツプロバイダからのリソース含むがこれらに限定されない、ネットワークまたはコンピューティングリソースの送達および処理に使用される任意のタイプデータを記憶するために、多数のストレージデバイスで構成されているストレージ構成要素１４２、１４８も含む。いくつかの実施形態において、ネットワークコンピューティングプロバイダ１０７は、ネットワークコンピューティングおよびストレージプロバイダとして見なされてもよい。ＮＣＣ１４０、１４６およびストレージ構成要素１４２、１４８は、要求されたアプリケーションを支援する仮想マシンのインスタンスを選択するため、および／またはＤＮＳネームサーバに情報を提供して要求ルーティングを促進するためのロードバランシングもしくはロードシェアリングソフトウェア／ハードウェア構成要素を含むがこれらに限定されない通信を促進する追加のソフトウェアおよび／またはハードウェア構成要素をさらに含んでよい。
【００１７】
例示的な実施形態において、ＮＣＣ１３８、１４６およびストレージ構成要素１４２、１４８は、構成要素またはその構成要素の一部が物理的に別個であるかどうかに関わらず、論理的にグループ化されていると見なされる。例えば、ネットワークコンピューティングプロバイダ１０６は、ＮＣＣおよびストレージ構成要素を提供するために別個のＰＯＰを維持してもよい。さらに、ＮＣＣ  ＰＯＰ１３６、１４４は、図１においてネットワークコンピューティングプロバイダ１０６と論理的に関連するように示されているが、ＮＣＣ  ＰＯＰは、クライアントコンピューティングデバイス１０２の様々な人口統計に最適に機能する方法で通信ネットワーク１０４全体に地理的に分布される。さらに、関連技術分野における熟練者であれば、ネットワークコンピューティングプロバイダ１０６が、コンテンツおよびリソースの管理のための追加のコンピューティングデバイス等の様々な追加のコンピューティングリソースと関連し得ることを理解するであろう。
【００１８】
ここで図２〜５を参照すると、図１のネットワークコンピューティング環境１００の様々な構成要素間の対話が示される。具体的に、図２〜５は、クライアントコンピューティングデバイス１０２とネットワークコンピューティングプロバイダ１０６との間のプロセスデータの遠隔処理のためのネットワークコンピューティング環境１００の様々な構成要素間の対話を示す。しかしながら、例示の目的で図は簡素化されているため、通信を促進するために利用される構成要素の多くは示されていない。関連技術分野における熟練者であれば、そのような構成要素が利用され得ること、したがって追加の対話が、本開示の趣旨および範囲から逸脱することなく起こり得ることを理解するであろう。
【００１９】
図２を参照すると、処理は、新たなソフトウェアプロセスおよびクライアントコンピューティングデバイス１０２とネットワークコンピューティングプロバイダ１０６との間の遠隔セッションのインスタンス化から開始することができる。例示的に、クライアントコンピューティングデバイス１０２は、イベントまたはユーザ要求に応答して、ソフトウェアアプリケーションプロセス１２２のロードを開始してもよい。一実施形態において、ソフトウェアアプリケーション１２２をロードすることは、ストレージ構成要素１２０からの実行可能なコードをデバイスメモリにコピーすることを含んでもよい。ソフトウェアアプリケーションプロセス１２２がロードされると、クライアントコンピューティングデバイス１０２は、アプリケーション１２２の１つ以上のサブプロセスを識別してもよい。例示的に、各サブプロセスは、アプリケーション１２２の機能性の一態様を行う多数の論理的に関連する実行可能な命令からなり得る。様々な実施形態において、クライアントコンピューティングデバイスは、アプリケーション１２２に関連する記憶されたソフトウェアプロセス構成情報、アプリケーション１２２の実行の以前もしくは現在のモニタリング、１つ以上の関連アプリケーション（例えば、アプリケーション１２２とは異なるが同様のバージョン）の実行のモニタリングに基づくか、または任意の他の要因もしくは情報に基づいて、１つ以上のサブプロセスを識別し得る。アプリケーション１２２のサブプロセスの識別に続いて、クライアントコンピューティングデバイス１０２は、遠隔実行するための一式のサブプロセスを定義する遠隔セッション構成情報、およびクライアントコンピューティングデバイス１０２とネットワークコンピューティングプロバイダとの間のデータ輸送のための通信プロトコルを決定し得る。次にクライアントコンピューティングデバイスは、クライアントコンピューティングデバイスにおいて、アプリケーション１２２の任意のローカル構成要素をインスタンス化し得る。一実施形態において、これらのサブプロセスの機能が、ネットワークコンピューティングプロバイダ１０６における遠隔セッションによって行われているか、または行われるとき、クライアントコンピューティングデバイス１０２は、ローカルアプリケーション１２２内の遠隔アナログの候補として識別された１つ以上のサブプロセスの１つ以上の態様の実行またはロードをブロックし得る。
【００２０】
遠隔セッション構成情報を決定することに続いて、クライアントコンピューティングデバイス１０２は、処理される遠隔セッション構成情報および／または初期プロセスデータをネットワークコンピューティングプロバイダ１０６に伝送し得る。一実施形態において、クライアントコンピューティングデバイス上にロードされているアプリケーション１２２の観点から、遠隔セッションをインスタンス化してサブプロセスの実行を処理することは、そのサブプロセスがローカルデバイス上でインスタンス化および実行されているかのように見え得る。
【００２１】
遠隔セッション構成情報の受信に続いて、ネットワークコンピューティングプロバイダ１０６は、１つ以上の関連するネットワークコンピューティング構成要素（以下「ＮＣＣ」）ポイントオブプレゼンス（以下「ＰＯＰ」）、例えば、ＮＣＣ  ＰＯＰ１３８を選択し、任意の要求された新たな遠隔セッションを行う。ＮＣＣ  ＰＯＰの選択は、インスタンス化された仮想マシンに対して利用可能なプロセスおよびネットワークリソースを決定し得る。ＮＣＣ  ＰＯＰインスタンスにおける処理およびネットワークリソースの選択ならびにソフトウェアの提供は、少なくとも部分的に、処理リソースおよびクライアントコンピューティングデバイス１０２との通信を最適化するために行われてもよい。選択されたＮＣＣ  ＰＯＰ１３８は、遠隔セッション構成情報内で識別されるアプリケーション１２２の１つ以上のサブプロセスに対応する遠隔セッションを生成し得る。例示的に、新たな遠隔セッションをインスタンス化することは、新たな仮想マシンインスタンス、一式の実行可能な命令、および／またはＮＣＣ  ＰＯＰ１３８におけるアプリケーションインスタンスをロードすることと、デバイスメモリ、ストレージもしくはキャッシュスペース、プロセッサ時間、ネットワーク帯域幅、または新たな遠隔セッションのための他の計算もしくはネットワークリソースを確保する、もしくは割り当てることとを含んでよい。
【００２２】
図３を参照すると、ネットワークコンピューティングプロバイダ１０６とクライアントコンピューティングデバイス１０２との間のアプリケーションデータの処理のための例示的対話が説明される。図３に示されるように、選択されたＮＣＣ  ＰＯＰ１３８は、上記の図２に図示される遠隔セッション構成情報等の遠隔セッション構成情報に基づいて、アプリケーション１２２に対応する１つ以上の遠隔セッションをインスタンス化してもよい。
【００２３】
新たな遠隔セッションインスタンスを初期化することに続いて、ＮＣＣ  ＰＯＰ１３８は、クライアントコンピューティングデバイス１０２によって、遠隔セッション構成情報とともにネットワークコンピューティングプロバイダ１０６に提供される、上記の図２に図示される初期プロセスデータ等の任意の初期プロセスデータを処理し得る。ＮＣＣ  ＰＯＰ１３８における初期プロセスデータの処理と同時に、処理前、または処理に続いて、クライアントコンピューティングデバイス１０２は、クライアントコンピューティングデバイス１２２においてローカルに実行するアプリケーション１２２の任意のサブプロセスに対応するローカル処理を行ってもよい。ＮＣＣ  ＰＯＰ１３８は、その初期プロセスデータの処理を完了すると、ネットワーク１０４を通じてクライアントコンピューティングデバイス１０２上で作動しているアプリケーション１２２に処理結果を伝送し戻し得る。一実施形態において、これらの処理結果は、遠隔セッション構成情報内で識別された通信プロトコルに従って伝送され得る。アプリケーション１２２の観点から、ＮＣＣ  ＰＯＰ１３８によって提供される処理結果は、クライアントコンピューティングデバイスにおいてローカルに実行するスレッドまたは他のサブプロセスによって生成されたように見え得る。
【００２４】
アプリケーション１２２がデータをローカルに処理し、クライアントデバイス１０２においてユーザからの対話を受信すると、アプリケーション１２２は、遠隔セッションに対応する１つ以上のサブプロセスに関連する追加のプロセスデータをネットワークコンピューティングプロバイダ１０６に伝送し得る。一実施形態において、ネットワークコンピューティングプロバイダ１０６は、このプロセスデータを上記のように処理し、クライアントコンピューティングデバイス１０２において追加の処理結果をアプリケーション１２２に伝送し戻し得る。クライアントコンピューティングデバイス１０２において実行するアプリケーション１２２の任意のサブプロセスは、正常に実行し得る。
【００２５】
図４を参照すると、クライアントコンピューティングデバイス１０２とネットワークコンピューティングプロバイダ１０６との間の新たな遠隔セッションのインスタンス化を示す、図１のネットワークコンピューティング環境のブロック図が開示される。図２および３に示されるように、第１の遠隔セッションは、クライアントコンピューティングデバイス１０２上で実行するアプリケーション１２２に対応するネットワークコンピューティングプロバイダ１０６においてインスタンス化され得る。
【００２６】
新たな遠隔セッションのインスタンス化は、クライアントコンピューティングデバイス１０２において新たなサブプロセスのロードまたは実行を開始するアプリケーション１２２から開始し得る。例示的に、新たなサブプロセスのロードまたは実行は、アプリケーションコンテンツ上の新たな処理操作を開始するアプリケーション１２２の結果とし起こり得る。例えば、グラフィック編集アプリケーションは、大きな画像ファイル上の画像処理操作からなる新たなサブプロセスの実行を開始し得る。別の実施形態において、新たなサブプロセスのロードまたは実行は、アプリケーションコンテンツの新たな部分をロードする要求に対応し得る。例えば、新たなビデオ編集アプリケーションサブプロセスは、編集のための新たなビデオクリップのロードに対応し得る。例示的に、新たなサブプロセスのロードまたは実行は、ユーザ対話もしくは要求、システムもしくはアプリケーションイベント、または任意の他のトリガーイベントもしくは原因に応答して起こり得る。
【００２７】
新たなサブプロセスを識別するクライアントコンピューティングデバイス１０２に続いて、クライアントコンピューティングデバイス１０２は、図２を参照して上述のように、新たなサブプロセスのための遠隔セッション構成情報を決定し得る。上述のように、遠隔セッション構成情報は、遠隔セッションとクライアントコンピューティングデバイス１０２において実行するアプリケーション１２２との間のデータ交換のために、識別されたサブプロセスおよび／または通信プロトコルのための遠隔セッションの実行を特定し得る。クライアントコンピューティングデバイス１０２は、処理のための遠隔セッション構成情報および／または初期プロセスデータをネットワークコンピューティングプロバイダ１０６に伝送し得る。図２を参照して上述のように、ネットワークコンピューティングプロバイダ１０６は、新たな遠隔セッション要求を処理するＮＣＣ  ＰＯＰ１３８を決定してもよく、そのＮＣＣ  ＰＯＰ１３８における新たなサブプロセスに対応する新たな遠隔セッションのインスタンス化を引き起こし得る。
【００２８】
図２を参照して上述のように、ネットワークコンピューティングプロバイダ１０６は、利用可能なＮＣＣ  ＰＯＰリソース（例えば、利用可能なメモリ、プロセッサロード、ネットワークロード等）、ＮＣＣ  ＰＯＰにおいて遠隔セッションをホストする費用、クライアントコンピューティングデバイス１０２に対するＮＣＣ  ＰＯＰの位置、コンテンツプロバイダ、ＣＤＮ、またはＮＣＣ  ＰＯＰキャッシュステータス（例えば、要求されたリソースがＮＣＣ  ＰＯＰキャッシュ内で既に記憶されているかどうか）等を含むがこれらに限定されない任意の数の要因に基づいて、新たな遠隔セッションをインスタンス化するためにＮＣＣ  ＰＯＰを選択してもよい。例示的に、ネットワークコンピューティングプロバイダ１０６は、ここでは例示の目的でＮＣＣ  ＰＯＰ１３８を選択するとして図示されているが、ネットワークコンピューティングプロバイダ１０６は、新たな遠隔セッションをインスタンス化するために、任意の現存するＮＣＣ  ＰＯＰを選択してもよい。例えば、単一のクライアントコンピューティングデバイス１０２は、同時または順次に遠隔セッション構成情報を、３つの異なる遠隔セッション要求に対応するネットワークコンピューティングプロバイダ１０６に提供し得る。ネットワークコンピューティングプロバイダ１０６は、各遠隔セッションをインスタンス化するために異なるＮＣＣ  ＰＯＰを選択するか、３つの遠隔セッションすべてに同一のＮＣＣ  ＰＯＰを選択するか、またはそれらの任意の組み合わせを選択してもよい。上述のように、以前または同時遠隔セッションに利用されたものとは異なるＮＣＣ  ＰＯＰを選択するかどうかの決定は、利用可能なシステムリソースに基づいて行われるか、ランダムに行われるか、または上で図２に関して論じられる任意の他の要因に従って行われてもよい。一実施形態において、サブプロセスの機能が新たな遠隔セッションによってＮＣＣ  ＰＯＰ１３８において行われているか、または行われる予定であるとき、クライアントコンピューティングデバイス１０２は、ローカルアプリケーション１２２内の新たなサブプロセスの１つ以上の態様の実行またはロードをブロックし得る。
【００２９】
図５を参照すると、遠隔セッション構成情報の決定およびネットワークコンピューティングプロバイダ１０６における新たな遠隔セッションのインスタンス化を示す図１のネットワークコンピューティング環境のブロック図が開示される。図２〜４に示されるように、１つ以上の遠隔セッションが、クライアントコンピューティングデバイス１０２上で実行するアプリケーション１２２に対応するネットワークコンピューティングプロバイダ１０６においてインスタンス化され得る。
【００３０】
一実施形態において、クライアントコンピューティングデバイス１０２は、クライアントコンピューティングデバイス１０２において実行する１つ以上のアプリケーション１２２または他の処理の操作をモニタリングし得る。例えば、クライアントコンピューティングデバイスは、メモリ使用、ネットワーク使用、プロセッサ使用等を監視し得る。クライアントコンピューティングデバイス１０２は、全体のリソース利用可能性を決定する、実行する処理を優先させる、オペレーティングシステム１０８の応答性を維持する等のために、任意の数の処理に対する集約性能およびコンピューティング要件をさらに監視し得る。そのモニタリングに基づいて、クライアントコンピューティングデバイス１０２は、遠隔実行のためにアプリケーション１２２のサブプロセスを識別し得る。特定の実施例として、クライアントコンピューティングデバイス１０２は、大量のシステムリソースを消費しており、遠隔セッションに容易に移動され得る、サブプロセス２等のローカルサブプロセスを識別してもよい。
【００３１】
遠隔セッションに移動され得るサブプロセスを識別することに続いて、クライアントコンピューティングデバイス１０２は、アプリケーションの遠隔セッション構成情報を更新し得る。図２〜４を参照して説明されるように、遠隔セッション構成情報は、識別されたサブプロセスに関する情報およびその識別されたサブプロセスに対応する新たな遠隔セッションの要求、ならびにクライアントコンピューティングデバイス１０２とネットワークコンピューティングプロバイダ１０６との間の情報のパッケージ化および伝送のための通信プロトコルを含んでよい。クライアントコンピューティングデバイス１０２は、更新された遠隔セッション構成情報および／または新たな遠隔セッションによって処理するための任意の初期プロセスデータをネットワークコンピューティングプロバイダ１０６に伝送し得る。
【００３２】
ネットワークコンピューティングプロバイダは、ＮＣＣ  ＰＯＰ１４４を選択し、アプリケーション１２２のサブプロセスに対応した、ＮＣＣ  ＰＯＰ１４４における新たな遠隔セッションのインスタンス化を引き起こし得る。図３を参照して上述のように、ネットワークコンピューティングプロバイダは、クライアントコンピューティングデバイス１０２またはアプリケーション１２２に関連する任意の他の遠隔セッションをホストしているものと同一であるか、または異なるＮＣＣ  ＰＯＰ１４４のいずれかを選択してもよい。一実施形態において、クライアントコンピューティングデバイス１０２は、サブプロセスの機能がＮＣＣ  ＰＯＰ１４４における遠隔セッションによって行われるとき、実行を中断するか、または以前にローカルであったサブプロセスの１つ以上の態様をメモリからアンロードしてもよい。
【００３３】
図６は、図１のクライアントコンピューティングデバイス１０２によって実現されるクライアントの新たな遠隔プロセスルーチンを示すフロー図である。クライアントの新たな遠隔セッションルーチン６００は、ブロック６０２において開始する。ブロック６０４において、クライアントコンピューティングデバイス１０２は、新たなソフトウェアアプリケーションプロセス１２２または他のソフトウェアプロセスをインスタンス化する要求を得る。一実施形態において、新たなソフトウェアアプリケーションプロセス１２２をインスタンス化する要求を得ることは、クライアントコンピューティングデバイス１０２におけるユーザによる要求または対話の結果であり得る。例えば、ユーザは、クライアントコンピューティングデバイス１０２上のアプリケーション１２２を開いてもよい。別の実施形態において、新たなソフトウェアプロセスをインスタンス化する要求を得ることは、クライアントコンピューティングデバイス１０２において実行する自動処理またはイベントの結果であり得る。新たなソフトウェアプロセスは、本明細書では例示の目的でアプリケーション１２２と称されるが、関連技術分野における熟練者であれば、オペレーティングシステム処理、サービス、デーモン、または任意の他のタイプのソフトウェアプロセスを含むがこれらに限定されない任意のソフトウェアプロセスがクライアントコンピューティングデバイス１０２上で実行可能であることを理解するであろう。クライアントコンピューティングデバイス１０２は、ここでは例示の目的でソフトウェアプロセス構成情報、遠隔セッション構成情報、および遠隔プロセスに関する情報の他の態様を決定することとして説明されているが、これらの決定の１つ以上は、ネットワークコンピューティングプロバイダ１０６および／または任意の他の第三者サービス、デバイス、もしくはエンティティによって行われてもよいことを理解すべきである。
【００３４】
新たなソフトウェアプロセスをインスタンス化する要求を得ることに続いて、クライアントコンピューティングデバイス１０２は、ブロック６０６において、アプリケーション１２２または他のソフトウェアプロセスに関連するソフトウェアプロセス構成情報を得てもよい。例示的に、ソフトウェアプロセス構成情報は、処理、メモリ、または帯域幅要件に関する情報、スレッドおよび実行スケジューリングに関する情報、データ、アプリケーションもしくはサブプロセスセキュリティに関する情報、アプリケーション実行履歴および／またはユーザ対話履歴もしくは動作に関する情報、あるいはアプリケーションに関する任意の他の情報を含むがこれらに限定されないアプリケーション１２２に関する任意の種類の情報を含んでよい。一実施形態において、ソフトウェアプロセス構成情報の１つ以上の態様は、アプリケーション開発者によって事前に定義され、ユーザ、オペレーティングシステム、もしくは他の第三者エンティティによって事前に定義されるか、または任意の他のソースから得られる、アプリケーションに関連するネットワークストレージ位置から得られるアプリケーションのストレージ位置において、アプリケーション１２２に関連するデータに含まれていてもよい。さらなる実施形態において、ソフトウェアプロセス構成情報の１つ以上の態様は、リソースの足跡、実行動作、または処理および／もしくは１つ以上のサブプロセスの任意の他の実行特徴に基づいて決定され得る。例示的に、処理実行データは、アプリケーションの実行のモニタリングおよび／または現在もしくは過去の観察、あるいはアプリケーション１２２とのユーザの対話に基づいて生成され得る。一実施形態において、アプリケーション１２２を実行する任意の数のデバイスからのデータは、処理実行データを得る、または決定するために、ネットワーク構成要素において集約されてもよい。例示的に、アプリケーションの複数のインスタンスからのデータを組み合わせることは、アプリケーション１２２の十分に定義された、または集約された特徴を提供する助けとなり得る。処理実行データは、アプリケーション１２２の１つ以上のインスタンスのモニタリングに基づき得る、および／または関連アプリケーション（例えば、アプリケーション１２２の同一、異なる、または類似のバージョン）の１つ以上のインスタンスのモニタリングに基づいてもよい。さらなる実施形態において、処理実行データは、観察されたリソース足跡もしくは予想されるリソース足跡、実行動作、または他の特徴に基づいて、アプリケーション開発者または第三者アプリケーションデータ提供者によって提供され得る。
【００３５】
ブロック６０８において、クライアントコンピューティングデバイス１０２は、アプリケーション１２２に関連する１つ以上のサブプロセスを識別する。一実施形態において、クライアントコンピューティングデバイス１０２は、ソフトウェアプロセス構成情報に含まれる情報に基づいて、サブプロセスを識別してもよい。例示的に、サブプロセスは、多数の論理的に関連する実行可能な命令からなり得る。例えば、アプリケーション１２２は、クライアントコンピューティングデバイス１０２において実行する任意の数のデバイス命令を含んでよい。サブプロセスは、アプリケーションの機能性の一態様を一緒に行うこれらのデバイス命令の論理的に関連する群からなり得る。一実施形態において、１つ以上のサブプロセスは、データを処理するために個別の機能を形成してもよく、したがって程度の多少はあるが、ソフトウェアアプリケーションプロセス１２２から分離可能であり得る。特定の例の目的で、グラフィック編集アプリケーションは、処理するために画像をメモリにロードし得る。ユーザは、メモリ内の画像に画像フィルタを適用するように要求し得る。一実施形態において、画像フィルタは、メモリ内の画像データを操作する一連の実行可能な命令等のサブプロセスからなり得る。一実施形態において、画像フィルタサブプロセスは、グラフィック編集アプリケーションを一緒に形成する１つ以上の他のサブプロセス（例えば、インターフェース構成要素管理、ファイル管理、他の画像またはデータ処理プロセス等）から論理的に分離され得る。
【００３６】
ブロック６０８において１つ以上のサブプロセスを識別することに続いて、クライアントコンピューティングデバイスは、ブロック６１０において遠隔セッション構成情報を決定し得る。例示的に、遠隔セッション構成情報は、例示的に、ネットワークコンピューティングプロバイダ１０６における遠隔セッションにおいて実行するために、ブロック６０８において識別されたサブプロセスの１つ以上を識別する情報を含む、遠隔セッション構成に対応し得る。一実施形態において、遠隔セッション構成情報は、遠隔セッションにおいて行われる１つ以上のサブプロセスの態様、ならびにクライアントコンピューティングデバイス１０２またはネットワークコンピューティングプロバイダ１０６において必要とされる任意のデータ変換インターフェースを定義し得る。例えば、遠隔セッションによって処理されるデータに対応するクライアントコンピューティングデバイス１０２によって受信された処理結果は、アプリケーション１２２に対して利用可能にするために、さらに処理され、変換され、および／またはメモリ、プロセッサレジスタ、キャッシュ、またはデータストレージ位置内の適切な位置に置かれる必要があり得る。以下に論じられるように、処理動作の分割は、ネットワークコンピューティングプロバイダ１０６とクライアントコンピューティングデバイス１０２との間のプロセスデータおよび処理結果の交換に使用される通信プロトコルと関連するか、または結びつけ得る。遠隔セッション構成情報は、予測される各遠隔セッションの予想されるコンピューティング要件、例えば、処理要件、メモリ要件、ネットワーク要件等に関する情報をさらに含み得る。例示的に、この情報は、ネットワークコンピューティングプロバイダ１０６が、各遠隔セッションをホストするために適切なＮＣＣ  ＰＯＰを選択することを可能にし得る。
【００３７】
遠隔セッション構成情報は、なおもさらに、クライアントコンピューティングデバイス１０２とネットワークコンピューティングプロバイダ１０６との間のデータのパッケージ化および伝送を定義する通信プロトコルに関する情報を含んでよく、限定されないが、クライアントコンピューティングデバイス１０２とネットワークコンピューティングプロバイダ１０６との間の状態データ、ユーザ対話、ならびに他のデータおよびコンテンツの交換のための、ネットワークプロトコル、シグナル伝達モデル、トランスポート機構、またはカプセル化形式を含み得る。データの交換のための通信プロトコルは、当該技術分野において既知の任意の通信プロトコルを含んでよく、限定されないが、ＨＴＴＰ、ＦＴＰ、遠隔デスクトッププロトコル（ＲＤＰ）、Ｘ−Ｗｉｎｄｏｗｓプロトコル、仮想ネットワークコンピューティング（ＶＮＣ）プロトコル、Ｘ−Ｗｉｎｄｏｗｓプロトコル、遠隔フレームバッファプロトコル、または任意の他の専用もしくは公的通信プロトコルを含み得る。例えば、ＲＤＰは、遠隔コンピューティングデバイスへの提供のために、クライアント入力（例えば、マウス移動、キーボード入力等）をプロトコルデータユニットにコードするための多数の処理機構、ならびにビットマップ更新および低レベルのインターフェース情報をクライアントデバイスに返送するための対応する機構を例示的に特定する。別の実施例として、ＨＴＭＬプロトコルは、例示的に、インターフェース情報を定義し、サーバからクライアントへのリソース参照を含有するファイルを提供するための機構、ならびにクライアントコンピューティングデバイスが、追加のファイルおよびリソース要求をサーバに提供するための対応する機構を提供する。
【００３８】
例示的に、遠隔セッション構成情報は、プロセスデータ、処理結果、およびクライアントコンピューティングデバイス１０２とネットワークコンピューティングプロバイダ１０６または他のデバイスとの間で伝送される他の情報の１つ以上のコード化またはデータ形式をさらに特定し得る。様々な実施形態において、データは、任意の数の形式で伝送されてもよく、限定されないが、１つ以上のコード化または圧縮形式、テキスト形式、コード形式、マークアップ形式（例えば、拡張マークアップ言語、ハイパーテキストマークアップ言語等）、データ交換形式（例えば、拡張マークアップ言語、ＪａｖａＳｃｒｉｐｔオブジェクト表記、データ交換形式）、実行可能なバイナリ形式、画像形式（例えば、ｊｐｅｇ、ｇｉｆ、ｔｉｆｆ、ビットマップ等）、ビデオ形式（例えば、ｍｐｅｇ、ａｖｉ、ｍｏｖ等）、オーディオ形式（例えば、ａｉｆｆ、ｍｐ３等）、または任意の他のバイナリ、ドキュメント、もしくは当該技術分野において既知の他のデータ形式を含み得る。例えば、一実施形態において、遠隔セッション構成情報は、テキスト形式で記憶されたソフトウェアコードが、プロセスデータとしてネットワークコンピューティングプロバイダ１０６に提供されること、およびネットワークコンピューティングプロバイダ１０６が、コンパイルされたソフトウェアコードに対応する実行可能なバイナリを含む処理結果をクライアントコンピューティングデバイス１０２に伝送することを特定し得る。
【００３９】
上述のように、遠隔セッション構成情報は、上記のブロック６０８において識別されたサブプロセスの１つ以上のための遠隔構成を特定し得る。例示的に、遠隔セッション構成情報は、サブプロセスがローカルに行われるか、全体的に遠隔で行われるか、またはローカルおよび遠隔処理の何らかの組み合わせで行われるかを特定し得る（例えば、処理の大部分はネットワークコンピューティングプロバイダ１０６で起こるが、クライアントコンピューティングデバイス１０２は、ローカル変換構成要素を実行して、受信された処理結果を変換および表示する）。一実施形態において、アプリケーション１２２の１つ以上のサブプロセスのための遠隔構成の決定は、クライアントコンピューティングデバイス１０２において、アプリケーション自体によって、オペレーティングシステムプロセスもしくはサービスによって、またはクライアントコンピューティングデバイスにおいて実行する任意の他のプロセスによって行われ得る。他の実施形態において、ネットワークコンピューティングプロバイダ１０６は、決定の遂行を行うか、またはそれを補助し得る。本明細書において例示の目的で説明されるように、クライアントコンピューティングデバイスは、アプリケーションの識別されたサブプロセスのための遠隔構成の決定を行うとして論じられるが、これは、代替実施形態に従って異なり得る。
【００４０】
クライアントコンピューティングデバイス１０２は、ブロック６０８において識別されたサブプロセスの１つ以上のための遠隔構成の決定を、アプリケーションデータの１つ以上の特徴、サブプロセスのコンピューティングプロファイル（例えば、メモリ使用、プロセッサ使用、ストレージ使用、ネットワーク使用）、クライアントコンピューティングデバイス１０２の１つ以上の特徴または構成、クライアントコンピューティングデバイスにおける現在のリソース使用、ネットワークコンピューティングプロバイダ１０６またはＮＣＣ  ＰＯＰ１３８の特徴、リソース使用、または構成、ネットワークまたはネットワーク接続の１つ以上の特徴、ユーザに関連する構成または選好、事前に定義された構成または選好等を含むがこれらに限定されない、任意の数の要素に基づいて行ってもよい。アプリケーションデータの特徴は、データ形式、コンテンツタイプ、サイズ、処理要件、リソース待ち時間要件、対話型要素の数またはタイプ、セキュリティリスク、関連するユーザ選好、ストレージ位置または遠隔ストレージネットワークアドレス、関連するネットワークドメイン、関連するコンテンツプロバイダ等を含み得るがこれらに限定されない。クライアントコンピューティングデバイス１０２、ネットワークコンピューティングプロバイダ１０６、ＮＣＣ  ＰＯＰ１３８、および他の関連するサービスまたはデバイスの特徴は、処理力、メモリ、ストレージ、ネットワーク接続性（例えば、利用可能な帯域幅、待ち時間、もしくは一貫性）、物理的もしくは論理的位置、予想される安定性もしくは障害のリスク、ソフトウェアもしくはハードウェアプロファイル、現在、過去、もしくは予想される未来の利用可能なリソース（例えば、利用可能なメモリもしくは処理、または同時に開いているソフトウェアアプリケーションの数）等を含み得るがこれらに限定されない。アプリケーション１２２の特徴は、事前に定義された遠隔構成（例えば、アプリケーション開発者、ユーザ、オペレーティングシステム、遠隔サービス等によって定義された遠隔構成）、アプリケーションの対話性、アプリケーション１２２の過去、現在、もしくは予想されるリソース使用、アプリケーション１２２のサイズおよび／または複雑性、アプリケーション１２２に関連するコードの配布に関するライセンシングもしくは著作権問題等を含み得るがこれらに限定されない。
【００４１】
クライアントコンピューティングデバイス１０２は、コンテンツもしくはドメインの一部に関連する認知されたセキュリティ脅威もしくはリスク、クライアントコンピューティングデバイス１０２またはネットワークコンピューティングプロバイダ１０６の選好、コンピューティングコスト（例えば、処理もしくは帯域幅、リソース使用の費用等）、事前に決定された選好もしくは選択情報、特定の遠隔セッションにより必要とされる任意の追加の処理にかかる諸経費、キャッシュステータス（例えば、特定のリソースが、ＮＣＣ  ＰＯＰ１３８において、クライアントコンピューティングデバイス１０２において、もしくはネットワークコンピューティングプロバイダ１０６に関連する他のネットワークストレージ構成要素においてキャッシュされるかどうか）、アプリケーションコードを検索し読み込むか、またはデータを処理するために必要な予測される遅延もしくは時間、特定の遠隔セッションもしくはサービスレベルに好ましいネットワークコンピューティングプロバイダまたはネットワークコンピューティングプロバイダとの合意、アプリケーション、ユーザ、クライアントコンピューティングデバイス、もしくはネットワークコンピューティングプロバイダに関連する遠隔セッションが現在アクティブであるかどうか、または任意の他の要素をさらに考慮し得る。
【００４２】
いくつかの実施形態において、クライアントコンピューティングデバイス１０２は、特定のサブプロセスのための遠隔セッションの決定を過去の動作もしくは実施に基づいて行い得る。例えば、過去に特定のサブプロセスのための遠隔構成を決定したクライアントコンピューティングデバイス１０２は、アプリケーションが同一（または場合によっては異なる）ユーザによってロードされるとき、同一の遠隔構成を自動的に選択してもよい。別の実施例として、広範囲の処理を必要とする様態でアプリケーションの利用履歴を有するユーザは、遠隔セッションにおけるサブプロセスの大部分を行うことを特定する、遠隔プロセス構成情報の決定を引き起こし得る。他の実施形態において、クライアントコンピューティングデバイス１０２は、将来の行動予測に基づいて遠隔プロセス構成情報の決定を行い得る。例えば、クライアントコンピューティングデバイス１０２は、特定のアプリケーションのために行われた過去の決定の分析に基づいてその遠隔プロセス構成情報の決定を行い得る。履歴上大量のコンピューティングリソースを必要としたアプリケーションにおけるサブプロセスは、ネットワークコンピューティングプロバイダ１０６において、遠隔セッション内で部分的または全体的に行われてもよい。例示的に、過去の履歴分析および将来の予測は、遠隔プロセス構成情報が基づく多数の要因の１つ以上として見なされ得るか、または決定処理において決定的であり得る。例示的に、上記の図５を参照して説明されたように、クライアントコンピューティングデバイスは、アプリケーションが作動すると、アプリケーション処理およびリソースの使用をモニタリングし得、任意の時点で更新された遠隔プロセス構成情報を再決定し得る。例示的に、この更新された遠隔プロセス構成情報は、サブプロセスもしくはサブプロセスの態様をローカル実行から遠隔セッションに、遠隔セッションからローカル実行に、またはそれらの任意の組み合わせに移動させてもよい。
【００４３】
他の実施形態において、アプリケーションコンテンツ、アプリケーション、またはアプリケーションに関連する情報の一部は、リソースタグ、メタデータ、または他の形態で、特定のサブプロセスの遠隔処理または特定の遠隔プロセス構成情報の使用を特定するか、あるいは要求し得る。クライアントコンピューティングデバイス１０２は、その要求を決定的なものとして扱い得るか、またはその要求を決定処理において考慮される複数の要因の１つとして考慮し得る。
【００４４】
例示的に、クライアントコンピューティングデバイス１０２は、任意の要因もしくは要因の組み合わせに基づいて、遠隔セッション構成情報の決定を行ってもよい。例えば、クライアントコンピューティングデバイス１０２は、単一の要因に基づいて遠隔セッション構成情報を決定し得るか、または決定を行う際に１つ以上の要因に重みを割り当ててもよい。いくつかの実施形態において、クライアントコンピューティングデバイス１０２の決定処理は、上記の１つ以上の要因に基づいて変更してもよい。例えば、余剰の未使用帯域幅を有するネットワーク上でネットワークコンピューティングプロバイダ１０６と通信しているクライアントコンピューティングデバイス１０２は、遠隔セッションのネットワーク要件等の要因に低い重みを付与し、アプリケーションとのユーザ対話の待ち時間等の要因により高い重みを付与し得る。別の実施形態において、制限された帯幅域ネットワークまたは中間ネットワーク接続性上でネットワークコンピューティングプロバイダ１０６と通信するクライアントコンピューティングデバイス１０２は、ネットワーク上で遠隔セッションとの通信の効率性を扱う要因により高い重みを付与し得る。例示的に、遠隔セッション構成情報の任意の１つ以上の態様または部分は、クライアントコンピューティングデバイス１０２、ネットワークコンピューティングプロバイダ１０６、代替コンピューティングデバイス、および／または任意の他のデバイス、構成要素、もしくはエンティティによって決定され得る。遠隔セッション構成情報の決定は、クライアントコンピューティングデバイス１０２、ネットワークコンピューティングプロバイダ１０６、代替コンピューティングデバイス、および／または任意の他のデバイス、構成要素、もしくはエンティティの任意の組み合わせから受信された、得られた、もしくは収集されたデータに全体的または部分的に基づき得る。
【００４５】
ブロック６１２において、クライアントコンピューティングデバイス１０２は、遠隔セッション構成情報によってローカル構成要素またはサブプロセスとして識別された任意の構成要素をインスタンス化してもよい。クライアントコンピューティングデバイス１０２は、遠隔セッションによって戻された処理結果の処理、変換、および／または表示に必要とされるデータ変換もしくは表示インターフェース等の任意のローカル構成要素をさらにインスタンス化し得る。特定の実施例として、遠隔セッション構成は、アプリケーションのユーザインターフェースおよび関連処理をローカルサブプロセスとして識別していてもよく、またアプリケーションのコンテンツ表示枠内の画像表示および処理を遠隔サブプロセスであると識別していてもよい。この実施例に従うと、クライアントコンピューティングデバイス１０２は、インターフェース構成要素オブジェクトおよびアプリケーションに関連する関連コードをクライアントコンピューティングデバイスにおいてメモリにロードし得る。この実施例を続けると、クライアントコンピューティングデバイス１０２は、ロードされたローカルオブジェクトおよびコードにリンクされたデータ変換インターフェースまたは構成要素をさらにロードし得る。データ変換インターフェースまたは構成要素は、画像の表現に対応するＲＤＰ表示データ等のネットワークコンピューティングプロバイダ１０６から受信された処理結果の処理および表示を操作し得る。
【００４６】
ブロック６１４において、クライアントコンピューティングデバイス１０２は、遠隔セッション構成情報をネットワークコンピューティングプロバイダ１０６に提供し得る。クライアントコンピューティングデバイス１０２はまた、初期プロセスデータをネットワークコンピューティングプロバイダ１０６に提供し得る。例示的な実施形態において、ネットワークコンピューティングプロバイダ１０６は、登録ＡＰＩを利用して、遠隔セッション構成情報をクライアントコンピューティングデバイス１０２から受信する。
【００４７】
ブロック６１０および６１２を参照して上述のように、遠隔セッション構成情報は、遠隔セッションとして処理するために１つ以上のアプリケーションサブプロセスを識別し得る。一実施形態において、遠隔セッション構成情報は、ネットワークコンピューティングプロバイダ１０６における実行のための識別されたサブプロセスの１つ以上の態様に対応する実行可能なコードを含んでよい。別の実施形態において、遠隔セッション構成情報は、遠隔プロセスとして実行するための識別されたサブプロセスに関連する実行可能なコードに対する１つ以上の参照を含んでよい。例えば、ネットワークコンピューティングプロバイダ１０６は、ローカルまたはネットワークストレージ構成要素内のクライアントコンピューティングデバイス１０２において作動しているアプリケーションのコピーを有してもよい。この実施例において、遠隔セッション構成情報は、遠隔セッションと関連するアプリケーション内のサブプロセスの参照または識別（例えば、一式の命令および／またはオブジェクト）を提供し得る。別の実施形態において、遠隔セッション構成情報は、ネットワークコンピューティングプロバイダ１０６において遠隔セッションをインスタンス化する際に使用するためのサブプロセスに対応する、実行可能なコード、オブジェクト、および／またはデータの実際のコピーを含み得る。
【００４８】
特定の一実施形態において、ネットワークコンピューティングプロバイダ１０６は、アプリケーションのフルインスタンスのＮＣＣ  ＰＯＰ１３８においてインスタンス化を引き起こし得る。例えば、ネットワークコンピューティングプロバイダ１０６は、クライアントコンピューティングデバイス１０２において実行するアプリケーションと並列して作動するためにアプリケーションをインスタンス化し得る。別の実施形態において、ネットワークコンピューティングプロバイダ１０６は、１つ以上の遠隔セッションをインスタンス化および実行してもよく、それぞれがクライアントコンピューティングデバイスにおいて実行するアプリケーションのサブプロセスに対応する。
【００４９】
ネットワークコンピューティングプロバイダ１０６に提供された遠隔セッション構成情報は、ネットワークコンピューティングプロバイダ１０６においてインスタンス化された１つ以上の遠隔セッションにおける処理のために、初期プロセスデータを伴うか、またはそれが続き得る。例示的に、初期プロセスデータは、一式のデータ、データに対する１つ以上の参照、またはそれらの任意の組み合わせを含んでよい。例えば、クライアントコンピューティングデバイス１０２におけるアプリケーションは、特定の画像を編集するユーザからの要求に応答してロードされ得る。特定の実施例の目的で、アプリケーションに関連する遠隔セッション構成情報が、ネットワークコンピューティングプロバイダ１０６における遠隔セッション内で実行するために、アプリケーションの画像操作サブプロセスを特定することを想定する。例示的に、遠隔セッションは、その上で作動する特定画像のコピーを必要とし得る。一実施形態において、画像がクライアントコンピューティングデバイス１０２においてローカルに記憶される場合、クライアントコンピューティングデバイス１０２は、画像のコピーを含む一式のデータを初期プロセスデータとしてクライアントコンピューティングおよびストレージプロバイダに伝送し得る。例示的に、様々な実施形態において、クライアントコンピューティングデバイスは、ネットワークコンピューティングプロバイダ１０６におけるＡＰＩに従って、または遠隔セッション構成情報内で特定された１つ以上の通信プロトコルに従って画像を伝送し得る。
【００５０】
上記の特定の実施例を続けると、別の実施形態において、画像が遠隔ストレージ場所、例えば、ネットワークコンピューティングプロバイダ１０６と関連するか、またはアクセス可能なストレージ構成要素において記憶されることを想定することができ、クライアントコンピューティングデバイス１０２は、ネットワークコンピューティングプロバイダ１０６に、ネットワークアドレスおよび／または他の情報を含む初期プロセスデータを提供し、それによってネットワークコンピューティングプロバイダ１０６は、画像を得る、および／またはロードすることが可能になり得る。一実施形態において、画像は、クライアントコンピューティングデバイス１０２においてローカルに記憶され、かつ１つ以上のネットワークストレージ構成要素においてキャッシュまたはミラーされ得る。例示的に、この実施形態に関して、クライアントコンピューティングデバイス１０２は、キャッシュおよび／またはチェックサムもしくはハッシュ内に記憶された画像に対する参照を送信して、キャッシュされた画像が最新または適切なコピーであったかどうかを決定することができる。例示的に、キャッシュされた画像がその画像の最新版ではなかった場合、ネットワークコンピューティングプロバイダ１０６は、古い画像をキャッシュから得るのではなく、新しい画像をクライアントコンピューティングデバイス１０２から要求することができる。
【００５１】
様々な実施形態において、クライアントコンピューティングデバイス１０２からネットワークコンピューティングプロバイダ１０６に、データへの参照を提供するか、または実際のデータを提供するかどうかの決定は、クライアントコンピューティングデバイス１０２、ネットワークコンピューティングプロバイダ１０６、または任意の他のデバイスもしくは構成要素によって行われてもよい。例示的に、データへの参照を提供するか、または実際のデータを提供するかどうかの決定は、単独または組み合わせの多数の要因に基づき得る。そのような要因としては、限定されないが、デバイスとデータストアまたはデータを記憶するネットワーク構成要素との間の接続性または接続性の１つ以上の特徴、データの特徴、コンピューティングデバイス１０２、ネットワークコンピューティングプロバイダ１０６、または他のデバイス間の接続の特徴、コンピューティングデバイス１０２、ネットワークコンピューティングプロバイダ１０６、または他のデバイスにおけるリソース使用等が挙げられる。例えば、クライアントコンピューティングデバイス１０２が、単に断続的な通信ネットワーク接続性を有すると想定する。ネットワークコンピューティングデバイス１０６は、接続性が得られるとき、または接続性の喪失を予測して、実際のデータのコピーを受信しようとし得る。データは、任意の共有もしくはローカルストア、ネットワーク構成要素、またはネットワークコンピューティングプロバイダ１０６、クライアントコンピューティングデバイス１０２、または任意の他のデバイス、エンティティ、もしくは構成要素に関連する他のデータストアにおいて記憶され得る。
【００５２】
遠隔セッション構成情報および初期プロセスデータを提供することに続いて、ネットワークコンピューティングプロバイダ１０６は、アプリケーションのサブプロセスに対応する１つ以上の遠隔セッションをインスタンス化し得る。例示のサーバ側の新たな遠隔セッションルーチンが、図７を参照して以下でさらに詳述される。
【００５３】
ブロック６１６において、クライアントコンピューティングデバイス１０２は、プロセスデータおよび処理結果をネットワークコンピューティングプロバイダ１０６における遠隔セッションと交換し得る。例示的に、ネットワークコンピューティングプロバイダ１０６は、処理結果を、遠隔セッションによって処理されたプロセスデータの結果に対応する、クライアントコンピューティングデバイス１０２に提供し得る。例示的に、処理結果は、当該技術分野において既知の任意の形態または形式でクライアントコンピューティングデバイス１０２に提供されてもよい。一実施形態において、処理結果の形態は、遠隔セッション構成情報内の遠隔セッションのために決定された通信プロトコルによって決定され得る。
【００５４】
例えば、グラフィックス処理アプリケーションに関連する遠隔セッション構成情報は、表示用の大きな画像を含む一式のデータの処理を行うサブプロセスに対応する遠隔セッションが、処理結果をクライアントコンピューティングデバイス１０２に伝送するために、ＲＤＰプロトコルを利用することを特定し得る。例示的に、処理結果は、クライアントコンピューティングデバイスにおいて表示される画像の一部または解像度のみに対応し得るため、全体画像が必要な場合よりも迅速に伝送され得る。別の実施形態において、データベースビューアーアプリケーションに関連する遠隔セッション構成情報は、多数のデータベーステーブルを戻す検索の実行を行うサブプロセスに対応する遠隔セッションが、ＦＴＰプロトコル上の圧縮されたカンマ区切り値（ＣＳＶ）からなる処理結果の伝送を特定し得ることを特定し得る。上記のように、処理結果は、クライアントコンピューティングデバイスにおいて表示される一式のデータの一部のみに対応し得るため、戻された全結果の小さなサブセクションのみを含んでよい。例示的に、スクロールダウンしてさらに結果を見るというクライアントコンピューティングデバイス１０２におけるユーザからの要求は、表示される追加の結果に対応するクライアントコンピューティングデバイス１０２に送信される処理結果を更新させる。例示的に、処理される一式のデータのサブセットに対応する処理結果を戻すことのみによって、クライアントコンピューティングデバイス１０２が、完全なデータセットを管理する必要なく、メモリまたは他のコンピューティングリソースを保存することを可能にし得る。
【００５５】
一実施形態において、ネットワークコンピューティングプロバイダ１０６は、安全なデータまたはプライベートデータを含む一式のデータに関連する処理結果を提供し得る。例示的に、安全なデータまたはプライベートデータは、安全でないクライアントコンピューティングデバイス１０２における未承認の配布または格納を防ぐために、ネットワークコンピューティングプロバイダ１０６において記憶され得る。例示的に、処理結果は、要求されたデータの非機密の態様の表現のみに対応し得、ネットワークコンピューティングプロバイダ１０６は、安全なデータまたはプライベートデータの表現を送信しないか、または安全なデータまたはプライベートデータの制限された表現を送信し得る。
【００５６】
特定の実施例として、一実施形態において、処理結果は、アプリケーション１２２に関連するインターフェースまたはアプリケーションコンテンツに対応する表示データを含んでよい。例えば、ＮＣＣ  ＰＯＰ１３８は、遠隔セッションにおいて作動しているアプリケーションの並列インスタンス内のプロセスデータを処理し得、アプリケーションの並列インスタンスの表示されたコンテンツまたはインターフェースを含む処理結果を生成して、遠隔デスクトッププロトコル（ＲＤＰ）等の通信プロトコルを介してクライアントコンピューティングデバイス１０２に送信し得る。一実施形態において、ＮＣＣ  ＰＯＰ１３８は、アプリケーション内のインターフェースおよびコンテンツのレイアウトおよび表示に対応するＲＤＰ処理結果を送信し得る。別の実施形態において、ＮＣＣ  ＰＯＰ１３８は、アプリケーションに関連するインターフェース要素のいずれかを用いず、任意の表示されるアプリケーションコンテンツのみを含むＲＤＰ処理結果を送信し得る。例示的に、表示されたアプリケーションコンテンツのみに対応するＲＤＰ処理結果を含むことは、クライアントコンピューティングインスタンス１０２におけるアプリケーションが、任意のさらなる処理なしにアプリケーションのコンテンツ表示領域内のＲＤＰ処理結果を組み立てることによってコンテンツを表示することを可能にし得る。
【００５７】
クライアントコンピューティングデバイス１０２は、１つ以上の遠隔セッションによって提供された処理結果を得てもよく、データ変換サービスもしくは構成要素または他の手段を通じて、処理結果をアプリケーション１２２に提供し得る。一実施形態において、クライアントコンピューティングデバイス１０２において実行するアプリケーション１２２は、遠隔セッション処理のために特定的に書き込まれるか、または構成されてもよく、プロセスデータに関連する処理結果の処理、変換、および表示を行うために、１つ以上の構成要素を有してもよい。例えば、遠隔セッション処理のために書かれたグラフィックスアプリケーションは、画像ファイルの表現に対応するネットワークコンピューティングプロバイダ１０６からのＲＤＰ処理結果を受け入れて、画像の前記表現によってアプリケーション１２２内のコンテンツ表示枠を更新する、構成要素を有し得る。別の実施形態において、クライアントコンピューティングデバイス１０２において実行するアプリケーション１２２は、遠隔セッション処理のために書かれていない場合があり、クライアントコンピューティングデバイス１０２は、アプリケーション１２２のための処理結果を得て、その処理結果処理して情報を抽出して、その抽出された情報を適切なメモリ位置、キャッシュ位置、レジスタ、またはアプリケーション１２２に関連するストレージ位置に配置してもよい。アプリケーション１２２の観点から、したがって処理結果は、クライアントコンピューティングデバイスにおいてローカルに実行するスレッドまたは他のサブプロセスによって生成されたように見える場合がある。
【００５８】
クライアントコンピューティングデバイス１０２はさらに、追加のプロセスデータをネットワークコンピューティングプロバイダ１０６における遠隔セッションに提供し得る。一実施形態において、データをネットワークコンピューティングプロバイダ１０６に提供することは、上のブロック６１４を参照して論じられたように、データ、参照等を提供することを含む。例えば、様々な実施形態において、クライアントコンピューティングデバイス１０２は、ファイル、ユーザ対話データ、オペレーティングシステムもしくは論理オブジェクト構造、変数データ、バイナリもしくは構造化アプリケーションデータ、または遠隔セッションにおいて処理するためのデータの任意の他の種類もしくは形式を含む、データまたはデータへの参照を提供し得る。例示的に、１つ以上の遠隔セッションは、このデータを処理し、処理結果を上記のように戻し得る。
【００５９】
データおよび処理結果の交換は、ネットワークコンピューティングプロバイダ１０６における遠隔セッションが終了するか、アプリケーション１２２が閉じられるか、またはネットワークコンピューティングプロバイダ１０６とクライアントコンピューティングデバイス１０２との間の接続が妨害されるまで継続し得る。ルーチン６００は、ブロック６１８において終了する。
【００６０】
図７は、図１のネットワークコンピューティングプロバイダ１０６によって実現される新たな遠隔セッションルーチン７００を示すフロー図である。新たな遠隔セッションルーチン７００は、ブロック７０２において開始する。ブロック７０４において、ネットワークコンピューティングプロバイダ１０６は、遠隔セッション構成情報をクライアントコンピューティングデバイス１０２から得る。図６を参照して上述のように、一実施形態において、遠隔セッション構成情報は、遠隔セッションがインスタンス化されるべきクライアントコンピューティングデバイス１０２において実行するアプリケーションの１つ以上のサブプロセスを識別および／または説明し得る。例示的に、遠隔セッション構成情報は、遠隔セッションにより処理するための初期プロセスデータを伴い得る。
【００６１】
ブロック７０６において、ネットワークコンピューティングプロバイダ１０６は、遠隔セッション構成情報に基づいて、新たな遠隔セッションをインスタンス化するために、関連するＮＣＣ  ＰＯＰを選択してもよい。図１を参照して上述のように、ネットワークコンピューティングプロバイダ１０６は、任意の数の物理的または論理的位置全体に分配された任意の数のＮＣＣ  ＰＯＰを含んでよい。ネットワークコンピューティングプロバイダ１０６は、利用可能なＮＣＣ  ＰＯＰリソース（例えば、利用可能なメモリ、プロセッサロード、ネットワークロード等）、ＮＣＣ  ＰＯＰにおいて遠隔セッションをホストする費用、クライアントコンピューティングデバイス１０２に対するＮＣＣ  ＰＯＰ一、ＮＣＣ  ＰＯＰキャッシュ状態（例えば、アプリケーションインスタンス、アプリケーションデータ、または別のリソースが、ＮＣＣ  ＰＯＰキャッシュ内に既に記憶されているかどうか）等を含むがこれらに限定されない任意の数の要素に基づいて遠隔セッションをホストするために、ＮＣＣ  ＰＯＰを選択してもよい。
【００６２】
一実施形態において、ネットワークコンピューティングプロバイダ１０６は、遠隔セッションをホストするために、ある数のＮＣＣ  ＰＯＰを選択してもよい。例えば、ネットワークコンピューティングプロバイダ１０６は、ネットワーク内に異なる論理位置を有する２つのＮＣＣ  ＰＯＰを選択してもよい。各ＮＣＣ  ＰＯＰは、独立して、クライアントコンピューティングデバイス１０２の代わりに遠隔セッションをインスタンス化してもよく、クライアントコンピューティングデバイス１０２は、第１のＮＣＣ  ＰＯＰからデータを受け入れて処理結果を戻し得る。ネットワークコンピューティングプロバイダ１０６によって選択されることに続いて、ＮＣＣ  ＰＯＰ１３８は、ホストするために遠隔セッションに関連する遠隔セッション構成情報の１つ以上の態様、ならびに任意の関連する初期プロセスデータを得てもよい。一実施形態において、ＮＣＣ  ＰＯＰ１３８は、ネットワークコンピューティングプロバイダ１０６の構成要素によって転送された遠隔セッション構成情報を有してもよい。別の実施形態において、ＮＣＣ  ＰＯＰ１３８またはクライアントコンピューティングデバイス１０２は、ＮＣＣ  ＰＯＰ１３８とクライアントコンピューティングデバイス１０２との間の直接通信の確立を可能にする接続情報を受信し得る。例示的に、ＮＣＣ  ＰＯＰ１３８には、ネットワークコンピューティングプロバイダ１０６に本来提供される遠隔セッション構成情報および／または初期プロセスデータが提供され得るか、情報のサブセット（例えば、遠隔セッション要求に対応するアプリケーションの特定のサブプロセスを説明する情報のみ）が提供され得るか、または元の遠隔セッション構成情報に含まれていない追加の情報が提供され得る。
【００６３】
ブロック７０８において、ＮＣＣ  ＰＯＰ１３８が選択されることに続いて、ネットワークコンピューティングプロバイダ１０６は、ＮＣＣ  ＰＯＰ１３８に新たな遠隔セッションをインスタンス化させ得る。例示的に、新たな遠隔セッションのインスタンス化は、ＮＣＣ  ＰＯＰ１３８において新たな仮想マシンインスタンスおよび／またはアプリケーションインスタンスをロードすることと、デバイスメモリ、ストレージもしくはキャッシュスペース、プロセッサ時間、ネットワーク帯域幅、または新たな遠隔セッションのための他のコンピューティングもしくはネットワークリソースを確保すること、または割り当てることと、を含んでよい。例示的に、新たな遠隔セッションの１つ以上の特徴は、遠隔セッション構成情報に含まれる情報に基づき得る。例えば、遠隔セッション構成情報は、実行可能なコードおよび／または実行可能なコードへの参照、その実行可能なコードによって処理するための１つ以上のオブジェクトもしくはオブジェクトモデル、データ変換および／または処理のためのフレームワークもしくはフレームワークの識別、クライアントコンピューティングデバイスタイプもしくはアプリケーションタイプ、デバイスオペレーティングシステム、デバイススクリーン解像度もしくは表示領域、アプリケーション構成情報もしくは設定、および／またはアプリケーション１２２の処理、選好、もしくは能力を定義する任意の他の情報、アプリケーションサブプロセス、あるいはクライアントコンピューティングデバイス１０２を含み得る。
【００６４】
一実施形態において、ＮＣＣ  ＰＯＰ１３８は、アプリケーション１２２と同一または類似の能力を持つアプリケーションインスタンスをインスタンス化し得る。例示的に、アプリケーション１２２と同一または類似の能力を持つ並列アプリケーションを維持することは、ＮＣＣ  ＰＯＰ１３８が、特定のクライアントコンピューティングデバイス１０２上で作動する特定のアプリケーション１２２の全文脈内のプロセスデータを処理することを可能にし得る。さらなる実施形態において、ＮＣＣ  ＰＯＰ１３８は、コンピューティングデバイス１０２と同一または類似の能力を持つ仮想マシンインスタンスをインスタンス化し得る。例示的に、クライアントコンピューティングデバイス１０２と同一または類似の能力を持つ仮想マシンインスタンスを維持することは、ＮＣＣ  ＰＯＰ１３８が、特定のクライアントコンピューティングデバイス１０２上の表示に適切な寸法およびレイアウトに従ってプロセスデータを処理することを可能にし得る。
【００６５】
いくつかの実施形態において、ＮＣＣ  ＰＯＰ１３８は、新たな遠隔セッションをインスタンス化することに加えて、またはその代替として、既存の仮想マシンインスタンスおよび／もしくはアプリケーション、または遠隔セッションインスタンスを利用してもよい。例えば、ＮＣＣ  ＰＯＰ１３８が選択されることに続いて、ネットワークコンピューティングプロバイダ１０６は、ＮＣＣ  ＰＯＰ１３８に、遠隔セッションの既存のインスタンス（例えば、アプリケーション１２２のサブプロセスに対応する既存の遠隔セッションもしくはアプリケーション１２２の既存の並列インスタンス）、および／または仮想マシンインスタンス（例えば、ＮＣＣ  ＰＯＰ１３８において以前にインスタンス化された１つ以上のインスタンス）を遠隔セッション構成情報内の遠隔セッション要求と関連付けさせ得る。例示的に、既存の遠隔セッションおよび／または仮想マシンインスタンスは、別の遠隔セッション、例えば、アプリケーションおよびクライアントコンピューティングデバイス１０２もしくはユーザと関連する、並列アプリケーションまたは他の遠隔サブルーチンに対応し得るか、または異なるクライアントコンピューティングデバイス、ユーザ、またはアプリケーションインスタンスに関連する以前にインスタンス化された遠隔セッションであり得る。他の実施形態において、ＮＣＣ  ＰＯＰ１３８は、既存の仮想マシンインスタンス内で新たな遠隔セッションまたは他のアプリケーションプロセスをインスタンス化し得るか、または以前にインスタンス化されたソフトウェアプロセスおよび新たにインスタンス化されたソフトウェアプロセスを任意の数の他の方法で組み合わせてもよい。なおも更なる実施形態において、ネットワークコンピューティングプロバイダまたはＮＣＣ  ＰＯＰ１３８は、遠隔セッション構成情報において定義される谷津のサブルーチンに基づいて、任意の数の新たな仮想マシンインスタンスおよび／または遠隔セッションをインスタンス化し得る（または既存のインスタンス化されたインスタンスを利用する）。
【００６６】
ブロック７１０において、ネットワークコンピューティングプロバイダ１０６は、上記のブロック７０４において、またはそれに続いて任意の初期プロセスデータを処理し得る。当業者であれば、様々な実施形態において、プロセスデータ（例えば、ファイルデータ、アプリケーション、またはオペレーティングシステムオブジェクト、変数値等）が、クライアントコンピューティングデバイス１０２によって提供された生のバイナリデータ、圧縮または暗号化されたデータ、デジタルファイルロッカーもしくは他のネットワークストレージ位置またはネットワークコンピューティングプロバイダ１０６もしくはクライアントコンピューティングデバイス１０２に関連するキャッシュ構成要素において記憶されるデータ等に対応し得ることを理解するであろう。例示的に、ネットワークコンピューティングプロバイダ１０６は、プロセスデータ内に含まれる任意の参照に基づいて、リソース要求をコンテンツの１つ以上のソース、例えば、コンテンツプロバイダ、コンテンツデリバリネットワーク（ＣＤＮ）サービスプロバイダ、およびキャッシュに提供し得る。
【００６７】
引き続きブロック７１０について、ネットワークコンピューティングプロバイダ１０６は、初期プロセスデータを処理して、クライアントコンピューティングデバイス１０２に提供するための処理結果を生成してもよい。上述のように、一実施形態において、ＮＣＣ  ＰＯＰ１３８における遠隔セッションは、アプリケーションのサブプロセスに関連する実行可能なコードを含んでよい。例示的に、遠隔セッションに対応する実行可能なコードがアプリケーションのコードの一部からなる場合、ＮＣＣ  ＰＯＰ１３８は、コードをそこで実行する実行環境またはテストハーネスをインスタンス化し得る。例示的に、実行環境をインスタンス化することは、遠隔インスタンスに関連する仮想マシンインスタンスのメモリまたはデバイスメモリに１つ以上のオブジェクトまたは変数をロードすることを含み得る。例えば、画像を処理するためにサブプロセスに対応するコードの一部をインスタンス化するＮＣＣ  ＰＯＰ１３８は、サブプロセスによって使用されるであろう任意の変数をロードするとともに、画像ファイルをメモリ内にロードしてもよく、さらに特別なメモリまたはストレージ位置を初期化して、コード実行の結果を捕捉してもよい。遠隔セッション内で実行するサブプロセスの観点から、コードが、クライアントコンピューティングデバイス１０２におけるアプリケーション内で正常に実行しているかのように見える場合がある。
【００６８】
一実施形態において、ネットワークコンピューティングプロバイダ１０６はさらに、クライアントコンピューティングデバイス１０２において作動するアプリケーションインスタンスと順次、または同時に並列アプリケーションプロセスを含む遠隔セッションをインスタンス化し得る。例示的に、並列アプリケーションは、クライアントコンピューティングデバイスにおいて実行するアプリケーションに加えて、任意の数のＮＣＣ  ＰＯＰにおける遠隔セッション内にロードされてもよい。各遠隔セッションは、任意の他の遠隔セッションと同一または異なるアプリケーションコードの態様または範囲をインスタンス化してもよく、各遠隔セッションは、任意の他の遠隔セッションと同一または異なる通信プロトコルを利用し得る。ＮＣＣ  ＰＯＰ１３８に提供されるプロセスデータは、クライアントコンピューティングデバイスにおいてアプリケーションのインスタンスとやりとりするユーザからのユーザ対話データ、およびアプリケーションの操作を並列して維持するために必要な任意の他のシステム、アプリケーション、またはデバイスイベント実行および処理を含んでよい。例示的に、並列アプリケーションを維持することは、実行するコードの断片のための特別な実行またはテストハーネスの要件なしに、ＮＣＣ  ＰＯＰ１３８におけるアプリケーション機能性の実行および処理を可能にし得る。
【００６９】
一実施形態において、遠隔プロセス構成情報による遠隔実行のために識別されたサブプロセスは、ＮＣＣ  ＰＯＰ１３８において正常に実行しながら、クライアントコンピューティングデバイス１０２で実行する並列アプリケーションインスタンスにおいて中断またはアンロードされ得る。並列アプリケーションがＮＣＣ  ＰＯＰ１３８においてサブプロセス処理の態様を完了することに続いて、処理結果が、クライアントコンピューティングデバイスにおける並列アプリケーションに提供されてもよく、並列インスタンスは、並列実行で進行し得る。いくつかの実施形態において、クライアントコンピューティングデバイス１０２においてサブプロセスを中断またはアンロードすること、およびＮＣＣ  ＰＯＰ１３８から処理結果を待つことは、クライアントコンピューティングデバイス１０２が、そのクライアントコンピューティングデバイス１０２における処理にコンピューティングリソースを投じることを回避するのを可能にする。さらなる実施形態において、クライアントコンピューティングデバイス１０２における並列アプリケーションインスタンスは、ＮＣＣ  ＰＯＰ１３８上の遠隔セッションにおけるサブプロセスの実行と並列でサブプロセス実行に関連する処理を行ってもよい。例示的に、クライアントコンピューティングデバイス１０２は、サブプロセスに関する一式の結果を生成するとともに、ＮＣＣ  ＰＯＰ１３８からのサブプロセスの結果に対応する処理結果を受信し得る。様々な実施形態において、クライアントは、この結果の複製を利用して、処理結果の正確性をチェックし得るか、または（例えば、ローカルサブプロセスから、または遠隔セッションを並列で実行する任意の数のＮＣＣ  ＰＯＰの１つから）第１の結果を受け入れて返送し、速度の遅いプロセスのさらなる実行をキャンセルし得る。例示的に、プロセスを並列で実行すること、および第１の結果を受け入れて返送することは、クライアントコンピューティングデバイス１０２が可能な限り速くユーザに結果を提供することを保証し得る。
【００７０】
図３を参照して上述のように、ＮＣＣ  ＰＯＰ１３８において実行する遠隔セッションは、クライアントコンピューティングデバイス１０２からプロセスデータを直接得てもよい。他の実施形態において、プロセスデータは、遠隔セッション構成情報に応答して、コンテンツプロバイダ、ＣＤＮ、またはキャッシュからＮＣＣ  ＰＯＰ１３８によって検索読み出されてもよい。クライアントコンピューティングデバイス１０２によって提供されるプロセスデータは、遠隔セッションに関連するデータまたはコンテンツをすべて含み得るか、またはコンテンツプロバイダもしくはＣＤＮから検索読み出されるか、またはいくつかの他のソースから得られたＮＣＣ  ＰＯＰ１３８のキャッシュ内に存在するコンテンツを補足し得る。一実施形態において、ＮＣＣ  ＰＯＰ１３８は、ローカルキャッシュから要求されたすべてのコンテンツを得てもよく、クライアントコンピューティングデバイス１０２から任意の未処理のリソースまたはコンテンツを得なくてもよい。例示的に、ＮＣＣ  ＰＯＰ１３８は、処理が必要とされる毎にクライアントコンピューティングデバイス１０２からプロセスデータを得るか、または処理するためのアプリケーションデータおよび／またはコンテンツの並列セットを維持し得る。
【００７１】
図７を引き続き参照して、ブロック７０２において、ネットワークコンピューティングプロバイダ１０６は、さらなる処理および表示のために、初期処理結果をクライアントコンピューティングデバイス１０２に提供してもよい。ブロック７１４において、ネットワークコンピューティングプロバイダは、データおよび処理結果をクライアントと交換し続けてもよい。さらなる実施例の目的で、クライアントコンピューティングデバイス１０２によって実現される例示の遠隔セッションユーザ対話ルーチン８００が、図８を参照して以下に説明される。ブロック７１６において、新たな遠隔セッションルーチン７００は終了する。
【００７２】
例示的に、一実施形態において、ネットワークコンピューティングプロバイダ１０６によって行われる、本明細書に記載される機能性の１つ以上の態様は、任意の他のコンピューティングデバイスまたは一式のコンピューティングデバイスによって行われてもよい。例えば、一実施形態において、ネットワークコンピューティングプロバイダ１０６によって行われるとして本明細書に記載される機能性は、クライアントコンピューティングデバイス１０２のユーザまたは任意の他のユーザもしくはエンティティに関連する１つ以上のコンピューティングデバイス（例えば、パーソナルコンピュータ、タブレット、スマートフォン等）によって行われてもよい。一実施形態において、１つ以上のコンピューティングデバイスは、クライアントコンピューティングデバイス１０２に対して物理的または論理的にローカルであり得る。１つ以上のコンピューティングデバイスは、有線もしくは無線接続上の広域もしくはローカルエリアネットワークによってリンクされ得るか、またはＢｌｕｅｔｏｏｔｈ、赤外線等を含む任意の数の伝送機構もしくは通信プロトコルによってリンクされてもよい。例えば、一実施形態において、スマートフォン等のクライアントコンピューティングデバイス１０２は、Ｂｌｕｅｔｏｏｔｈ上の側近のパーソナルコンピュータ等の第２のコンピューティングデバイスに遠隔セッション構成情報を提供してもよい。遠隔構成情報に基づいて、第２のコンピューティングデバイスは、クライアントコンピューティングデバイス１０２上で作動するアプリケーションの様々なサブプロセスに対応する１つ以上の遠隔セッションをインスタンス化してもよく、上述のネットワークコンピューティングプロバイダ１０６と同一の方法で処理結果をクライアントコンピューティングデバイス１０２に戻してもよい。例示的に、ローカルマシン上で遠隔セッションをインスタンス化することは、ローカルデバイスの処理力のみを利用するだけでしつつ、ネットワークコンピューティングプロバイダ１０６上の遠隔処理の利益の多くを可能にし得る。一実施形態において、クライアントコンピューティングデバイス１０２は、第１の遠隔セッション構成情報を代替コンピューティングデバイスに提供して、代替コンピューティングデバイスに、アプリケーション１２２の第１のサブプロセスに対応する第１の遠隔セッションをインスタンス化させてもよく、さらに第２の遠隔セッション構成情報をネットワークコンピューティングプロバイダ１０６に提供して、ネットワークコンピューティングプロバイダ１０６に、アプリケーション１２２の第２のサブプロセスに対応する第２の遠隔セッションをインスタンス化し得る。例示的に、任意の数の代替コンピューティングデバイスまたはネットワークコンピューティングプロバイダ１０６は、クライアントコンピューティングデバイス１０２において実行するアプリケーション１２２の１つ以上のサブプロセスに関連する遠隔セッションをインスタンス化し得る。
【００７３】
なおもさらなる実施形態において、クライアントコンピューティングデバイス１０２は、ある条件が真である場合、パーソナルコンピュータ等のローカルデバイスが、アプリケーションの特定のサブプロセスのための遠隔セッションをインスタンス化するのみであることを遠隔セッション構成情報内で特定し得る。条件が満たされない場合、ローカルデバイスは、遠隔セッションをインスタンス化しない場合があり、および／または遠隔セッション構成情報をネットワークコンピューティングプロバイダ１０６に渡し、ネットワークコンピューティングプロバイダ１０６が遠隔セッションを代わりに、または追加としてインスタンス化することを要求し得る。例示的に、遠隔セッションインスタンス化の再振り向けのレベルには任意の数があり得る。例えば、遠隔セッション構成情報は、ある第１の条件が満たされる場合、第１のローカルデバイスが遠隔セッションをインスタンス化することを特定し、そうでなければ、ある第２の条件が満たされる場合、第２のローカルデバイスが遠隔セッションをインスタンス化することを特定し、そうでなければ、ネットワークコンピューティングプロバイダ１０６が遠隔セッションをインスタンス化することを特定し得る。別の実施形態において、遠隔セッション構成情報は、第１のネットワークコンピューティングプロバイダ１０６が遠隔セッションをインスタンス化することを特定し、そうでなければ第２のネットワークコンピューティングプロバイダが遠隔セッションをインスタンス化すること等を特定し得る。なおもさらなる実施形態において、１つ以上のデバイスまたは１つ以上のネットワークコンピューティングプロバイダ１０６は、遠隔セッションを並列でインスタンス化し得る。例えば、クライアントコンピューティングデバイス１０２は、遠隔セッション構成情報を代替コンピューティングデバイスおよびネットワークコンピューティングプロバイダ１０６に提供し得る。例示的に、遠隔セッション構成情報は、代替コンピューティングデバイスおよびネットワークコンピューティングプロバイダ１０６の両方に、アプリケーション１２２の同一のサブプロセスに関連する遠隔セッションをインスタンス化し得る。一実施形態において、代替コンピューティングデバイス１０２およびネットワークコンピューティングプロバイダ１０６はいずれもサブプロセスに関連する命令を処理してもよく、いずれも処理結果をクライアントコンピューティングデバイスに提供し得る。クライアントコンピューティングデバイスは、提供される第１の処理結果を受け入れ得るか、または事前に定義された、もしくは動的に決定された選好に基づいて特定の処理結果を受け入れ得る。
【００７４】
別のデバイスまたはネットワークコンピューティングプロバイダに向けられる（すなわち、アプリケーションのサブプロセスのための遠隔セッションのインスタンス化に関する要求または情報を渡す）命令は、本明細書において、クライアントコンピューティングデバイス１０２によって生成された遠隔セッション構成データに含まれると記載されるが、代替デバイスまたはネットワークコンピューティングプロバイダ１０６に向ける決定は、上述のように、任意の数のデバイスまたはネットワークコンピューティングプロバイダによって動的に決定されてもよく、命令は、遠隔セッション構成情報内に含まれる、もしくは添付され得るか、または任意の他の手段によって他のデバイスまたはネットワークコンピューティングプロバイダにコードされる、および／または渡されてもよいことを理解されたい。
【００７５】
図８は、クライアントコンピューティングデバイス１０２によって実現される遠隔セッションユーザ対話ルーチン８００を示すフロー図である。遠隔セッションユーザ対話ルーチン８００は、ブロック８０２において開始する。例示的に、遠隔セッションユーザ対話ルーチン８００は、ＮＣＣ  ＰＯＰ１３８における新たな遠隔セッションのインスタンス化に続いて開始し得る。例えば、処理ユーザ対話ルーチン８００は、上記の図７のブロック７１４に対応し得る。
【００７６】
例示的に、クライアントコンピューティングデバイス１０２におけるアプリケーションは、１つ以上の対話型要素、例えば、フォーム、ボタン、アニメーション等を有してもよい。これらの対話型要素とのユーザ対話は、１つ以上のサブプロセスによるデータの処理および表示を必要とし得る。例えば、アプリケーション内のドロップダウンメニューにおいて要素を選択することは、処理を必要とし得、アプリケーションの構成または外観を変更し得る。他の実施形態において、処理は、任意の他のシステムもしくはアプリケーションイベント、または他のトリガによって必要とされ得る。例えば、アプリケーションにおけるデータ処理サブプロセスの完了が、データフォーマット化の実行をトリガしてサブプロセスを表示し得る。例示的に、かつ図６および７を参照して上述のように、処理は、クライアントコンピューティングデバイス１０２においてローカルに行われ得るか、または遠隔セッション構成情報に応じて、ＮＣＣ  ＰＯＰ１３８において実行する遠隔セッションとして行われ得る。例えば、遠隔セッション構成情報が相当なローカル処理を特定する場合、様々なユーザ対話および他の処理が、クライアントコンピューティングデバイス１０２においてローカルに行われてもよい。例示的に、ユーザ対話をクライアントコンピューティングデバイス１０２においてローカルに行うことは、場合によっては、より良好な応答性およびより少ない遅延を可能にする。例えば、対話に対応するプロセスデータは、処理のためにＮＣＣ  ＰＯＰ１３８に送信される必要がないため、単純なユーザ対話は（例えば、ラジオボタンの選択、またはフィールドへのテキスト入力）、より迅速に実行し得る。
【００７７】
さらなる実施例として、遠隔セッション構成情報が、コンテンツの大量の遠隔処理を特定する場合、表示されたコンテンツとのすべてのユーザ対話は、様々なＮＣＣ  ＰＯＰ上でインスタンス化された１つ以上の遠隔セッションにおいて、遠隔ユーザ対話として行われてもよい。例えば、一実施形態において、図７を参照して上述のように、ＮＣＣ  ＰＯＰ１３８は、クライアントコンピューティングデバイス１０２において実行するアプリケーション１２２の並列インスタンスを含む遠隔セッションを実行していてもよい。例示的に、ユーザ入力（例えば、キーボード入力およびカーソル位置）は、ＲＤＰプロトコルデータユニットにカプセル化され、ＮＣＣ  ＰＯＰ１３８での遠隔セッションにおいてネットワーク１０４を通じて並列アプリケーションに伝送され得る。例示的に、ＮＣＣ  ＰＯＰ１３８は、ユーザ対話を並列アプリケーションに適用し、更新されたビットマップ、ならびにアプリケーションおよびアプリケーションコンテンツの更新された表現に対応するインターフェースデータからなる処理結果をクライアントコンピューティングデバイス１０２に伝送し得る。例示的に、アプリケーションとのユーザ対話をＮＣＣ  ＰＯＰ１３８において遠隔に処理することは、データがネットワーク上を通過することが必要とされ、ネットワーク待ち時間によって制限されるため、インターフェースの応答性に悪影響を及ぼし得るが、ＮＣＣ  ＰＯＰ１３８の処理待ち時間が、相当量の処理を必要とする処理は、遠隔ユーザ対話として処理されるとき、クライアントコンピューティングデバイス１０２の処理待ち時間よりも実質的に短い場合があるため、より良好に機能し得る。
【００７８】
ブロック８０４において、クライアントコンピューティングデバイス１０２は、サブプロセスイベントを得る。例示的に、サブプロセスイベントは、任意のシステムもしくはユーザ対話、アプリケーションもしくはシステムイベントもしくはトリガ、またはアプリケーション１２２のサブプロセスの１つ以上の態様の実行を引き起こす他のタイプのデータを含み得る。このイベントは、上記のように、ローカルインターフェース構成要素またはコンテンツとの対話を含み得るか、またはアプリケーションもしくはオペレーティングシステムの別のサブプロセスによって生成されたイベントであり得る。サブプロセスによるこのイベントの処理は、構成要素もしくは要素の性質、および図６および７ならびに上に説明される遠隔セッション構成情報によって特定された処理分割に応じてローカルおよび／または遠隔処理を必要とし得る。ブロック８０６において、クライアントコンピューティングデバイス１０２は、サブプロセスの対話処理要件を決定する（例えば、遠隔セッション構成情報に基づいて）。
【００７９】
決定ブロック８０８において、サブプロセスが全面的にローカルで処理されるべきであるか、またはローカルに処理されるべき任意の態様を有する場合（例えば、単純なインターフェースフィードバック、遠隔セッションに提供するためのプロセスデータの準備等）、ルーチン８００は、ブロック８１０に移動してクライアントコンピューティングデバイス１０２におけるサブプロセスのローカルの態様（複数可）を処理する。例示的に、また上述のように、インターフェース構成要素および他の要素をローカルに更新する等の態様の処理は、アプリケーションが応答性の良いユーザインターフェースおよびコンテンツを提供することを可能にし得る。サブプロセスの任意のローカル態様（複数可）を処理することに続いて、またはサブプロセスがローカル要素を有しない場合（例えば、処理結果のビットマップを受信および表示するためにＲＤＰ通信プロトコルを利用するアプリケーション）、ルーチン８００は、決定ブロック８１２に移動する。サブプロセスが全面的に遠隔プロセスされるべきであるか、または処理を必要とする遠隔態様を有するとき、ルーチン８００はブロック８１４に移動して、プロセスデータをネットワークコンピューティングプロバイダ１０６に提供する。一実施形態において、大量のサーバ側の遠隔セッションの構成情報の場合、プロセスデータは、入力データ、カーソル位置、またはキーボード入力等のユーザ対話データを含んでもよい（例えば、ＲＤＰまたは類似のプロトコルにカプセル化される）。いくつかの実施形態において、カーソル位置等の遠隔ユーザ対話データを含むプロセスデータは、ネットワークコンピューティングプロバイダ１０６に順次に提供され得るが、他の実施形態では、遠隔ユーザ対話データを含むプロセスデータは、特定のイベントまたはサブプロセス実行に関連するときに、ネットワークコンピューティングプロバイダ１０６に提供され得るのみである。
【００８０】
ブロック８１６において、クライアントコンピューティングデバイス１０２は、ネットワークコンピューティングプロバイダ１０６からの更新された処理結果を得るが、ネットワークコンピューティングプロバイダ１０６は、任意の提供されたプロセスデータを処理している。ブロック８１８において、クライアントコンピューティングデバイス１０２は、ブロック８１０において行われた処理結果および／またはローカル処理に必要とされる任意の追加の処理を行う（例えば、遠隔セッション構成情報に基づいて）。一実施形態において、これは、アプリケーション１２２のフローに再統合するために処理結果を変換または準備することを含み得る。ブロック８２０において、処理ユーザ対話ルーチン８００が終了する。例示的に、ルーチンは、アプリケーション１２２の１つ以上のサブプロセスの実行をトリガするさらなるイベントに応答して、任意の回数だけ再度実行され得る。
【００８１】
例示的に、ネットワークコンピューティングプロバイダ１０６によってインスタンス化された遠隔セッションは、アプリケーションまたはアプリケーションの態様が、閉じられるか、または終了されたときに終了し得るか、遠隔セッションは、クライアントコンピューティングデバイス１０２において実行するサブプロセスと置き換えられるときに終了し得るか（例えば、更新された遠隔プロセス構成情報が、以前の遠隔プロセスがローカルに行われるべきであることを特定する場合）、またはタイマーもしくは他のイベントに従って終了し得る。例示的に、遠隔セッションを終了する決定は、クライアントコンピューティングデバイス１０２、ネットワークコンピューティングプロバイダ１０６、ＮＣＣ  ＰＯＰ１３８、または任意のそれらの組み合わせによって行われ得る。一実施形態において、遠隔セッションがタイムアウトのために自動的に終了したが、依然としてアプリケーションインスタンスがクライアントコンピューティングデバイス１０２において持続している場合（例えば、ユーザがアプリケーションとの対話を停止したため、プロセスデータが遠隔セッションに送信されなくなった場合）、後にユーザがコンテンツと対話しようとすると、終了されたセッションの最後の状態に従って、ネットワークコンピューティングプロバイダ１０６によってインスタンス化される新たな遠隔セッションを引き起こし得る。例示的に、タイムアウト後の遠隔セッションの終了は、ネットワークコンピューティングストレージプロバイダ１０６がＮＣＣ  ＰＯＰにおいてコンピューティングリソースを節約することを可能にする。一実施形態において、この処理は、遠隔セッションが中断期間に終了されているが、クライアントコンピューティングデバイス１０２におけるアプリケーション１２２および／またはユーザに対して透過的であり得る。
【００８２】
さらなる実施形態において、ネットワークコンピューティングプロバイダ１０６は、クライアントコンピューティングデバイス１０２とネットワークコンピューティングプロバイダ１０６との間の接続が喪失した後（例えば、アプリケーション１２２がクライアントコンピューティングデバイス１０２において終了したか、またはクライアントコンピューティングデバイス１０２がネットワーク接続性を喪失した場合）であっても、アプリケーション１２２に関連するアプリケーションおよび／またはシステム状態を維持し得る。例示的に、クライアントコンピューティングデバイス１０２においてアプリケーション１２２の第２のインスタンスを開始することは、アプリケーションをネットワークコンピューティングプロバイダ１０６に接続させ、アプリケーションの最後の状態に関連する状態データおよび／または処理結果を得て（本明細書では「アプリケーションコンテキスト」と称され得る）、それが最後に中止された場所からローカル／遠隔実行を再開し得る。例示的に、ネットワークコンピューティングプロバイダからの状態データおよび／または処理結果の検索読み出しは、以前のアプリケーションセッションからシームレス連続性の経験をユーザに提供し得る。
【００８３】
なおもさらなる実施形態において、ネットワークコンピューティングプロバイダ１０６は、クライアントコンピューティングデバイス１０２において実行するアプリケーション１２２とネットワークコンピューティングプロバイダ１０６との間の接続が喪失した後であっても、アプリケーション１２２に関連するデータまたは実行命令を処理し続けてもよい。例えば、アプリケーション１２２の複雑またはリソース集約的なサブプロセスは、ネットワークコンピューティングプロバイダ１０６において、クライアントコンピューティングデバイス１０２でのユーザによって開始され得る。この実施例の目的で、ネットワークコンピューティングプロバイダ１０６においてサブプロセスを開始することに続いて、ユーザは、クライアントコンピューティングデバイス１０２をパワーダウンするか、クライアントコンピューティングデバイス１０２において実行するアプリケーション１２２のインスタンスを終了するか、またはネットワークコンピューティングプロバイダ１０６とのネットワーク接続を喪失し得る。ネットワークコンピューティングプロバイダ１０６は、クライアントコンピューティングデバイス１０２におけるアプリケーション１２２と、ネットワークコンピューティングプロバイダ１０６との間の接続がアクティブでなくなった後でさえも、サブプロセスに関連する処理を実行し続け得る。この実施例において、ユーザが後次の時点でアプリケーション１２２を使用するために戻ったとき、クライアントコンピューティングデバイス１０２は、ネットワークコンピューティングプロバイダ１０６に接続して、アプリケーション１２２がネットワークコンピューティングプロバイダ１０６と通信していない間に処理された任意の処理結果を得てもよい。アプリケーション１２２は、クライアントコンピューティングデバイス１０２において、任意のさらなる処理を行い、これらの結果をユーザに表示し得る。例示的に、クライアントコンピューティングデバイス１０２と通信していない間にネットワークコンピューティングプロバイダ１０６において結果を処理することは、クライアントコンピューティングデバイス１０２におけるユーザが、クライアントコンピューティングデバイス１０２を継続して処理するか、またはアプリケーション１２２を実行するか、またはネットワークコンピューティングプロバイダ１０６との一定の通信を維持する必要なく、コンピューティング上複雑または集約的な処理を開始し、後の時点で結果を読み出すことを可能にする。
【００８４】
様々な他の実施形態において、複数のアプリケーションコンテキストが、アプリケーションとのユーザ対話の過去の状態または期間に対応するネットワークコンピューティングプロバイダ１０６において維持され得る。したがって、特定のアプリケーションコンテキストが、過去のアプリケーションコンテキストからの作業を継続するために、ロードされるアプリケーションのインスタンスに続いて、ユーザまたはクライアントコンピューティングデバイス１０２により選択され得る。例えば、ユーザは、１つ以上の過去の状態の選択を容易にするグラフィックインターフェースとともに提示され得る。なおもさらに、別の実施形態において、ユーザは、並列（または実質的に並列）分岐を可能にする過去のアプリケーションコンテキストから対話を形成することができる。
【００８５】
特に本開示の様々な実施形態のいくつかは、以下の付記によって説明することができる。
付記１．遠隔実行管理のためのコンピュータで実現される方法であって、
ソフトウェアプロセスインスタンスを初期化することと、
ソフトウェアプロセスインスタンスに関連するソフトウェアプロセス構成情報を得ることであって、ソフトウェアプロセス構成情報が、ソフトウェアプロセスインスタンスの１つ以上のサブプロセスを識別し、ソフトウェアプロセスインスタンスの１つ以上のサブプロセスのそれぞれが、複数の実行可能な命令を含む、得ることと、
ソフトウェアプロセス構成情報に少なくとも部分的に基づいて、ソフトウェアプロセスインスタンスのための遠隔プロセス構成を決定することであって、遠隔プロセス構成が、ネットワークコンピューティングプロバイダにおける遠隔操作のためのソフトウェアプロセスインスタンスの１つ以上のサブプロセスのサブプロセスを識別し、遠隔プロセス構成が、データ交換のための通信プロトコルを識別する、決定することと、
通信プロトコルに従って処理するためにプロセスデータをネットワークコンピューティングプロバイダに提供することであって、プロセスデータが、ソフトウェアプロセスインスタンスに関連する一式のデータ、およびネットワークコンピューティングプロバイダにおいて行われるサブプロセスに関連する１つ以上の実行可能な命令を含む、提供することと、
通信プロトコルに従ってネットワークコンピューティングプロバイダから１つ以上の処理結果を得ることであって、１つ以上の処理結果が、１つ以上の実行可能な命令の実行を含む、ネットワークコンピューティングおよびストレージ構成要素におけるプロセスデータの処理の結果に対応する、得ることと、
ソフトウェアプロセスインスタンスによって使用するために、得られた１つ以上の処理結果を処理することと、
を含む、コンピュータで実現される方法。
付記２．通信プロトコルが、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、ファイル転送プロトコル（ＦＴＰ）、リモートデスクトッププロトコル（ＲＤＰ）、バーチャルネットワークコンピューティング（ＶＮＣ）プロトコル、Ｘ−Ｗｉｎｄｏｗｓプロトコル、およびリモートフレームバッファプロトコルの少なくとも１つを含む、付記１に記載のコンピュータで実現される方法。
付記３．ソフトウェアプロセスインスタンスのための遠隔プロセス構成を決定することが、ソフトウェアプロセスインスタンスに関連するデータの特徴、ソフトウェアプロセスインスタンスのコンピューティングプロファイル、ソフトウェアプロセスインスタンスのサブプロセスのコンピューティングプロファイル、ソフトウェアプロセスインスタンスメモリ使用、ソフトウェアプロセスインスタンスプロセッサ使用、ソフトウェアプロセスインスタンスデータストア使用、ソフトウェアプロセスインスタンスネットワーク使用、クライアントコンピューティングデバイスの特徴、ネットワークコンピューティングプロバイダの特徴、クライアントコンピューティングデバイスの構成、クライアントコンピューティングデバイスにおける現在のリソース使用、ネットワークコンピューティングプロバイダにおける現在のリソース使用、ネットワーク接続の特徴、ユーザに関連する選好、または事前に定義された構成に基づいて、遠隔プロセス構成を決定することを含む、付記１に記載のコンピュータで実現される方法。
付記４．遠隔プロセス実行のためのシステムであって、
１つ以上のコンピュータプロセッサと、
１つ以上のコンピュータプロセッサの少なくとも１つによってアクセス可能な少なくとも１つのコンピュータメモリと、
１つ以上のコンピュータプロセッサによって実行される実行可能なソフトウェアモジュールを含む遠隔実行管理構成要素と、を備え、遠隔実行管理構成要素が、
ソフトウェアプロセスインスタンスのための遠隔プロセス構成を決定することであって、遠隔プロセス構成が、遠隔操作のためのソフトウェアプロセスインスタンスの少なくとも１つのサブプロセスを識別する、決定することと、
ソフトウェアプロセスインスタンスの少なくとも１つのサブプロセスに関連するプロセスデータをネットワークコンピューティングプロバイダに提供することであって、プロセスデータが、ソフトウェアプロセスインスタンスの少なくとも１つのサブプロセスに関連するデータ、およびソフトウェアプロセスインスタンスの少なくとも１つのサブプロセスに関連する複数の命令の少なくとも１つを少なくとも識別する、提供することと、
ネットワークコンピューティングプロバイダから１つ以上の処理結果を得ることであって、１つ以上の処理結果が、ネットワークコンピューティングプロバイダにおいて複数の命令の１つ以上の実行と関連する、得ることと、
ソフトウェアプロセスインスタンスに従って、得られた１つ以上の処理結果を処理することと、
を行うように動作可能である、システム。
付記５．遠隔プロセス構成が、ネットワークコンピューティングおよびストレージ構成要素とのデータの交換のための通信プロトコルを識別する、付記４に記載のシステム。
付記６．プロセスデータおよび１つ以上の処理結果の少なくとも１つが、テキスト、拡張マークアップ言語（ＸＭＬ）、ハイパーテキストマークアップ言語（ＨＴＭＬ）、ＪａｖａＳｃｒｉｐｔオブジェクト表記（ＪＳＯＮ）、実行可能なバイナリ、圧縮フォーマット、暗号化フォーマット、ソフトウェアコードフォーマット、画像フォーマット、ビデオフォーマット、およびオーディオフォーマットの少なくとも１つを含むフォーマットでコードされる、付記５に記載のシステム。
付記７．クライアントコンピューティングデバイスが、プロセスデータをネットワークコンピューティングプロバイダに提供し、１つ以上の処理結果を、ネットワーク接続によりネットワークコンピューティングプロバイダから得る、付記４に記載のシステム。
付記８．ネットワーク接続が断続的である、付記７に記載のシステム。
付記９．少なくとも１つのサブプロセスが、第１のサブプロセスと、第２のサブプロセスと、を含む、付記４に記載のシステム。
付記１０．第１のサブプロセスが、第１の通信プロトコルに関連し、第２のサブプロセスが、第２の通信プロトコルに関連する、付記９に記載のシステム。
付記１１．プロセスデータが、ソフトウェアプロセスインスタンスに関連する一式のデータを含む、付記４に記載のシステム。
付記１２．１つ以上の処理結果が、少なくともソフトウェアプロセスインスタンスに関連する一式のデータの表現に対応する、付記１１に記載のシステム。
付記１３．遠隔実行管理構成要素が、一式のデータの表現を表示させるようにさらに動作可能である、付記１２に記載のシステム。
付記１４．一式のデータの表現が、一式のデータの一部を含む、付記１３に記載のシステム。
付記１５．遠隔実行管理構成要素が、ソフトウェアプロセス実行データに少なくとも部分的に基づいて、ソフトウェアプロセスインスタンスのための遠隔プロセス構成を決定するようにさらに動作可能である、付記４に記載のシステム。
付記１６．ソフトウェアプロセス実行データが、ソフトウェアプロセスインスタンスの実行のモニタリングに基づく、付記１５に記載のシステム。
付記１７．ソフトウェアプロセス実行データが、１つ以上の第三者コンピューティングデバイスにおけるソフトウェアプロセスインスタンスに関する１つ以上のソフトウェアプロセスの実行のモニタリングに基づく、付記１６に記載のシステム。
付記１８．遠隔実行管理構成要素が、ソフトウェアプロセス実行データに基づいて、ネットワークコンピューティングプロバイダにおける遠隔実行のためのソフトウェアプロセスインスタンスのサブプロセスを識別するようにさらに動作可能である、付記１５に記載のシステム。
付記１９．遠隔実行管理構成要素が、ソフトウェアプロセス実行データに基づいて、通信プロトコルをソフトウェアプロセスインスタンスのサブプロセスと関連付けるようにさらに動作可能である、付記１５に記載のシステム。
付記２０．遠隔プロセス構成が、ネットワークコンピューティングプロバイダから得られた情報に基づく、付記４に記載のシステム。
付記２１．遠隔プロセス実行のためのコンピュータで実現される方法であって、
ソフトウェアプロセスインスタンスを初期化することと、
ソフトウェアプロセスインスタンスのための遠隔プロセス構成を決定することであって、遠隔プロセス構成が、遠隔操作のためのソフトウェアプロセスインスタンスの少なくとも１つのサブプロセスを識別する、決定することと、
プロセスデータをネットワークコンピューティングプロバイダに提供することであって、プロセスデータが、少なくとも１つのサブプロセスに関連するデータ、および少なくとも１つのサブプロセスに関連する複数の実行可能なデバイス命令の少なくとも１つを識別する、提供することと、
ネットワークコンピューティングプロバイダから１つ以上の処理結果を得ることであって、１つ以上の処理結果が、少なくとも１つのサブプロセスに関連する複数の実行可能なデバイス命令の１つ以上の実行と関連する、得ることと、
ソフトウェアプロセスインスタンスに従って得られた１つ以上の処理結果を処理することと、
を含む、コンピュータで実現される方法。
付記２２．クライアントコンピューティングデバイスが、プロセスデータをネットワークコンピューティングプロバイダに提供し、１つ以上の処理結果を、ネットワーク接続によってでネットワークコンピューティングプロバイダから得る、付記２１に記載のコンピュータで実現される方法。
付記２３．プロセスデータが、ソフトウェアプロセスインスタンスに関連する一式のデータを含む、付記２１に記載のコンピュータで実現される方法。
付記２４．１つ以上の処理結果が、少なくともソフトウェアプロセスインスタンスに関連する一式のデータの表現に対応する、付記２３に記載のコンピュータで実現される方法。
付記２５．ソフトウェアプロセスインスタンスに従って得られた１つ以上の処理結果を処理することが、一式のデータの表現の表示を引き起こすことを含む、付記２４に記載のコンピュータで実現される方法。
付記２６．一式のデータの表現が、一式のデータの一部を含む、付記２５に記載のコンピュータで実現される方法。
付記２７．
クライアントコンピューティングデバイスにおいてソフトウェアプロセスインスタンスを終了することと、
クライアントコンピューティングデバイスにおいて第２のソフトウェアプロセスインスタンスを初期化することと、
ネットワークコンピューティングプロバイダから１つ以上の処理結果を得ることであって、１つ以上の処理結果が、クライアントコンピューティングデバイスにおける終了前にソフトウェアプロセスインスタンスの最終状態と関連することと、
をさらに含む、付記２１に記載のコンピュータで実現される方法。
付記２８．ネットワークコンピューティングプロバイダから１つ以上の処理結果を得ることが、クライアントコンピューティングデバイスとネットワークコンピューティングプロバイダとの間の制限されたネットワーク接続性に基づく、付記２７に記載のコンピュータで実現される方法。
付記２９．クライアントコンピューティングデバイスにおいてソフトウェアプロセスインスタンスを終了させることをさらに含み、１つ以上の処理結果をネットワークコンピューティングプロバイダから得ることが、ソフトウェアプロセスインスタンスの終了前に１つ以上の処理結果を得ることをさらに含む、付記２７に記載のコンピュータで実現される方法。
付記３０．処理するために第２のプロセスデータを第１のコンピューティングデバイスに提供することをさらに含み、第２のプロセスデータが、第１のコンピューティングデバイスにおいて行われる少なくとも１つのサブプロセスに関連する第２の複数の実行可能な命令を識別する、付記２１に記載のコンピュータで実現される方法。
付記３１．コンピューティングデバイスに関連するコンピューティングリソース利用に基づいて、プロセスデータを第１のコンピューティングデバイスに提供するか、またはネットワークコンピューティングプロバイダに提供するかどうかを決定することをさらに含む、付記３０に記載のコンピュータで実現される方法。
付記３２．遠隔実行管理のためのコンピュータで実現される方法であって、
クライアントコンピューティングデバイスによって、ソフトウェアプロセスインスタンスを初期化することと、
クライアントコンピューティングデバイスによって、ソフトウェアプロセスインスタンスに関連するソフトウェアプロセス構成情報を得ることであって、ソフトウェアプロセス構成情報が、ソフトウェアプロセスインスタンスの１つ以上のサブプロセスを識別し、ソフトウェアプロセスインスタンスの１つ以上のサブプロセスのそれぞれが、複数の実行可能な命令を含む、得ることと、
クライアントコンピューティングデバイスによって、ソフトウェアプロセス構成情報に少なくとも部分的に基づいて、ソフトウェアプロセスインスタンスのための遠隔プロセス構成を決定することであって、遠隔プロセス構成が、代替コンピューティングデバイスにおける実行のためにソフトウェアプロセスインスタンスの１つ以上のサブプロセスのサブプロセスを識別し、遠隔プロセス構成が、データの交換のための通信プロトコルを識別する、決定することと、
クライアントコンピューティングデバイスによって、通信プロトコルに従って処理するために、プロセスデータを代替コンピューティングデバイスに提供することであって、プロセスデータが、ソフトウェアプロセスインスタンスに関連する一式のデータ、および代替コンピューティングデバイスにおいて実行されるサブプロセスに関連する１つ以上の実行可能な命令を含む、提供することと、
クライアントコンピューティングデバイスにおいて、通信プロトコルに従って代替コンピューティングデバイスから１つ以上の処理結果を得ることであって、１つ以上の処理結果は、１つ以上の実行可能な命令の実行を含む、代替コンピューティングデバイスにおけるプロセスデータの処理の結果に対応する、得ることと、
クライアントコンピューティングデバイスによって、ソフトウェアプロセスインスタンスによって使用するための得られた１つ以上の処理結果を処理することと、
を含む、コンピュータで実現される方法。
付記３３．通信プロトコルが、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、ファイル転送プロトコル（ＦＴＰ）、リモートデスクトッププロトコル（ＲＤＰ）、Ｘ−Ｗｉｎｄｏｗｓプロトコル、バーチャルネットワークコンピューティング（ＶＮＣ）プロトコル、Ｘ−Ｗｉｎｄｏｗｓプロトコル、およびリモートフレームバッファプロトコルの少なくとも１つを含む、付記３２に記載のコンピュータで実現される方法。
付記３４．ソフトウェアプロセスインスタンスのための遠隔プロセス構成を決定することが、ソフトウェアプロセスインスタンスに関連するデータの特徴、ソフトウェアプロセスインスタンスのコンピューティングプロファイル、ソフトウェアプロセスインスタンスのサブプロセスのコンピューティングプロファイル、ソフトウェアプロセスインスタンスネットワーク使用要件、クライアントコンピューティングデバイスの特徴、代替コンピューティングデバイスの特徴、クライアントコンピューティングデバイスの構成、クライアントコンピューティングデバイスにおけるリソース使用可能性、代替コンピューティングデバイスにおけるリソース利用可能性、ネットワーク接続の特徴、ユーザに関連する選好、または事前に定義された構成の少なくとも１つに基づいて、遠隔プロセス構成を決定することを含む、付記３２に記載のコンピュータで実現される方法。
付記３５．代替コンピューティングデバイスが、パーソナルコンピュータ、ラップトップ、タブレット、パーソナルデジタルアシスタント（ＰＤＡ）、スマートフォン、ゲーミングコンソール、およびホームサーバの少なくとも１つを含む、付記３２に記載のコンピュータで実現される方法。
付記３６．処理するためにプロセスデータを代替コンピューティングデバイスに提供することが、Ｂｌｕｅｔｏｏｔｈ接続、赤外線接続、無線ネットワーク接続、および優先ネットワーク接続の少なくとも１つによってプロセスデータを提供することを含む、付記３２に記載のコンピュータで実現される方法。
付記３７．遠隔プロセス実行のためのシステムであって、
１つ以上のコンピュータプロセッサと、
１つ以上のコンピュータプロセッサの少なくとも１つによってアクセス可能な少なくとも１つのコンピュータメモリと、
１つ以上のコンピュータプロセッサによって実行される実行可能なソフトウェアモジュールを備える実行管理構成要素であって、
ソフトウェアプロセスインスタンスのための遠隔プロセス構成を決定することであって、遠隔プロセス構成が、ソフトウェアプロセスインスタンスの少なくとも１つのサブプロセスを識別する、決定することと、
ソフトウェアプロセスインスタンスの少なくとも１つのサブプロセスに関連するプロセスデータを第１のコンピューティングデバイスに提供することであって、プロセスデータが、ソフトウェアプロセスインスタンスの少なくとも１つのサブプロセスに関連するデータ、およびソフトウェアプロセスインスタンスの少なくとも１つのサブプロセスに関連する複数の命令の少なくとも１つを少なくとも識別する、提供することと、
第２のコンピューティングデバイスから１つ以上の処理結果を得ることであって、１つ以上の処理結果が、第２のコンピューティングデバイスにおける複数の命令の１つ以上の実行と関連する、得ることと、
ソフトウェアプロセスインスタンスに従って得られた１つ以上の処理結果を処理することと、
を行うように動作可能である、システム。
付記３８．ソフトウェアプロセスインスタンスのための遠隔プロセス構成を決定することが、ソフトウェアプロセスインスタンスに関連するデータの特徴、ソフトウェアプロセスインスタンスのコンピューティングプロファイル、ソフトウェアプロセスインスタンスのサブプロセスのコンピューティングプロファイル、ソフトウェアプロセスインスタンスネットワーク使用要件、クライアントコンピューティングデバイスの特徴、第１のコンピューティングデバイスの特徴、第２のコンピューティングデバイスの特徴、クライアントコンピューティングデバイスの構成、クライアントコンピューティングデバイスにおけるリソース利用可能性、第１のコンピューティングデバイスにおけるリソース利用可能性、ネットワーク接続の特徴、ユーザに関連する選好、または事前に定義された構成の少なくとも１つに基づいて遠隔プロセス構成を決定することを含む、付記３７に記載のシステム。
付記３９．第１のコンピューティングデバイスおよび第２のコンピューティングデバイスが、同一のコンピューティングデバイスである、付記３７に記載のシステム。
付記４０．ソフトウェアプロセスインスタンスの少なくとも１つのサブプロセスに関連するプロセスデータを第１のコンピューティングデバイスに提供することが、ソフトウェアプロセスインスタンスの少なくとも１つのサブプロセスに関連するデータ、およびソフトウェアプロセスインスタンスの少なくとも１つのサブプロセスに関連する複数の命令の少なくとも１つを第１のコンピューティングデバイスに提供することを含む、付記３７に記載のシステム。
付記４１．第２のコンピューティングデバイスが、パーソナルコンピュータ、ラップトップ、パーソナルデジタルアシスタント（ＰＤＡ）、スマートフォン、ゲーミングコンソール、およびホームサーバの少なくとも１つを含む、付記３７に記載のシステム。
付記４２．実行管理構成要素が、プロセスデータを第１のコンピューティングデバイスに提供し、１つ以上の処理結果を、少なくとも１つのネットワーク接続により第２のコンピューティングデバイスから得るようにさらに動作可能である、付記３７に記載のシステム。
付記４３．少なくとも１つのネットワーク接続が制限されており、実行管理構成要素が、制限されたネットワーク接続に基づいて、第１のコンピューティングデバイスに提供するデータの量を決定するようにさらに動作可能である、付記４２に記載のシステム。
付記４４．ソフトウェアプロセスインスタンスの少なくとも１つのサブプロセスが、第１のサブプロセスを含み、遠隔プロセス構成情報が、ネットワークコンピューティングプロバイダにおける遠隔操作のために、ソフトウェアプロセスインスタンスの第２のサブプロセスを識別する、付記３７に記載のシステム。
付記４５．実行管理構成要素が、第１のサブプロセスと関連する第１の通信プロトコル、および第２のサブプロセスと関連する第２の通信プロトコルを決定するようにさらに動作可能である、付記４４に記載のシステム。
付記４６．実行管理構成要素が、Ｂｌｕｅｔｏｏｔｈ接続、赤外線接続、無線ネットワーク接続、および有線ネットワーク接続の少なくとも１つにより、処理するために、プロセスデータを第１のコンピューティングデバイスに提供するようにさらに動作可能である、付記３７に記載のシステム。
付記４７．プロセスデータが、第１のコンピューティングデバイスによって第２のコンピューティングデバイスに提供される、付記３７に記載のシステム。
付記４８．第１のコンピューティングデバイスが、第１のコンピューティングデバイスにおいてプロセスデータを処理するか、または処理するためにプロセスデータを第２のコンピューティングデバイスに提供するかを決定するように構成される、付記４７に記載のシステム。
付記４９．第１のコンピューティングデバイスにおいてプロセスデータを処理するか、または処理するためにプロセスデータを第２のコンピューティングデバイスに提供するかを、第１のコンピューティングデバイスによって決定することが、サブプロセスに関連する処理要件、第１のコンピューティングデバイスにおけるリソース利用可能性、第２のコンピューティングデバイスにおけるリソース利用可能性、およびプロセスデータの特徴の少なくとも１つに基づく、付記４８に記載のシステム。
付記５０．実行管理構成要素が、プロセスデータを第１のコンピューティングデバイスにおいて処理させるか、またはプロセスデータを処理するために第２のコンピューティングデバイスに提供させるようにさらに動作可能である、付記３８に記載のシステム。
付記５１．遠隔プロセス実行のためのコンピュータで実現される方法であって、
クライアントコンピューティングデバイスにおいて、ソフトウェアプロセスインスタンスを初期化することと、
ソフトウェアプロセスインスタンスのための遠隔プロセス構成を決定することであって、遠隔プロセス構成が、ソフトウェアプロセスインスタンスの少なくとも１つのサブプロセスを識別する、決定することと、
プロセスデータを第１のコンピューティングデバイスに提供することであって、プロセスデータが、少なくとも１つのサブプロセス、および少なくとも１つのサブプロセスに関連する複数の実行可能なデバイス命令の少なくとも１つを識別する、提供することと、
１つ以上の処理結果を第２のコンピューティングデバイスから得ることであって、１つ以上の処理結果が、少なくとも１つのサブプロセスに関連する複数の実行可能なデバイスの１つ以上の実行と関連する、得ることと、
ソフトウェアプロセスインスタンスに従って、得られた１つ以上の処理結果を処理することと、
を含む、コンピュータで実現される方法。
付記５２．プロセスデータおよび１つ以上の処理結果の少なくとも１つが、テキスト、拡張マークアップ言語（ＸＭＬ）、ハイパーテキストマークアップ言語（ＨＴＭＬ）、ＪａｖａＳｃｒｉｐｔオブジェクト表記（ＪＳＯＮ）、実行可能なバイナリ、圧縮フォーマット、暗号化フォーマット、ソフトウェアコードフォーマット、画像フォーマット、ビデオフォーマット、およびオーディオフォーマットの少なくとも１つを含むフォーマットでコードされる、付記５１に記載のコンピュータで実現される方法。
付記５３．第１のコンピューティングデバイスおよび第２のコンピューティングデバイスが、同一のコンピューティングデバイスである、付記５２に記載のコンピュータで実現される方法。
付記５４．プロセスデータを第１のコンピューティングデバイスに提供することが、少なくとも１つのサブプロセスに関連するデータ、および少なくとも１つのサブプロセスに関連する複数の命令の少なくとも１つを第１のコンピューティングデバイスに提供することを含む、付記５１に記載のコンピュータで実現される方法。
付記５５．クライアントコンピューティングデバイスが、プロセスデータを第１のコンピューティングデバイスに提供し、１つ以上の処理結果を、少なくとも１つのネットワーク接続により第２のコンピューティングデバイスから得る、付記５１に記載のコンピュータで実現される方法。
付記５６．少なくとも１つのネットワーク接続が制限され、実行管理構成要素が、制限されたネットワーク接続性に基づいて第１のコンピューティングデバイスに提供するデータの量を決定するようにさらに動作可能である、付記５５に記載のコンピュータで実現される方法。
付記５７．ソフトウェアプロセスインスタンスの少なくとも１つのサブプロセスが、第１のサブプロセスを含み、遠隔プロセス構成情報が、ネットワークコンピューティングプロバイダにおける遠隔操作のためのソフトウェアプロセスインスタンスの第２のサブプロセスを識別する、付記５２に記載のコンピュータで実現される方法。
付記５８．プロセスデータが、第１のコンピューティングデバイスによって第２のコンピューティングデバイスに提供される、付記５２に記載のコンピュータで実現される方法。
付記５９．第１のコンピューティングデバイスが、プロセスデータを第１のコンピューティングデバイスにおいて処理するか、またはプロセスデータを処理するために第２のコンピューティングデバイスに提供するかを決定するように構成される、付記５８に記載のコンピュータで実現される方法。
付記６０．第１のコンピューティングデバイスが、プロセスデータを第１のコンピューティングデバイスにおいて処理するか、またはプロセスデータを処理するために第２のコンピューティングデバイスに提供するかを、第１のコンピューティングデバイスによって決定することが、サブプロセスに関連する処理要件、第１のコンピューティングデバイスにおけるリソース利用可能性、第２のコンピューティングデバイスにおけるリソース利用可能性、およびプロセスデータの特徴の少なくとも１つに基づく、付記５９に記載のコンピュータで実現される方法。
付記６１．プロセスデータを第１のコンピューティングデバイスにおいて処理させるか、またはプロセスデータを処理するために第２のコンピューティングデバイスに提供させるかを決定することをさらに含む、付記５２に記載のコンピュータで実現される方法。
【００８６】
例示の実施形態が開示および説明されたが、関連技術分野における熟練者であれば、追加または代替の実施形態が本発明の趣旨および範囲内で実現され得ることを理解するであろう。例えば、本明細書に記載される技法を、画像またはビデオ編集ソフトウェア、データベースソフトウェア、オフィス生産性ソフトウェア、３Ｄ設計ソフトウェア、オーディオおよびサウンド処理アプリケーション等を含むが、これらに限定されない任意の数の他のソフトウェアアプリケーションにおいて、遠隔処理管理を可能にし得るように、本発明の範囲から逸脱することなく利用することができる。さらに、多くの実施形態は例示として示されたが、関連技術分野における熟練者であれば、例示の実施形態を組み合わせるか、または一緒に実現する必要はないことを理解するであろう。したがって、いくつかの例示の実施形態は、本開示の変形の範囲に従って利用または実現される必要はない。
【００８７】
条件語句、例えば、特に、「できる」、「できるであろう」、「してもよいであろう」、または「してもよい」は、特に別段の記載がない限り、または使用される文脈内で別の意味で理解されない限り、一般に、ある実施形態が、ある特徴、要素、および／またはステップを含むが、他の実施形態は含まないことを意味するものとする。したがって、そのような条件語句は、一般に、その特徴、要素、および／またはステップが、任意の方法で１つ以上の実施形態に必要とされること、または１つ以上の実施形態が、ユーザ入力もしくはプロンプト表示の有無にかかわらず、これらの特徴、要素、および／またはステップを含むか、あるいは任意の特定の実施形態において行われるかを決定するための論理を必ず含むことを含意するものではない。
【００８８】
本明細書に記載される、および／または添付の図面に図示されるフロー図における任意のプロセス説明、要素、またはブロックは、そのプロセスにおいて特定の論理機能またはステップを実装するための１つ以上の実行可能な命令を含む、モジュール、セグメント、またはコードの部分を潜在的に表現すると理解されるべきである。代替の実現形態は、本明細書に記載される実施形態の範囲内に含まれ、当業者によって理解されるように、関与する機能性に応じて、要素または機能が削除され、図示または説明されるものとは異なる順序（実質的に同時または逆順を含む）で実行され得る。上記のデータおよび／または構成要素が、コンピュータ可読媒体上に記憶され、コンピュータ可読媒体に関連するドライブ機構を使用して、コンピューティングデバイスのメモリにロードされ得ること、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等の任意の数のコンピュータ実行可能な構成要素内に記憶されるか、またはネットワークインターフェースを介して得られてもよいこと、さらに構成要素および／またはデータが、単一デバイスに含まれるか、または任意の他の方法で分散され得ることをさらに理解するであろう。したがって、汎用コンピューティングデバイスは、上記の様々なデータおよび／または構成要素の処理および／または実行とともに、本開示のプロセス、アルゴリズム、および方法を実装するように構成され得る。
【００８９】
多くの変形および修正が上記の実施形態に行われてもよいことが強調されるべきであり、それらの要素は、他の許容される例に含まれるものとして理解される。そのような修正および変形のすべては、本開示の範囲内で本明細書に含まれ、以下の請求項によって保護されるものとする。
【図１】
2014531670.tif 000003
【図２】
2014531670.tif 000004
【図３】
2014531670.tif 000005
【図４】
2014531670.tif 000006
【図５】
2014531670.tif 000007
【図６】
2014531670.tif 000008
【図７】
2014531670.tif 000009
【図８】
2014531670.tif 000010
【国際調査報告】
2014531670.tif 000011
2014531670.tif 000012