JP2014531670A - 遠隔プロセス実行管理 - Google Patents

遠隔プロセス実行管理 Download PDF

Info

Publication number
JP2014531670A
JP2014531670A JP2014531926A JP2014531926A JP2014531670A JP 2014531670 A JP2014531670 A JP 2014531670A JP 2014531926 A JP2014531926 A JP 2014531926A JP 2014531926 A JP2014531926 A JP 2014531926A JP 2014531670 A JP2014531670 A JP 2014531670A
Authority
JP
Japan
Prior art keywords
computing device
remote
data
network
client computing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2014531926A
Other languages
English (en)
Inventor
エイ. ジェンキンズ ジョナサン
エイ. ジェンキンズ ジョナサン
アール. テイラー ブレット
アール. テイラー ブレット
Original Assignee
アマゾン テクノロジーズ インコーポレーテッド
アマゾン テクノロジーズ インコーポレーテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by アマゾン テクノロジーズ インコーポレーテッド, アマゾン テクノロジーズ インコーポレーテッド filed Critical アマゾン テクノロジーズ インコーポレーテッド
Publication of JP2014531670A publication Critical patent/JP2014531670A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/541Client-server

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

遠隔実行管理処理は、ネットワークコンピューティングプロバイダにおける、ソフトウェアプロセスインスタンスの態様の実行および管理を対象とする。クライアントコンピューティングデバイスは、ソフトウェアプロセスインスタンスをインスタンス化し得る。クライアントコンピューティングデバイスは、ネットワークコンピューティングプロバイダにおける実行のためにソフトウェアプロセスインスタンスの少なくとも1つのサブプロセスを識別することを含む、ソフトウェアプロセスインスタンスのための遠隔プロセス構成を決定する。クライアントコンピューティングデバイスは、遠隔セッション構成情報をネットワークコンピューティングプロバイダに提供し得る。遠隔セッション構成情報に基づいて、ネットワークコンピューティングプロバイダは、少なくとも1つのサブプロセスに対応する遠隔セッションをインスタンス化し得る。ネットワークコンピューティングプロバイダは、処理結果を、遠隔セッションによって少なくとも1つのサブプロセスの実行に関連するクライアントコンピューティングデバイスに伝送し得る。

Description

一般的に説明されるならば、コンピューティングデバイスは、そのコンピューティングデバイスに多種多様な機能または行為を行わせる、多数のコンピュータ可読命令からなるプロセスを実行する。通常、オペレーティングシステムが、しばしば、コンピューティングデバイスに関連する「ローレベル動作」と称される、基本的な機能または機能性の多くを管理する。一態様において、基本的な機能性の管理は、デバイスメモリ、データストレージ、および入力/出力等のコンピューティングデバイスに関連するリソースの管理を含むことができる。別の態様において、基本的な機能性の管理は、コンピューティングデバイス上でインスタンス化され、命令の実行を要求する、通常、プロセスまたはスレッドと称される、1つ以上のソフトウェアアプリケーションに関連する命令の管理を含むことができる。例えば、オペレーティングシステムは、様々なアプリケーション、サービス、およびデバイス上でインスタンス化された他のプロセスの中でのデバイスリソースの割り当ておよび実行の順序を決定し得る。
場合によっては、コンピューティングデバイス上で実行するプロセスのリソース要件は、利用可能なコンピューティングデバイスリソースの能力を超え得る。そのような状況において、ユーザは、応答性の遅延または欠如を経験し得る。例示の実施例を参照すると、コンピューティングデバイスは、コンピューティングデバイス上で実行するグラフィックス編集アプリケーションを介して大きな画像ファイルをロードおよび表示するように命令され得る。コンピューティングデバイスが、要求を処理するために利用可能なデバイスメモリを十分に有しない場合、オペレーティングシステムは、デバイスメモリおよび画像ファイルの1つ以上の部分を、ハードドライブまたはフラッシュメモリストレージ等の待ち時間の長いストレージに一時的にロードすることができる。その後、オペレーティングシステムは、デバイスメモリおよび待ち時間の長いストレージに記憶された情報を置き換えることができ、しばしばスワッピングと称される。多くの場合、メモリをスワッピングすることは、遅くて時間のかかるプロセスであり得る。引き続き例示の実施例に関して、ユーザは、グラフィックス編集アプリケーションが、画像ファイル上の画像処理操作を行うことも要求し得る。したがって、グラフィックス編集アプリケーションは、画像処理操作に対応する一連の実行可能な命令からなるサブプロセスの実行を引き起こし得る。画像ファイルが大きい場合、コンピューティングデバイスが制限されたコンピューティングリソースしか使用できない場合、または変換がコンピューティング上複雑である場合、サブプロセスは、完了するために相当量の時間を費やすことがあり、デバイス上で同時に実行するアプリケーションおよびオペレーティングシステムのサブプロセス等の他のプロセスの実行に影響を及ぼし得る。
クライアントコンピューティングデバイスを利用するユーザの観点から、ユーザの経験は、コンピューティングデバイス上の様々なソフトウェアプロセスの実行に関連する性能および待ち時間に関して定義され得る。上記プロセスのいずれの待ち時間および性能制限も、ユーザの経験を減少させ得る。さらに、待ち時間および非効率性は、処理力、メモリまたはネットワーク接続性等のリソースが制限されたコンピューティングデバイス、例えば、ネットブック、タブレット、スマートフォン等で特に明らかであり得る。
前述の態様および本発明の付帯利益の多くは、添付の図面と併せて考慮されるとき、以下の詳細な説明を参照することによってさらに良く理解されるように、より容易に理解されるであろう。
クライアントコンピューティングデバイスおよびネットワークコンピューティングプロバイダを含むネットワークコンピューティング環境を示すブロック図である。 クライアントコンピューティングデバイスとネットワークコンピューティングプロバイダとの間の新たなソフトウェアプロセスおよび遠隔セッションのインスタンス化を示す、図1のネットワークコンピューティング環境のブロック図である。 ネットワークコンピューティングプロバイダとクライアントコンピューティングデバイスとの間のアプリケーションデータの処理を示す、図1のネットワークコンピューティング環境のブロック図である。 クライアントコンピューティングデバイスとネットワークコンピューティングプロバイダとの間の新たな遠隔セッションのインスタンス化を示す、図1のネットワークコンピューティング環境のブロック図である。 ネットワークコンピューティングプロバイダにおける遠隔セッション構成情報の決定および新たな遠隔セッションのインスタンス化を示す、図1のネットワークコンピューティング環境のブロック図である。 クライアントコンピューティングデバイスによって実装されるクライアントの新たな遠隔セッションルーチンを示すフロー図である。 ネットワークコンピューティングプロバイダによって実装される新たな遠隔セッションルーチンを示すフロー図である。 クライアントコンピューティングデバイスよって実装される遠隔セッションユーザ対話ルーチンを示すフロー図である。
一般的に説明されるならば、本開示は、クライアントコンピューティングデバイスと1つ以上の遠隔ネットワークコンピューティングプロバイダとの間のソフトウェアプロセス遠隔セッションの生成および管理を対象とする。具体的に、本開示の態様は、遠隔セッション構成情報に従って、クライアントコンピューティングデバイスとネットワークコンピューティングプロバイダとの間でプロセスデータおよび処理結果を生成するためのソフトウェアプロセスの処理に関して説明される。本開示に記載される実施形態の態様は、例示の目的で、ソフトウェアアプリケーションに対応する1つ以上の遠隔セッションの管理について説明し得るが、当業者であれば、本明細書に開示される技法が、オペレーティングシステムプロセスおよびサービスを含むがこれらに限定されない任意の数のソフトウェアプロセスに適用され得ることを理解するであろう。さらに、本開示の様々な態様は、例示の実施例および実施形態に関して説明されるが、当業者であれば、開示される実施形態および実施例が限定するものとして見なされるべきでないことを理解するであろう。
特定の例示の実施例を参照すると、ユーザは、クライアントコンピューティングデバイスが、ソフトウェアアプリケーションプロセス(これ以降「アプリケーション」と称する)等のソフトウェアプロセスインスタンスをロードすることを要求し得る。一実施形態において、ロードされた後、アプリケーションは、クライアントコンピューティングデバイスにおいて実行されるように設計された多数のコンピュータで実行可能な命令に対応し得る。例示的に、一式のコンピュータで実行可能な命令は、「サブプロセス」と称される場合があり、特定の機能性または行為の実装と関連し得る。
特定の実施例の目的で、グラフィック編集アプリケーションは、画像を処理するためにメモリにロードし得ると想定する。ユーザは、画像フィルタをメモリ内の画像に適用することを要求し得る。本実施例に従って、画像フィルタは、フィルタの構成に従ってメモリ内の画像データを操作するサブプロセスに対応し得る(例えば、明度を調整する、または視覚的アーチファクトを除去する)。
要求の受信に続いて、クライアントコンピューティングデバイスは、選択されたサブプロセスの実行に関連するソフトウェアプロセス構成情報を得る。一実施形態において、ソフトウェアプロセス構成情報は、アプリケーションに関連する1つ以上のサブプロセスを識別する情報、ならびにサブプロセスのリソース使用または処理要件を特定する情報を含んでよい。クライアントコンピューティングデバイスは、デバイスリソースの現在または将来の利用可能性(例えば、処理力、メモリ、ストレージ、ネットワーク使用等)を含むがこれに限定されないデバイス状態に関する様々な情報をさらに得てもよい。
ソフトウェアプロセス構成情報ならびにデバイス状態またはリソースの利用可能性に関連する情報を使用して、クライアントコンピューティングデバイスは、ネットワークコンピューティングプロバイダにおいて実行する1つ以上の遠隔セッション内の遠隔実行のためのアプリケーションの1つ以上のサブプロセスを識別してもよく、それらは遠隔セッション構成情報として具現化され得る。遠隔セッション構成情報は、ネットワークコンピューティングプロバイダにおける遠隔セッションとクライアントコンピューティングデバイスにおけるアプリケーションインスタンスとの間のプロセスデータおよび処理結果のパッケージ化および伝送のための1つ以上の通信プロトコルを識別し得る。
クライアントコンピューティングデバイスによる遠隔セッション構成情報の決定に続いて、クライアントコンピューティングデバイスは、アプリケーションの1つ以上の構成要素のローカルインスタンス化を引き起こし得る。クライアントコンピューティングデバイスはさらに、遠隔セッション構成情報をネットワークコンピューティングプロバイダに提供し得る。遠隔セッション構成情報に基づいて、ネットワークコンピューティングプロバイダは、アプリケーションのサブルーチンの少なくともいくつかの部分を実行するネットワークコンピューティングプロバイダに関連するコンピューティング構成要素等の1つ以上の遠隔セッションをインスタンス化するか、またはインスタンス化させ得る。例えば、ネットワークコンピューティングプロバイダは、クライアントコンピューティングデバイスにおいてインスタンス化されているアプリケーションのサブプロセスに対応する1つ以上のソフトウェアプロセスをホストするようにコンピューティング構成要素をインスタンス化し得る。さらなる実施例では、一実施形態において、ネットワークコンピューティングプロバイダは、クライアントコンピューティングデバイスにおいてインスタンス化されたアプリケーションの並列コピーを含む仮想マシンのインスタンスをインスタンス化するか、またはインスタンス化させることができる。
ネットワークコンピューティングプロバイダは、1つ以上の遠隔セッションにおいて処理するために、クライアントコンピューティングデバイスから初期プロセスデータを得てもよい。1つ以上の遠隔セッションは、初期プロセスデータを処理してもよく、処理結果をクライアントコンピューティングデバイスに伝送し戻してもよい。インスタンス化されたネットワークコンピューティング構成要素上の遠隔セッションとクライアントコンピューティングデバイス上のアプリケーションとの間で交換されたプロセスデータおよび処理結果を含むがこれらに限定されない情報は、一般に「遠隔セッション情報」と称され得る。処理結果を受信すると、クライアントコンピューティングデバイスは、さらなる処理および/またはユーザへの提示のために処理結果をアプリケーションに提供し得る。一実施形態において、ネットワークコンピューティングプロバイダにおけるプロセスデータの伝送および処理は、クライアントコンピューティングデバイスにおいて実行するアプリケーションに対して透過的であってもよい。しかしながら、クライアントのユーザの観点から、処理結果は、クライアントコンピューティングデバイスにおいてローカルに実行するサブプロセスによって生成されたように見え得る。
図1は、クライアントコンピューティングデバイス102およびネットワークコンピューティングプロバイダ106を含む、ネットワークコンピューティング環境100を示すブロック図である。図1に示されるように、ネットワークコンピューティング環境100は、ソフトウェアアプリケーションプロセス122およびオペレーティングシステム108等のソフトウェアプロセスを実行するためのクライアントコンピューティングデバイス102を含む。例示的な実施形態において、クライアントコンピューティングデバイス102は、パーソナルコンピューティングデバイス、ラップトップコンピューティングデバイス、携帯型コンピューティングデバイス、端末コンピューティングデバイス、モバイルデバイス(例えば、携帯電話、タブレットコンピューティングデバイス等)、ワイヤレスデバイス、様々な電子デバイスおよび電子機器、ならびに同類のものを含む、多種多様なコンピューティングデバイスに対応し得る。例示的な実施形態において、クライアントコンピューティングデバイス102は、広域ネットワークまたはローカルエリアネットワーク等の通信ネットワーク104上で通信を確立するために必要なハードウェアおよびソフトウェア構成要素を含む。例えば、クライアントコンピューティングデバイス102は、インターネットまたはイントラネットを介して通信を促進するネットワーキング機器およびブラウザソフトウェアアプリケーションを備えてもよい。クライアントコンピューティングデバイス102は、例えば、中央処理装置およびアーキテクチャ、メモリ、マスストレージ、グラフィックス処理装置、通信ネットワーク利用可能性、ならびに帯域幅等の多様なローカルコンピューティングリソースを有してもよい。
一実施形態において、クライアントコンピューティングデバイス102は、グラフィックスマネジャー110、入力/出力マネジャー(「I/Oマネジャー」)112、プロセスマネジャー114、メモリマネジャー116、およびファイルシステムマネジャー等の1つ以上のオペレーティングシステムプロセスからなるオペレーティングシステム108を実行し得る。例示的に、グラフィックスマネジャー110は、グラフィックス処理および出力デバイス上に表示するためのデータおよびコンテンツの出力を操作し得る。I/Oマネジャー112は、入力および出力機能を操作するとともに、ネットワークプロトコルおよびネットワーク使用、ならびにクライアントコンピューティングデバイス102と通信ネットワーク104上の他のネットワーク化デバイスとの間のアクセスを管理し得る。メモリマネジャー116は、ソフトウェアプロセス間のメモリの割り当てを管理し得、クライアントコンピューティングデバイス上の仮想メモリおよびメモリキャッシングを処理し得る。ファイルシステムマネジャー118は、ハードドライブ、フラッシュメモリ、ネットワークドライブ、または他のローカルもしくは遠隔ストレージ構成要素を含むがこれらに限定されないストレージ構成要素120上のファイルおよびデータの記憶および検索読み出しを管理し得る。様々な他の実施形態において、オペレーティングシステム108は、例示の目的で本明細書に図示されているオペレーティングシステム処理よりも少数、それらよりも多く、またはそれらの任意の組み合わせを含んでもよい。
プロセスマネジャー114は、クライアントコンピューティングデバイス102上で実行可能な1つ以上のソフトウェアアプリケーションプロセス122の実行、ローディング、およびスケジューリングを管理し得る。例示的に、各ソフトウェアアプリケーションプロセス122は、複数の論理的に関連するデバイスで実行可能な命令からなる任意の数のサブプロセスを含んでよい。
さらに引き続き図1を参照して、ネットワークコンピューティング環境100は、通信ネットワーク104を介してクライアントコンピューティングデバイス102と通信するネットワークコンピューティングプロバイダ106を含むこともできる。図1に示されるネットワークコンピューティングプロバイダ106はまた、ネットワークコンピューティングプロバイダに関連する1つ以上のコンピューティングデバイスの論理的関連にも対応する。具体的に、ネットワークコンピューティングプロバイダ106は、通信ネットワーク104上のノードに対応する多数のポイントオブプレゼンス(Point of Presence(「POP」))位置138、144を含むことができる。各POP138、144は、一般にNCCのインスタンスと称される、仮想マシンの多数のインスタンスを介してソフトウェアアプリケーションプロセス122またはそれらのサブプロセス等のアプリケーションをホストするためのネットワークコンピューティング構成要素(NCC)140、146を含む。関連技術分野における熟練者であれば、仮想マシンの複数のインスタンスを提供するか、または仮想マシンのインスタンス形成を動的に生じさせるために、NCC140、146が物理的コンピューティングデバイスリソースおよびソフトウェアを含むことを理解するであろう。そのような形成は、例えば、クライアントコンピューティングデバイスからの特定の要求に基づき得るか、またはNCCは、それ自体上の仮想マシンのインスタンスの動的形成を開始し得る。各NCC POP138、144は、ユーザデータ、ステータス情報、処理要件、使用歴データ、およびNCC140、146のインスタンスによって処理され、様々なクライアントコンピュータに伝送されるコンテンツプロバイダからのリソース含むがこれらに限定されない、ネットワークまたはコンピューティングリソースの送達および処理に使用される任意のタイプデータを記憶するために、多数のストレージデバイスで構成されているストレージ構成要素142、148も含む。いくつかの実施形態において、ネットワークコンピューティングプロバイダ107は、ネットワークコンピューティングおよびストレージプロバイダとして見なされてもよい。NCC140、146およびストレージ構成要素142、148は、要求されたアプリケーションを支援する仮想マシンのインスタンスを選択するため、および/またはDNSネームサーバに情報を提供して要求ルーティングを促進するためのロードバランシングもしくはロードシェアリングソフトウェア/ハードウェア構成要素を含むがこれらに限定されない通信を促進する追加のソフトウェアおよび/またはハードウェア構成要素をさらに含んでよい。
例示的な実施形態において、NCC138、146およびストレージ構成要素142、148は、構成要素またはその構成要素の一部が物理的に別個であるかどうかに関わらず、論理的にグループ化されていると見なされる。例えば、ネットワークコンピューティングプロバイダ106は、NCCおよびストレージ構成要素を提供するために別個のPOPを維持してもよい。さらに、NCC POP136、144は、図1においてネットワークコンピューティングプロバイダ106と論理的に関連するように示されているが、NCC POPは、クライアントコンピューティングデバイス102の様々な人口統計に最適に機能する方法で通信ネットワーク104全体に地理的に分布される。さらに、関連技術分野における熟練者であれば、ネットワークコンピューティングプロバイダ106が、コンテンツおよびリソースの管理のための追加のコンピューティングデバイス等の様々な追加のコンピューティングリソースと関連し得ることを理解するであろう。
ここで図2〜5を参照すると、図1のネットワークコンピューティング環境100の様々な構成要素間の対話が示される。具体的に、図2〜5は、クライアントコンピューティングデバイス102とネットワークコンピューティングプロバイダ106との間のプロセスデータの遠隔処理のためのネットワークコンピューティング環境100の様々な構成要素間の対話を示す。しかしながら、例示の目的で図は簡素化されているため、通信を促進するために利用される構成要素の多くは示されていない。関連技術分野における熟練者であれば、そのような構成要素が利用され得ること、したがって追加の対話が、本開示の趣旨および範囲から逸脱することなく起こり得ることを理解するであろう。
図2を参照すると、処理は、新たなソフトウェアプロセスおよびクライアントコンピューティングデバイス102とネットワークコンピューティングプロバイダ106との間の遠隔セッションのインスタンス化から開始することができる。例示的に、クライアントコンピューティングデバイス102は、イベントまたはユーザ要求に応答して、ソフトウェアアプリケーションプロセス122のロードを開始してもよい。一実施形態において、ソフトウェアアプリケーション122をロードすることは、ストレージ構成要素120からの実行可能なコードをデバイスメモリにコピーすることを含んでもよい。ソフトウェアアプリケーションプロセス122がロードされると、クライアントコンピューティングデバイス102は、アプリケーション122の1つ以上のサブプロセスを識別してもよい。例示的に、各サブプロセスは、アプリケーション122の機能性の一態様を行う多数の論理的に関連する実行可能な命令からなり得る。様々な実施形態において、クライアントコンピューティングデバイスは、アプリケーション122に関連する記憶されたソフトウェアプロセス構成情報、アプリケーション122の実行の以前もしくは現在のモニタリング、1つ以上の関連アプリケーション(例えば、アプリケーション122とは異なるが同様のバージョン)の実行のモニタリングに基づくか、または任意の他の要因もしくは情報に基づいて、1つ以上のサブプロセスを識別し得る。アプリケーション122のサブプロセスの識別に続いて、クライアントコンピューティングデバイス102は、遠隔実行するための一式のサブプロセスを定義する遠隔セッション構成情報、およびクライアントコンピューティングデバイス102とネットワークコンピューティングプロバイダとの間のデータ輸送のための通信プロトコルを決定し得る。次にクライアントコンピューティングデバイスは、クライアントコンピューティングデバイスにおいて、アプリケーション122の任意のローカル構成要素をインスタンス化し得る。一実施形態において、これらのサブプロセスの機能が、ネットワークコンピューティングプロバイダ106における遠隔セッションによって行われているか、または行われるとき、クライアントコンピューティングデバイス102は、ローカルアプリケーション122内の遠隔アナログの候補として識別された1つ以上のサブプロセスの1つ以上の態様の実行またはロードをブロックし得る。
遠隔セッション構成情報を決定することに続いて、クライアントコンピューティングデバイス102は、処理される遠隔セッション構成情報および/または初期プロセスデータをネットワークコンピューティングプロバイダ106に伝送し得る。一実施形態において、クライアントコンピューティングデバイス上にロードされているアプリケーション122の観点から、遠隔セッションをインスタンス化してサブプロセスの実行を処理することは、そのサブプロセスがローカルデバイス上でインスタンス化および実行されているかのように見え得る。
遠隔セッション構成情報の受信に続いて、ネットワークコンピューティングプロバイダ106は、1つ以上の関連するネットワークコンピューティング構成要素(以下「NCC」)ポイントオブプレゼンス(以下「POP」)、例えば、NCC POP138を選択し、任意の要求された新たな遠隔セッションを行う。NCC POPの選択は、インスタンス化された仮想マシンに対して利用可能なプロセスおよびネットワークリソースを決定し得る。NCC POPインスタンスにおける処理およびネットワークリソースの選択ならびにソフトウェアの提供は、少なくとも部分的に、処理リソースおよびクライアントコンピューティングデバイス102との通信を最適化するために行われてもよい。選択されたNCC POP138は、遠隔セッション構成情報内で識別されるアプリケーション122の1つ以上のサブプロセスに対応する遠隔セッションを生成し得る。例示的に、新たな遠隔セッションをインスタンス化することは、新たな仮想マシンインスタンス、一式の実行可能な命令、および/またはNCC POP138におけるアプリケーションインスタンスをロードすることと、デバイスメモリ、ストレージもしくはキャッシュスペース、プロセッサ時間、ネットワーク帯域幅、または新たな遠隔セッションのための他の計算もしくはネットワークリソースを確保する、もしくは割り当てることとを含んでよい。
図3を参照すると、ネットワークコンピューティングプロバイダ106とクライアントコンピューティングデバイス102との間のアプリケーションデータの処理のための例示的対話が説明される。図3に示されるように、選択されたNCC POP138は、上記の図2に図示される遠隔セッション構成情報等の遠隔セッション構成情報に基づいて、アプリケーション122に対応する1つ以上の遠隔セッションをインスタンス化してもよい。
新たな遠隔セッションインスタンスを初期化することに続いて、NCC POP138は、クライアントコンピューティングデバイス102によって、遠隔セッション構成情報とともにネットワークコンピューティングプロバイダ106に提供される、上記の図2に図示される初期プロセスデータ等の任意の初期プロセスデータを処理し得る。NCC POP138における初期プロセスデータの処理と同時に、処理前、または処理に続いて、クライアントコンピューティングデバイス102は、クライアントコンピューティングデバイス122においてローカルに実行するアプリケーション122の任意のサブプロセスに対応するローカル処理を行ってもよい。NCC POP138は、その初期プロセスデータの処理を完了すると、ネットワーク104を通じてクライアントコンピューティングデバイス102上で作動しているアプリケーション122に処理結果を伝送し戻し得る。一実施形態において、これらの処理結果は、遠隔セッション構成情報内で識別された通信プロトコルに従って伝送され得る。アプリケーション122の観点から、NCC POP138によって提供される処理結果は、クライアントコンピューティングデバイスにおいてローカルに実行するスレッドまたは他のサブプロセスによって生成されたように見え得る。
アプリケーション122がデータをローカルに処理し、クライアントデバイス102においてユーザからの対話を受信すると、アプリケーション122は、遠隔セッションに対応する1つ以上のサブプロセスに関連する追加のプロセスデータをネットワークコンピューティングプロバイダ106に伝送し得る。一実施形態において、ネットワークコンピューティングプロバイダ106は、このプロセスデータを上記のように処理し、クライアントコンピューティングデバイス102において追加の処理結果をアプリケーション122に伝送し戻し得る。クライアントコンピューティングデバイス102において実行するアプリケーション122の任意のサブプロセスは、正常に実行し得る。
図4を参照すると、クライアントコンピューティングデバイス102とネットワークコンピューティングプロバイダ106との間の新たな遠隔セッションのインスタンス化を示す、図1のネットワークコンピューティング環境のブロック図が開示される。図2および3に示されるように、第1の遠隔セッションは、クライアントコンピューティングデバイス102上で実行するアプリケーション122に対応するネットワークコンピューティングプロバイダ106においてインスタンス化され得る。
新たな遠隔セッションのインスタンス化は、クライアントコンピューティングデバイス102において新たなサブプロセスのロードまたは実行を開始するアプリケーション122から開始し得る。例示的に、新たなサブプロセスのロードまたは実行は、アプリケーションコンテンツ上の新たな処理操作を開始するアプリケーション122の結果とし起こり得る。例えば、グラフィック編集アプリケーションは、大きな画像ファイル上の画像処理操作からなる新たなサブプロセスの実行を開始し得る。別の実施形態において、新たなサブプロセスのロードまたは実行は、アプリケーションコンテンツの新たな部分をロードする要求に対応し得る。例えば、新たなビデオ編集アプリケーションサブプロセスは、編集のための新たなビデオクリップのロードに対応し得る。例示的に、新たなサブプロセスのロードまたは実行は、ユーザ対話もしくは要求、システムもしくはアプリケーションイベント、または任意の他のトリガーイベントもしくは原因に応答して起こり得る。
新たなサブプロセスを識別するクライアントコンピューティングデバイス102に続いて、クライアントコンピューティングデバイス102は、図2を参照して上述のように、新たなサブプロセスのための遠隔セッション構成情報を決定し得る。上述のように、遠隔セッション構成情報は、遠隔セッションとクライアントコンピューティングデバイス102において実行するアプリケーション122との間のデータ交換のために、識別されたサブプロセスおよび/または通信プロトコルのための遠隔セッションの実行を特定し得る。クライアントコンピューティングデバイス102は、処理のための遠隔セッション構成情報および/または初期プロセスデータをネットワークコンピューティングプロバイダ106に伝送し得る。図2を参照して上述のように、ネットワークコンピューティングプロバイダ106は、新たな遠隔セッション要求を処理するNCC POP138を決定してもよく、そのNCC POP138における新たなサブプロセスに対応する新たな遠隔セッションのインスタンス化を引き起こし得る。
図2を参照して上述のように、ネットワークコンピューティングプロバイダ106は、利用可能なNCC POPリソース(例えば、利用可能なメモリ、プロセッサロード、ネットワークロード等)、NCC POPにおいて遠隔セッションをホストする費用、クライアントコンピューティングデバイス102に対するNCC POPの位置、コンテンツプロバイダ、CDN、またはNCC POPキャッシュステータス(例えば、要求されたリソースがNCC POPキャッシュ内で既に記憶されているかどうか)等を含むがこれらに限定されない任意の数の要因に基づいて、新たな遠隔セッションをインスタンス化するためにNCC POPを選択してもよい。例示的に、ネットワークコンピューティングプロバイダ106は、ここでは例示の目的でNCC POP138を選択するとして図示されているが、ネットワークコンピューティングプロバイダ106は、新たな遠隔セッションをインスタンス化するために、任意の現存するNCC POPを選択してもよい。例えば、単一のクライアントコンピューティングデバイス102は、同時または順次に遠隔セッション構成情報を、3つの異なる遠隔セッション要求に対応するネットワークコンピューティングプロバイダ106に提供し得る。ネットワークコンピューティングプロバイダ106は、各遠隔セッションをインスタンス化するために異なるNCC POPを選択するか、3つの遠隔セッションすべてに同一のNCC POPを選択するか、またはそれらの任意の組み合わせを選択してもよい。上述のように、以前または同時遠隔セッションに利用されたものとは異なるNCC POPを選択するかどうかの決定は、利用可能なシステムリソースに基づいて行われるか、ランダムに行われるか、または上で図2に関して論じられる任意の他の要因に従って行われてもよい。一実施形態において、サブプロセスの機能が新たな遠隔セッションによってNCC POP138において行われているか、または行われる予定であるとき、クライアントコンピューティングデバイス102は、ローカルアプリケーション122内の新たなサブプロセスの1つ以上の態様の実行またはロードをブロックし得る。
図5を参照すると、遠隔セッション構成情報の決定およびネットワークコンピューティングプロバイダ106における新たな遠隔セッションのインスタンス化を示す図1のネットワークコンピューティング環境のブロック図が開示される。図2〜4に示されるように、1つ以上の遠隔セッションが、クライアントコンピューティングデバイス102上で実行するアプリケーション122に対応するネットワークコンピューティングプロバイダ106においてインスタンス化され得る。
一実施形態において、クライアントコンピューティングデバイス102は、クライアントコンピューティングデバイス102において実行する1つ以上のアプリケーション122または他の処理の操作をモニタリングし得る。例えば、クライアントコンピューティングデバイスは、メモリ使用、ネットワーク使用、プロセッサ使用等を監視し得る。クライアントコンピューティングデバイス102は、全体のリソース利用可能性を決定する、実行する処理を優先させる、オペレーティングシステム108の応答性を維持する等のために、任意の数の処理に対する集約性能およびコンピューティング要件をさらに監視し得る。そのモニタリングに基づいて、クライアントコンピューティングデバイス102は、遠隔実行のためにアプリケーション122のサブプロセスを識別し得る。特定の実施例として、クライアントコンピューティングデバイス102は、大量のシステムリソースを消費しており、遠隔セッションに容易に移動され得る、サブプロセス2等のローカルサブプロセスを識別してもよい。
遠隔セッションに移動され得るサブプロセスを識別することに続いて、クライアントコンピューティングデバイス102は、アプリケーションの遠隔セッション構成情報を更新し得る。図2〜4を参照して説明されるように、遠隔セッション構成情報は、識別されたサブプロセスに関する情報およびその識別されたサブプロセスに対応する新たな遠隔セッションの要求、ならびにクライアントコンピューティングデバイス102とネットワークコンピューティングプロバイダ106との間の情報のパッケージ化および伝送のための通信プロトコルを含んでよい。クライアントコンピューティングデバイス102は、更新された遠隔セッション構成情報および/または新たな遠隔セッションによって処理するための任意の初期プロセスデータをネットワークコンピューティングプロバイダ106に伝送し得る。
ネットワークコンピューティングプロバイダは、NCC POP144を選択し、アプリケーション122のサブプロセスに対応した、NCC POP144における新たな遠隔セッションのインスタンス化を引き起こし得る。図3を参照して上述のように、ネットワークコンピューティングプロバイダは、クライアントコンピューティングデバイス102またはアプリケーション122に関連する任意の他の遠隔セッションをホストしているものと同一であるか、または異なるNCC POP144のいずれかを選択してもよい。一実施形態において、クライアントコンピューティングデバイス102は、サブプロセスの機能がNCC POP144における遠隔セッションによって行われるとき、実行を中断するか、または以前にローカルであったサブプロセスの1つ以上の態様をメモリからアンロードしてもよい。
図6は、図1のクライアントコンピューティングデバイス102によって実現されるクライアントの新たな遠隔プロセスルーチンを示すフロー図である。クライアントの新たな遠隔セッションルーチン600は、ブロック602において開始する。ブロック604において、クライアントコンピューティングデバイス102は、新たなソフトウェアアプリケーションプロセス122または他のソフトウェアプロセスをインスタンス化する要求を得る。一実施形態において、新たなソフトウェアアプリケーションプロセス122をインスタンス化する要求を得ることは、クライアントコンピューティングデバイス102におけるユーザによる要求または対話の結果であり得る。例えば、ユーザは、クライアントコンピューティングデバイス102上のアプリケーション122を開いてもよい。別の実施形態において、新たなソフトウェアプロセスをインスタンス化する要求を得ることは、クライアントコンピューティングデバイス102において実行する自動処理またはイベントの結果であり得る。新たなソフトウェアプロセスは、本明細書では例示の目的でアプリケーション122と称されるが、関連技術分野における熟練者であれば、オペレーティングシステム処理、サービス、デーモン、または任意の他のタイプのソフトウェアプロセスを含むがこれらに限定されない任意のソフトウェアプロセスがクライアントコンピューティングデバイス102上で実行可能であることを理解するであろう。クライアントコンピューティングデバイス102は、ここでは例示の目的でソフトウェアプロセス構成情報、遠隔セッション構成情報、および遠隔プロセスに関する情報の他の態様を決定することとして説明されているが、これらの決定の1つ以上は、ネットワークコンピューティングプロバイダ106および/または任意の他の第三者サービス、デバイス、もしくはエンティティによって行われてもよいことを理解すべきである。
新たなソフトウェアプロセスをインスタンス化する要求を得ることに続いて、クライアントコンピューティングデバイス102は、ブロック606において、アプリケーション122または他のソフトウェアプロセスに関連するソフトウェアプロセス構成情報を得てもよい。例示的に、ソフトウェアプロセス構成情報は、処理、メモリ、または帯域幅要件に関する情報、スレッドおよび実行スケジューリングに関する情報、データ、アプリケーションもしくはサブプロセスセキュリティに関する情報、アプリケーション実行履歴および/またはユーザ対話履歴もしくは動作に関する情報、あるいはアプリケーションに関する任意の他の情報を含むがこれらに限定されないアプリケーション122に関する任意の種類の情報を含んでよい。一実施形態において、ソフトウェアプロセス構成情報の1つ以上の態様は、アプリケーション開発者によって事前に定義され、ユーザ、オペレーティングシステム、もしくは他の第三者エンティティによって事前に定義されるか、または任意の他のソースから得られる、アプリケーションに関連するネットワークストレージ位置から得られるアプリケーションのストレージ位置において、アプリケーション122に関連するデータに含まれていてもよい。さらなる実施形態において、ソフトウェアプロセス構成情報の1つ以上の態様は、リソースの足跡、実行動作、または処理および/もしくは1つ以上のサブプロセスの任意の他の実行特徴に基づいて決定され得る。例示的に、処理実行データは、アプリケーションの実行のモニタリングおよび/または現在もしくは過去の観察、あるいはアプリケーション122とのユーザの対話に基づいて生成され得る。一実施形態において、アプリケーション122を実行する任意の数のデバイスからのデータは、処理実行データを得る、または決定するために、ネットワーク構成要素において集約されてもよい。例示的に、アプリケーションの複数のインスタンスからのデータを組み合わせることは、アプリケーション122の十分に定義された、または集約された特徴を提供する助けとなり得る。処理実行データは、アプリケーション122の1つ以上のインスタンスのモニタリングに基づき得る、および/または関連アプリケーション(例えば、アプリケーション122の同一、異なる、または類似のバージョン)の1つ以上のインスタンスのモニタリングに基づいてもよい。さらなる実施形態において、処理実行データは、観察されたリソース足跡もしくは予想されるリソース足跡、実行動作、または他の特徴に基づいて、アプリケーション開発者または第三者アプリケーションデータ提供者によって提供され得る。
ブロック608において、クライアントコンピューティングデバイス102は、アプリケーション122に関連する1つ以上のサブプロセスを識別する。一実施形態において、クライアントコンピューティングデバイス102は、ソフトウェアプロセス構成情報に含まれる情報に基づいて、サブプロセスを識別してもよい。例示的に、サブプロセスは、多数の論理的に関連する実行可能な命令からなり得る。例えば、アプリケーション122は、クライアントコンピューティングデバイス102において実行する任意の数のデバイス命令を含んでよい。サブプロセスは、アプリケーションの機能性の一態様を一緒に行うこれらのデバイス命令の論理的に関連する群からなり得る。一実施形態において、1つ以上のサブプロセスは、データを処理するために個別の機能を形成してもよく、したがって程度の多少はあるが、ソフトウェアアプリケーションプロセス122から分離可能であり得る。特定の例の目的で、グラフィック編集アプリケーションは、処理するために画像をメモリにロードし得る。ユーザは、メモリ内の画像に画像フィルタを適用するように要求し得る。一実施形態において、画像フィルタは、メモリ内の画像データを操作する一連の実行可能な命令等のサブプロセスからなり得る。一実施形態において、画像フィルタサブプロセスは、グラフィック編集アプリケーションを一緒に形成する1つ以上の他のサブプロセス(例えば、インターフェース構成要素管理、ファイル管理、他の画像またはデータ処理プロセス等)から論理的に分離され得る。
ブロック608において1つ以上のサブプロセスを識別することに続いて、クライアントコンピューティングデバイスは、ブロック610において遠隔セッション構成情報を決定し得る。例示的に、遠隔セッション構成情報は、例示的に、ネットワークコンピューティングプロバイダ106における遠隔セッションにおいて実行するために、ブロック608において識別されたサブプロセスの1つ以上を識別する情報を含む、遠隔セッション構成に対応し得る。一実施形態において、遠隔セッション構成情報は、遠隔セッションにおいて行われる1つ以上のサブプロセスの態様、ならびにクライアントコンピューティングデバイス102またはネットワークコンピューティングプロバイダ106において必要とされる任意のデータ変換インターフェースを定義し得る。例えば、遠隔セッションによって処理されるデータに対応するクライアントコンピューティングデバイス102によって受信された処理結果は、アプリケーション122に対して利用可能にするために、さらに処理され、変換され、および/またはメモリ、プロセッサレジスタ、キャッシュ、またはデータストレージ位置内の適切な位置に置かれる必要があり得る。以下に論じられるように、処理動作の分割は、ネットワークコンピューティングプロバイダ106とクライアントコンピューティングデバイス102との間のプロセスデータおよび処理結果の交換に使用される通信プロトコルと関連するか、または結びつけ得る。遠隔セッション構成情報は、予測される各遠隔セッションの予想されるコンピューティング要件、例えば、処理要件、メモリ要件、ネットワーク要件等に関する情報をさらに含み得る。例示的に、この情報は、ネットワークコンピューティングプロバイダ106が、各遠隔セッションをホストするために適切なNCC POPを選択することを可能にし得る。
遠隔セッション構成情報は、なおもさらに、クライアントコンピューティングデバイス102とネットワークコンピューティングプロバイダ106との間のデータのパッケージ化および伝送を定義する通信プロトコルに関する情報を含んでよく、限定されないが、クライアントコンピューティングデバイス102とネットワークコンピューティングプロバイダ106との間の状態データ、ユーザ対話、ならびに他のデータおよびコンテンツの交換のための、ネットワークプロトコル、シグナル伝達モデル、トランスポート機構、またはカプセル化形式を含み得る。データの交換のための通信プロトコルは、当該技術分野において既知の任意の通信プロトコルを含んでよく、限定されないが、HTTP、FTP、遠隔デスクトッププロトコル(RDP)、X−Windowsプロトコル、仮想ネットワークコンピューティング(VNC)プロトコル、X−Windowsプロトコル、遠隔フレームバッファプロトコル、または任意の他の専用もしくは公的通信プロトコルを含み得る。例えば、RDPは、遠隔コンピューティングデバイスへの提供のために、クライアント入力(例えば、マウス移動、キーボード入力等)をプロトコルデータユニットにコードするための多数の処理機構、ならびにビットマップ更新および低レベルのインターフェース情報をクライアントデバイスに返送するための対応する機構を例示的に特定する。別の実施例として、HTMLプロトコルは、例示的に、インターフェース情報を定義し、サーバからクライアントへのリソース参照を含有するファイルを提供するための機構、ならびにクライアントコンピューティングデバイスが、追加のファイルおよびリソース要求をサーバに提供するための対応する機構を提供する。
例示的に、遠隔セッション構成情報は、プロセスデータ、処理結果、およびクライアントコンピューティングデバイス102とネットワークコンピューティングプロバイダ106または他のデバイスとの間で伝送される他の情報の1つ以上のコード化またはデータ形式をさらに特定し得る。様々な実施形態において、データは、任意の数の形式で伝送されてもよく、限定されないが、1つ以上のコード化または圧縮形式、テキスト形式、コード形式、マークアップ形式(例えば、拡張マークアップ言語、ハイパーテキストマークアップ言語等)、データ交換形式(例えば、拡張マークアップ言語、JavaScriptオブジェクト表記、データ交換形式)、実行可能なバイナリ形式、画像形式(例えば、jpeg、gif、tiff、ビットマップ等)、ビデオ形式(例えば、mpeg、avi、mov等)、オーディオ形式(例えば、aiff、mp3等)、または任意の他のバイナリ、ドキュメント、もしくは当該技術分野において既知の他のデータ形式を含み得る。例えば、一実施形態において、遠隔セッション構成情報は、テキスト形式で記憶されたソフトウェアコードが、プロセスデータとしてネットワークコンピューティングプロバイダ106に提供されること、およびネットワークコンピューティングプロバイダ106が、コンパイルされたソフトウェアコードに対応する実行可能なバイナリを含む処理結果をクライアントコンピューティングデバイス102に伝送することを特定し得る。
上述のように、遠隔セッション構成情報は、上記のブロック608において識別されたサブプロセスの1つ以上のための遠隔構成を特定し得る。例示的に、遠隔セッション構成情報は、サブプロセスがローカルに行われるか、全体的に遠隔で行われるか、またはローカルおよび遠隔処理の何らかの組み合わせで行われるかを特定し得る(例えば、処理の大部分はネットワークコンピューティングプロバイダ106で起こるが、クライアントコンピューティングデバイス102は、ローカル変換構成要素を実行して、受信された処理結果を変換および表示する)。一実施形態において、アプリケーション122の1つ以上のサブプロセスのための遠隔構成の決定は、クライアントコンピューティングデバイス102において、アプリケーション自体によって、オペレーティングシステムプロセスもしくはサービスによって、またはクライアントコンピューティングデバイスにおいて実行する任意の他のプロセスによって行われ得る。他の実施形態において、ネットワークコンピューティングプロバイダ106は、決定の遂行を行うか、またはそれを補助し得る。本明細書において例示の目的で説明されるように、クライアントコンピューティングデバイスは、アプリケーションの識別されたサブプロセスのための遠隔構成の決定を行うとして論じられるが、これは、代替実施形態に従って異なり得る。
クライアントコンピューティングデバイス102は、ブロック608において識別されたサブプロセスの1つ以上のための遠隔構成の決定を、アプリケーションデータの1つ以上の特徴、サブプロセスのコンピューティングプロファイル(例えば、メモリ使用、プロセッサ使用、ストレージ使用、ネットワーク使用)、クライアントコンピューティングデバイス102の1つ以上の特徴または構成、クライアントコンピューティングデバイスにおける現在のリソース使用、ネットワークコンピューティングプロバイダ106またはNCC POP138の特徴、リソース使用、または構成、ネットワークまたはネットワーク接続の1つ以上の特徴、ユーザに関連する構成または選好、事前に定義された構成または選好等を含むがこれらに限定されない、任意の数の要素に基づいて行ってもよい。アプリケーションデータの特徴は、データ形式、コンテンツタイプ、サイズ、処理要件、リソース待ち時間要件、対話型要素の数またはタイプ、セキュリティリスク、関連するユーザ選好、ストレージ位置または遠隔ストレージネットワークアドレス、関連するネットワークドメイン、関連するコンテンツプロバイダ等を含み得るがこれらに限定されない。クライアントコンピューティングデバイス102、ネットワークコンピューティングプロバイダ106、NCC POP138、および他の関連するサービスまたはデバイスの特徴は、処理力、メモリ、ストレージ、ネットワーク接続性(例えば、利用可能な帯域幅、待ち時間、もしくは一貫性)、物理的もしくは論理的位置、予想される安定性もしくは障害のリスク、ソフトウェアもしくはハードウェアプロファイル、現在、過去、もしくは予想される未来の利用可能なリソース(例えば、利用可能なメモリもしくは処理、または同時に開いているソフトウェアアプリケーションの数)等を含み得るがこれらに限定されない。アプリケーション122の特徴は、事前に定義された遠隔構成(例えば、アプリケーション開発者、ユーザ、オペレーティングシステム、遠隔サービス等によって定義された遠隔構成)、アプリケーションの対話性、アプリケーション122の過去、現在、もしくは予想されるリソース使用、アプリケーション122のサイズおよび/または複雑性、アプリケーション122に関連するコードの配布に関するライセンシングもしくは著作権問題等を含み得るがこれらに限定されない。
クライアントコンピューティングデバイス102は、コンテンツもしくはドメインの一部に関連する認知されたセキュリティ脅威もしくはリスク、クライアントコンピューティングデバイス102またはネットワークコンピューティングプロバイダ106の選好、コンピューティングコスト(例えば、処理もしくは帯域幅、リソース使用の費用等)、事前に決定された選好もしくは選択情報、特定の遠隔セッションにより必要とされる任意の追加の処理にかかる諸経費、キャッシュステータス(例えば、特定のリソースが、NCC POP138において、クライアントコンピューティングデバイス102において、もしくはネットワークコンピューティングプロバイダ106に関連する他のネットワークストレージ構成要素においてキャッシュされるかどうか)、アプリケーションコードを検索し読み込むか、またはデータを処理するために必要な予測される遅延もしくは時間、特定の遠隔セッションもしくはサービスレベルに好ましいネットワークコンピューティングプロバイダまたはネットワークコンピューティングプロバイダとの合意、アプリケーション、ユーザ、クライアントコンピューティングデバイス、もしくはネットワークコンピューティングプロバイダに関連する遠隔セッションが現在アクティブであるかどうか、または任意の他の要素をさらに考慮し得る。
いくつかの実施形態において、クライアントコンピューティングデバイス102は、特定のサブプロセスのための遠隔セッションの決定を過去の動作もしくは実施に基づいて行い得る。例えば、過去に特定のサブプロセスのための遠隔構成を決定したクライアントコンピューティングデバイス102は、アプリケーションが同一(または場合によっては異なる)ユーザによってロードされるとき、同一の遠隔構成を自動的に選択してもよい。別の実施例として、広範囲の処理を必要とする様態でアプリケーションの利用履歴を有するユーザは、遠隔セッションにおけるサブプロセスの大部分を行うことを特定する、遠隔プロセス構成情報の決定を引き起こし得る。他の実施形態において、クライアントコンピューティングデバイス102は、将来の行動予測に基づいて遠隔プロセス構成情報の決定を行い得る。例えば、クライアントコンピューティングデバイス102は、特定のアプリケーションのために行われた過去の決定の分析に基づいてその遠隔プロセス構成情報の決定を行い得る。履歴上大量のコンピューティングリソースを必要としたアプリケーションにおけるサブプロセスは、ネットワークコンピューティングプロバイダ106において、遠隔セッション内で部分的または全体的に行われてもよい。例示的に、過去の履歴分析および将来の予測は、遠隔プロセス構成情報が基づく多数の要因の1つ以上として見なされ得るか、または決定処理において決定的であり得る。例示的に、上記の図5を参照して説明されたように、クライアントコンピューティングデバイスは、アプリケーションが作動すると、アプリケーション処理およびリソースの使用をモニタリングし得、任意の時点で更新された遠隔プロセス構成情報を再決定し得る。例示的に、この更新された遠隔プロセス構成情報は、サブプロセスもしくはサブプロセスの態様をローカル実行から遠隔セッションに、遠隔セッションからローカル実行に、またはそれらの任意の組み合わせに移動させてもよい。
他の実施形態において、アプリケーションコンテンツ、アプリケーション、またはアプリケーションに関連する情報の一部は、リソースタグ、メタデータ、または他の形態で、特定のサブプロセスの遠隔処理または特定の遠隔プロセス構成情報の使用を特定するか、あるいは要求し得る。クライアントコンピューティングデバイス102は、その要求を決定的なものとして扱い得るか、またはその要求を決定処理において考慮される複数の要因の1つとして考慮し得る。
例示的に、クライアントコンピューティングデバイス102は、任意の要因もしくは要因の組み合わせに基づいて、遠隔セッション構成情報の決定を行ってもよい。例えば、クライアントコンピューティングデバイス102は、単一の要因に基づいて遠隔セッション構成情報を決定し得るか、または決定を行う際に1つ以上の要因に重みを割り当ててもよい。いくつかの実施形態において、クライアントコンピューティングデバイス102の決定処理は、上記の1つ以上の要因に基づいて変更してもよい。例えば、余剰の未使用帯域幅を有するネットワーク上でネットワークコンピューティングプロバイダ106と通信しているクライアントコンピューティングデバイス102は、遠隔セッションのネットワーク要件等の要因に低い重みを付与し、アプリケーションとのユーザ対話の待ち時間等の要因により高い重みを付与し得る。別の実施形態において、制限された帯幅域ネットワークまたは中間ネットワーク接続性上でネットワークコンピューティングプロバイダ106と通信するクライアントコンピューティングデバイス102は、ネットワーク上で遠隔セッションとの通信の効率性を扱う要因により高い重みを付与し得る。例示的に、遠隔セッション構成情報の任意の1つ以上の態様または部分は、クライアントコンピューティングデバイス102、ネットワークコンピューティングプロバイダ106、代替コンピューティングデバイス、および/または任意の他のデバイス、構成要素、もしくはエンティティによって決定され得る。遠隔セッション構成情報の決定は、クライアントコンピューティングデバイス102、ネットワークコンピューティングプロバイダ106、代替コンピューティングデバイス、および/または任意の他のデバイス、構成要素、もしくはエンティティの任意の組み合わせから受信された、得られた、もしくは収集されたデータに全体的または部分的に基づき得る。
ブロック612において、クライアントコンピューティングデバイス102は、遠隔セッション構成情報によってローカル構成要素またはサブプロセスとして識別された任意の構成要素をインスタンス化してもよい。クライアントコンピューティングデバイス102は、遠隔セッションによって戻された処理結果の処理、変換、および/または表示に必要とされるデータ変換もしくは表示インターフェース等の任意のローカル構成要素をさらにインスタンス化し得る。特定の実施例として、遠隔セッション構成は、アプリケーションのユーザインターフェースおよび関連処理をローカルサブプロセスとして識別していてもよく、またアプリケーションのコンテンツ表示枠内の画像表示および処理を遠隔サブプロセスであると識別していてもよい。この実施例に従うと、クライアントコンピューティングデバイス102は、インターフェース構成要素オブジェクトおよびアプリケーションに関連する関連コードをクライアントコンピューティングデバイスにおいてメモリにロードし得る。この実施例を続けると、クライアントコンピューティングデバイス102は、ロードされたローカルオブジェクトおよびコードにリンクされたデータ変換インターフェースまたは構成要素をさらにロードし得る。データ変換インターフェースまたは構成要素は、画像の表現に対応するRDP表示データ等のネットワークコンピューティングプロバイダ106から受信された処理結果の処理および表示を操作し得る。
ブロック614において、クライアントコンピューティングデバイス102は、遠隔セッション構成情報をネットワークコンピューティングプロバイダ106に提供し得る。クライアントコンピューティングデバイス102はまた、初期プロセスデータをネットワークコンピューティングプロバイダ106に提供し得る。例示的な実施形態において、ネットワークコンピューティングプロバイダ106は、登録APIを利用して、遠隔セッション構成情報をクライアントコンピューティングデバイス102から受信する。
ブロック610および612を参照して上述のように、遠隔セッション構成情報は、遠隔セッションとして処理するために1つ以上のアプリケーションサブプロセスを識別し得る。一実施形態において、遠隔セッション構成情報は、ネットワークコンピューティングプロバイダ106における実行のための識別されたサブプロセスの1つ以上の態様に対応する実行可能なコードを含んでよい。別の実施形態において、遠隔セッション構成情報は、遠隔プロセスとして実行するための識別されたサブプロセスに関連する実行可能なコードに対する1つ以上の参照を含んでよい。例えば、ネットワークコンピューティングプロバイダ106は、ローカルまたはネットワークストレージ構成要素内のクライアントコンピューティングデバイス102において作動しているアプリケーションのコピーを有してもよい。この実施例において、遠隔セッション構成情報は、遠隔セッションと関連するアプリケーション内のサブプロセスの参照または識別(例えば、一式の命令および/またはオブジェクト)を提供し得る。別の実施形態において、遠隔セッション構成情報は、ネットワークコンピューティングプロバイダ106において遠隔セッションをインスタンス化する際に使用するためのサブプロセスに対応する、実行可能なコード、オブジェクト、および/またはデータの実際のコピーを含み得る。
特定の一実施形態において、ネットワークコンピューティングプロバイダ106は、アプリケーションのフルインスタンスのNCC POP138においてインスタンス化を引き起こし得る。例えば、ネットワークコンピューティングプロバイダ106は、クライアントコンピューティングデバイス102において実行するアプリケーションと並列して作動するためにアプリケーションをインスタンス化し得る。別の実施形態において、ネットワークコンピューティングプロバイダ106は、1つ以上の遠隔セッションをインスタンス化および実行してもよく、それぞれがクライアントコンピューティングデバイスにおいて実行するアプリケーションのサブプロセスに対応する。
ネットワークコンピューティングプロバイダ106に提供された遠隔セッション構成情報は、ネットワークコンピューティングプロバイダ106においてインスタンス化された1つ以上の遠隔セッションにおける処理のために、初期プロセスデータを伴うか、またはそれが続き得る。例示的に、初期プロセスデータは、一式のデータ、データに対する1つ以上の参照、またはそれらの任意の組み合わせを含んでよい。例えば、クライアントコンピューティングデバイス102におけるアプリケーションは、特定の画像を編集するユーザからの要求に応答してロードされ得る。特定の実施例の目的で、アプリケーションに関連する遠隔セッション構成情報が、ネットワークコンピューティングプロバイダ106における遠隔セッション内で実行するために、アプリケーションの画像操作サブプロセスを特定することを想定する。例示的に、遠隔セッションは、その上で作動する特定画像のコピーを必要とし得る。一実施形態において、画像がクライアントコンピューティングデバイス102においてローカルに記憶される場合、クライアントコンピューティングデバイス102は、画像のコピーを含む一式のデータを初期プロセスデータとしてクライアントコンピューティングおよびストレージプロバイダに伝送し得る。例示的に、様々な実施形態において、クライアントコンピューティングデバイスは、ネットワークコンピューティングプロバイダ106におけるAPIに従って、または遠隔セッション構成情報内で特定された1つ以上の通信プロトコルに従って画像を伝送し得る。
上記の特定の実施例を続けると、別の実施形態において、画像が遠隔ストレージ場所、例えば、ネットワークコンピューティングプロバイダ106と関連するか、またはアクセス可能なストレージ構成要素において記憶されることを想定することができ、クライアントコンピューティングデバイス102は、ネットワークコンピューティングプロバイダ106に、ネットワークアドレスおよび/または他の情報を含む初期プロセスデータを提供し、それによってネットワークコンピューティングプロバイダ106は、画像を得る、および/またはロードすることが可能になり得る。一実施形態において、画像は、クライアントコンピューティングデバイス102においてローカルに記憶され、かつ1つ以上のネットワークストレージ構成要素においてキャッシュまたはミラーされ得る。例示的に、この実施形態に関して、クライアントコンピューティングデバイス102は、キャッシュおよび/またはチェックサムもしくはハッシュ内に記憶された画像に対する参照を送信して、キャッシュされた画像が最新または適切なコピーであったかどうかを決定することができる。例示的に、キャッシュされた画像がその画像の最新版ではなかった場合、ネットワークコンピューティングプロバイダ106は、古い画像をキャッシュから得るのではなく、新しい画像をクライアントコンピューティングデバイス102から要求することができる。
様々な実施形態において、クライアントコンピューティングデバイス102からネットワークコンピューティングプロバイダ106に、データへの参照を提供するか、または実際のデータを提供するかどうかの決定は、クライアントコンピューティングデバイス102、ネットワークコンピューティングプロバイダ106、または任意の他のデバイスもしくは構成要素によって行われてもよい。例示的に、データへの参照を提供するか、または実際のデータを提供するかどうかの決定は、単独または組み合わせの多数の要因に基づき得る。そのような要因としては、限定されないが、デバイスとデータストアまたはデータを記憶するネットワーク構成要素との間の接続性または接続性の1つ以上の特徴、データの特徴、コンピューティングデバイス102、ネットワークコンピューティングプロバイダ106、または他のデバイス間の接続の特徴、コンピューティングデバイス102、ネットワークコンピューティングプロバイダ106、または他のデバイスにおけるリソース使用等が挙げられる。例えば、クライアントコンピューティングデバイス102が、単に断続的な通信ネットワーク接続性を有すると想定する。ネットワークコンピューティングデバイス106は、接続性が得られるとき、または接続性の喪失を予測して、実際のデータのコピーを受信しようとし得る。データは、任意の共有もしくはローカルストア、ネットワーク構成要素、またはネットワークコンピューティングプロバイダ106、クライアントコンピューティングデバイス102、または任意の他のデバイス、エンティティ、もしくは構成要素に関連する他のデータストアにおいて記憶され得る。
遠隔セッション構成情報および初期プロセスデータを提供することに続いて、ネットワークコンピューティングプロバイダ106は、アプリケーションのサブプロセスに対応する1つ以上の遠隔セッションをインスタンス化し得る。例示のサーバ側の新たな遠隔セッションルーチンが、図7を参照して以下でさらに詳述される。
ブロック616において、クライアントコンピューティングデバイス102は、プロセスデータおよび処理結果をネットワークコンピューティングプロバイダ106における遠隔セッションと交換し得る。例示的に、ネットワークコンピューティングプロバイダ106は、処理結果を、遠隔セッションによって処理されたプロセスデータの結果に対応する、クライアントコンピューティングデバイス102に提供し得る。例示的に、処理結果は、当該技術分野において既知の任意の形態または形式でクライアントコンピューティングデバイス102に提供されてもよい。一実施形態において、処理結果の形態は、遠隔セッション構成情報内の遠隔セッションのために決定された通信プロトコルによって決定され得る。
例えば、グラフィックス処理アプリケーションに関連する遠隔セッション構成情報は、表示用の大きな画像を含む一式のデータの処理を行うサブプロセスに対応する遠隔セッションが、処理結果をクライアントコンピューティングデバイス102に伝送するために、RDPプロトコルを利用することを特定し得る。例示的に、処理結果は、クライアントコンピューティングデバイスにおいて表示される画像の一部または解像度のみに対応し得るため、全体画像が必要な場合よりも迅速に伝送され得る。別の実施形態において、データベースビューアーアプリケーションに関連する遠隔セッション構成情報は、多数のデータベーステーブルを戻す検索の実行を行うサブプロセスに対応する遠隔セッションが、FTPプロトコル上の圧縮されたカンマ区切り値(CSV)からなる処理結果の伝送を特定し得ることを特定し得る。上記のように、処理結果は、クライアントコンピューティングデバイスにおいて表示される一式のデータの一部のみに対応し得るため、戻された全結果の小さなサブセクションのみを含んでよい。例示的に、スクロールダウンしてさらに結果を見るというクライアントコンピューティングデバイス102におけるユーザからの要求は、表示される追加の結果に対応するクライアントコンピューティングデバイス102に送信される処理結果を更新させる。例示的に、処理される一式のデータのサブセットに対応する処理結果を戻すことのみによって、クライアントコンピューティングデバイス102が、完全なデータセットを管理する必要なく、メモリまたは他のコンピューティングリソースを保存することを可能にし得る。
一実施形態において、ネットワークコンピューティングプロバイダ106は、安全なデータまたはプライベートデータを含む一式のデータに関連する処理結果を提供し得る。例示的に、安全なデータまたはプライベートデータは、安全でないクライアントコンピューティングデバイス102における未承認の配布または格納を防ぐために、ネットワークコンピューティングプロバイダ106において記憶され得る。例示的に、処理結果は、要求されたデータの非機密の態様の表現のみに対応し得、ネットワークコンピューティングプロバイダ106は、安全なデータまたはプライベートデータの表現を送信しないか、または安全なデータまたはプライベートデータの制限された表現を送信し得る。
特定の実施例として、一実施形態において、処理結果は、アプリケーション122に関連するインターフェースまたはアプリケーションコンテンツに対応する表示データを含んでよい。例えば、NCC POP138は、遠隔セッションにおいて作動しているアプリケーションの並列インスタンス内のプロセスデータを処理し得、アプリケーションの並列インスタンスの表示されたコンテンツまたはインターフェースを含む処理結果を生成して、遠隔デスクトッププロトコル(RDP)等の通信プロトコルを介してクライアントコンピューティングデバイス102に送信し得る。一実施形態において、NCC POP138は、アプリケーション内のインターフェースおよびコンテンツのレイアウトおよび表示に対応するRDP処理結果を送信し得る。別の実施形態において、NCC POP138は、アプリケーションに関連するインターフェース要素のいずれかを用いず、任意の表示されるアプリケーションコンテンツのみを含むRDP処理結果を送信し得る。例示的に、表示されたアプリケーションコンテンツのみに対応するRDP処理結果を含むことは、クライアントコンピューティングインスタンス102におけるアプリケーションが、任意のさらなる処理なしにアプリケーションのコンテンツ表示領域内のRDP処理結果を組み立てることによってコンテンツを表示することを可能にし得る。
クライアントコンピューティングデバイス102は、1つ以上の遠隔セッションによって提供された処理結果を得てもよく、データ変換サービスもしくは構成要素または他の手段を通じて、処理結果をアプリケーション122に提供し得る。一実施形態において、クライアントコンピューティングデバイス102において実行するアプリケーション122は、遠隔セッション処理のために特定的に書き込まれるか、または構成されてもよく、プロセスデータに関連する処理結果の処理、変換、および表示を行うために、1つ以上の構成要素を有してもよい。例えば、遠隔セッション処理のために書かれたグラフィックスアプリケーションは、画像ファイルの表現に対応するネットワークコンピューティングプロバイダ106からのRDP処理結果を受け入れて、画像の前記表現によってアプリケーション122内のコンテンツ表示枠を更新する、構成要素を有し得る。別の実施形態において、クライアントコンピューティングデバイス102において実行するアプリケーション122は、遠隔セッション処理のために書かれていない場合があり、クライアントコンピューティングデバイス102は、アプリケーション122のための処理結果を得て、その処理結果処理して情報を抽出して、その抽出された情報を適切なメモリ位置、キャッシュ位置、レジスタ、またはアプリケーション122に関連するストレージ位置に配置してもよい。アプリケーション122の観点から、したがって処理結果は、クライアントコンピューティングデバイスにおいてローカルに実行するスレッドまたは他のサブプロセスによって生成されたように見える場合がある。
クライアントコンピューティングデバイス102はさらに、追加のプロセスデータをネットワークコンピューティングプロバイダ106における遠隔セッションに提供し得る。一実施形態において、データをネットワークコンピューティングプロバイダ106に提供することは、上のブロック614を参照して論じられたように、データ、参照等を提供することを含む。例えば、様々な実施形態において、クライアントコンピューティングデバイス102は、ファイル、ユーザ対話データ、オペレーティングシステムもしくは論理オブジェクト構造、変数データ、バイナリもしくは構造化アプリケーションデータ、または遠隔セッションにおいて処理するためのデータの任意の他の種類もしくは形式を含む、データまたはデータへの参照を提供し得る。例示的に、1つ以上の遠隔セッションは、このデータを処理し、処理結果を上記のように戻し得る。
データおよび処理結果の交換は、ネットワークコンピューティングプロバイダ106における遠隔セッションが終了するか、アプリケーション122が閉じられるか、またはネットワークコンピューティングプロバイダ106とクライアントコンピューティングデバイス102との間の接続が妨害されるまで継続し得る。ルーチン600は、ブロック618において終了する。
図7は、図1のネットワークコンピューティングプロバイダ106によって実現される新たな遠隔セッションルーチン700を示すフロー図である。新たな遠隔セッションルーチン700は、ブロック702において開始する。ブロック704において、ネットワークコンピューティングプロバイダ106は、遠隔セッション構成情報をクライアントコンピューティングデバイス102から得る。図6を参照して上述のように、一実施形態において、遠隔セッション構成情報は、遠隔セッションがインスタンス化されるべきクライアントコンピューティングデバイス102において実行するアプリケーションの1つ以上のサブプロセスを識別および/または説明し得る。例示的に、遠隔セッション構成情報は、遠隔セッションにより処理するための初期プロセスデータを伴い得る。
ブロック706において、ネットワークコンピューティングプロバイダ106は、遠隔セッション構成情報に基づいて、新たな遠隔セッションをインスタンス化するために、関連するNCC POPを選択してもよい。図1を参照して上述のように、ネットワークコンピューティングプロバイダ106は、任意の数の物理的または論理的位置全体に分配された任意の数のNCC POPを含んでよい。ネットワークコンピューティングプロバイダ106は、利用可能なNCC POPリソース(例えば、利用可能なメモリ、プロセッサロード、ネットワークロード等)、NCC POPにおいて遠隔セッションをホストする費用、クライアントコンピューティングデバイス102に対するNCC POP一、NCC POPキャッシュ状態(例えば、アプリケーションインスタンス、アプリケーションデータ、または別のリソースが、NCC POPキャッシュ内に既に記憶されているかどうか)等を含むがこれらに限定されない任意の数の要素に基づいて遠隔セッションをホストするために、NCC POPを選択してもよい。
一実施形態において、ネットワークコンピューティングプロバイダ106は、遠隔セッションをホストするために、ある数のNCC POPを選択してもよい。例えば、ネットワークコンピューティングプロバイダ106は、ネットワーク内に異なる論理位置を有する2つのNCC POPを選択してもよい。各NCC POPは、独立して、クライアントコンピューティングデバイス102の代わりに遠隔セッションをインスタンス化してもよく、クライアントコンピューティングデバイス102は、第1のNCC POPからデータを受け入れて処理結果を戻し得る。ネットワークコンピューティングプロバイダ106によって選択されることに続いて、NCC POP138は、ホストするために遠隔セッションに関連する遠隔セッション構成情報の1つ以上の態様、ならびに任意の関連する初期プロセスデータを得てもよい。一実施形態において、NCC POP138は、ネットワークコンピューティングプロバイダ106の構成要素によって転送された遠隔セッション構成情報を有してもよい。別の実施形態において、NCC POP138またはクライアントコンピューティングデバイス102は、NCC POP138とクライアントコンピューティングデバイス102との間の直接通信の確立を可能にする接続情報を受信し得る。例示的に、NCC POP138には、ネットワークコンピューティングプロバイダ106に本来提供される遠隔セッション構成情報および/または初期プロセスデータが提供され得るか、情報のサブセット(例えば、遠隔セッション要求に対応するアプリケーションの特定のサブプロセスを説明する情報のみ)が提供され得るか、または元の遠隔セッション構成情報に含まれていない追加の情報が提供され得る。
ブロック708において、NCC POP138が選択されることに続いて、ネットワークコンピューティングプロバイダ106は、NCC POP138に新たな遠隔セッションをインスタンス化させ得る。例示的に、新たな遠隔セッションのインスタンス化は、NCC POP138において新たな仮想マシンインスタンスおよび/またはアプリケーションインスタンスをロードすることと、デバイスメモリ、ストレージもしくはキャッシュスペース、プロセッサ時間、ネットワーク帯域幅、または新たな遠隔セッションのための他のコンピューティングもしくはネットワークリソースを確保すること、または割り当てることと、を含んでよい。例示的に、新たな遠隔セッションの1つ以上の特徴は、遠隔セッション構成情報に含まれる情報に基づき得る。例えば、遠隔セッション構成情報は、実行可能なコードおよび/または実行可能なコードへの参照、その実行可能なコードによって処理するための1つ以上のオブジェクトもしくはオブジェクトモデル、データ変換および/または処理のためのフレームワークもしくはフレームワークの識別、クライアントコンピューティングデバイスタイプもしくはアプリケーションタイプ、デバイスオペレーティングシステム、デバイススクリーン解像度もしくは表示領域、アプリケーション構成情報もしくは設定、および/またはアプリケーション122の処理、選好、もしくは能力を定義する任意の他の情報、アプリケーションサブプロセス、あるいはクライアントコンピューティングデバイス102を含み得る。
一実施形態において、NCC POP138は、アプリケーション122と同一または類似の能力を持つアプリケーションインスタンスをインスタンス化し得る。例示的に、アプリケーション122と同一または類似の能力を持つ並列アプリケーションを維持することは、NCC POP138が、特定のクライアントコンピューティングデバイス102上で作動する特定のアプリケーション122の全文脈内のプロセスデータを処理することを可能にし得る。さらなる実施形態において、NCC POP138は、コンピューティングデバイス102と同一または類似の能力を持つ仮想マシンインスタンスをインスタンス化し得る。例示的に、クライアントコンピューティングデバイス102と同一または類似の能力を持つ仮想マシンインスタンスを維持することは、NCC POP138が、特定のクライアントコンピューティングデバイス102上の表示に適切な寸法およびレイアウトに従ってプロセスデータを処理することを可能にし得る。
いくつかの実施形態において、NCC POP138は、新たな遠隔セッションをインスタンス化することに加えて、またはその代替として、既存の仮想マシンインスタンスおよび/もしくはアプリケーション、または遠隔セッションインスタンスを利用してもよい。例えば、NCC POP138が選択されることに続いて、ネットワークコンピューティングプロバイダ106は、NCC POP138に、遠隔セッションの既存のインスタンス(例えば、アプリケーション122のサブプロセスに対応する既存の遠隔セッションもしくはアプリケーション122の既存の並列インスタンス)、および/または仮想マシンインスタンス(例えば、NCC POP138において以前にインスタンス化された1つ以上のインスタンス)を遠隔セッション構成情報内の遠隔セッション要求と関連付けさせ得る。例示的に、既存の遠隔セッションおよび/または仮想マシンインスタンスは、別の遠隔セッション、例えば、アプリケーションおよびクライアントコンピューティングデバイス102もしくはユーザと関連する、並列アプリケーションまたは他の遠隔サブルーチンに対応し得るか、または異なるクライアントコンピューティングデバイス、ユーザ、またはアプリケーションインスタンスに関連する以前にインスタンス化された遠隔セッションであり得る。他の実施形態において、NCC POP138は、既存の仮想マシンインスタンス内で新たな遠隔セッションまたは他のアプリケーションプロセスをインスタンス化し得るか、または以前にインスタンス化されたソフトウェアプロセスおよび新たにインスタンス化されたソフトウェアプロセスを任意の数の他の方法で組み合わせてもよい。なおも更なる実施形態において、ネットワークコンピューティングプロバイダまたはNCC POP138は、遠隔セッション構成情報において定義される谷津のサブルーチンに基づいて、任意の数の新たな仮想マシンインスタンスおよび/または遠隔セッションをインスタンス化し得る(または既存のインスタンス化されたインスタンスを利用する)。
ブロック710において、ネットワークコンピューティングプロバイダ106は、上記のブロック704において、またはそれに続いて任意の初期プロセスデータを処理し得る。当業者であれば、様々な実施形態において、プロセスデータ(例えば、ファイルデータ、アプリケーション、またはオペレーティングシステムオブジェクト、変数値等)が、クライアントコンピューティングデバイス102によって提供された生のバイナリデータ、圧縮または暗号化されたデータ、デジタルファイルロッカーもしくは他のネットワークストレージ位置またはネットワークコンピューティングプロバイダ106もしくはクライアントコンピューティングデバイス102に関連するキャッシュ構成要素において記憶されるデータ等に対応し得ることを理解するであろう。例示的に、ネットワークコンピューティングプロバイダ106は、プロセスデータ内に含まれる任意の参照に基づいて、リソース要求をコンテンツの1つ以上のソース、例えば、コンテンツプロバイダ、コンテンツデリバリネットワーク(CDN)サービスプロバイダ、およびキャッシュに提供し得る。
引き続きブロック710について、ネットワークコンピューティングプロバイダ106は、初期プロセスデータを処理して、クライアントコンピューティングデバイス102に提供するための処理結果を生成してもよい。上述のように、一実施形態において、NCC POP138における遠隔セッションは、アプリケーションのサブプロセスに関連する実行可能なコードを含んでよい。例示的に、遠隔セッションに対応する実行可能なコードがアプリケーションのコードの一部からなる場合、NCC POP138は、コードをそこで実行する実行環境またはテストハーネスをインスタンス化し得る。例示的に、実行環境をインスタンス化することは、遠隔インスタンスに関連する仮想マシンインスタンスのメモリまたはデバイスメモリに1つ以上のオブジェクトまたは変数をロードすることを含み得る。例えば、画像を処理するためにサブプロセスに対応するコードの一部をインスタンス化するNCC POP138は、サブプロセスによって使用されるであろう任意の変数をロードするとともに、画像ファイルをメモリ内にロードしてもよく、さらに特別なメモリまたはストレージ位置を初期化して、コード実行の結果を捕捉してもよい。遠隔セッション内で実行するサブプロセスの観点から、コードが、クライアントコンピューティングデバイス102におけるアプリケーション内で正常に実行しているかのように見える場合がある。
一実施形態において、ネットワークコンピューティングプロバイダ106はさらに、クライアントコンピューティングデバイス102において作動するアプリケーションインスタンスと順次、または同時に並列アプリケーションプロセスを含む遠隔セッションをインスタンス化し得る。例示的に、並列アプリケーションは、クライアントコンピューティングデバイスにおいて実行するアプリケーションに加えて、任意の数のNCC POPにおける遠隔セッション内にロードされてもよい。各遠隔セッションは、任意の他の遠隔セッションと同一または異なるアプリケーションコードの態様または範囲をインスタンス化してもよく、各遠隔セッションは、任意の他の遠隔セッションと同一または異なる通信プロトコルを利用し得る。NCC POP138に提供されるプロセスデータは、クライアントコンピューティングデバイスにおいてアプリケーションのインスタンスとやりとりするユーザからのユーザ対話データ、およびアプリケーションの操作を並列して維持するために必要な任意の他のシステム、アプリケーション、またはデバイスイベント実行および処理を含んでよい。例示的に、並列アプリケーションを維持することは、実行するコードの断片のための特別な実行またはテストハーネスの要件なしに、NCC POP138におけるアプリケーション機能性の実行および処理を可能にし得る。
一実施形態において、遠隔プロセス構成情報による遠隔実行のために識別されたサブプロセスは、NCC POP138において正常に実行しながら、クライアントコンピューティングデバイス102で実行する並列アプリケーションインスタンスにおいて中断またはアンロードされ得る。並列アプリケーションがNCC POP138においてサブプロセス処理の態様を完了することに続いて、処理結果が、クライアントコンピューティングデバイスにおける並列アプリケーションに提供されてもよく、並列インスタンスは、並列実行で進行し得る。いくつかの実施形態において、クライアントコンピューティングデバイス102においてサブプロセスを中断またはアンロードすること、およびNCC POP138から処理結果を待つことは、クライアントコンピューティングデバイス102が、そのクライアントコンピューティングデバイス102における処理にコンピューティングリソースを投じることを回避するのを可能にする。さらなる実施形態において、クライアントコンピューティングデバイス102における並列アプリケーションインスタンスは、NCC POP138上の遠隔セッションにおけるサブプロセスの実行と並列でサブプロセス実行に関連する処理を行ってもよい。例示的に、クライアントコンピューティングデバイス102は、サブプロセスに関する一式の結果を生成するとともに、NCC POP138からのサブプロセスの結果に対応する処理結果を受信し得る。様々な実施形態において、クライアントは、この結果の複製を利用して、処理結果の正確性をチェックし得るか、または(例えば、ローカルサブプロセスから、または遠隔セッションを並列で実行する任意の数のNCC POPの1つから)第1の結果を受け入れて返送し、速度の遅いプロセスのさらなる実行をキャンセルし得る。例示的に、プロセスを並列で実行すること、および第1の結果を受け入れて返送することは、クライアントコンピューティングデバイス102が可能な限り速くユーザに結果を提供することを保証し得る。
図3を参照して上述のように、NCC POP138において実行する遠隔セッションは、クライアントコンピューティングデバイス102からプロセスデータを直接得てもよい。他の実施形態において、プロセスデータは、遠隔セッション構成情報に応答して、コンテンツプロバイダ、CDN、またはキャッシュからNCC POP138によって検索読み出されてもよい。クライアントコンピューティングデバイス102によって提供されるプロセスデータは、遠隔セッションに関連するデータまたはコンテンツをすべて含み得るか、またはコンテンツプロバイダもしくはCDNから検索読み出されるか、またはいくつかの他のソースから得られたNCC POP138のキャッシュ内に存在するコンテンツを補足し得る。一実施形態において、NCC POP138は、ローカルキャッシュから要求されたすべてのコンテンツを得てもよく、クライアントコンピューティングデバイス102から任意の未処理のリソースまたはコンテンツを得なくてもよい。例示的に、NCC POP138は、処理が必要とされる毎にクライアントコンピューティングデバイス102からプロセスデータを得るか、または処理するためのアプリケーションデータおよび/またはコンテンツの並列セットを維持し得る。
図7を引き続き参照して、ブロック702において、ネットワークコンピューティングプロバイダ106は、さらなる処理および表示のために、初期処理結果をクライアントコンピューティングデバイス102に提供してもよい。ブロック714において、ネットワークコンピューティングプロバイダは、データおよび処理結果をクライアントと交換し続けてもよい。さらなる実施例の目的で、クライアントコンピューティングデバイス102によって実現される例示の遠隔セッションユーザ対話ルーチン800が、図8を参照して以下に説明される。ブロック716において、新たな遠隔セッションルーチン700は終了する。
例示的に、一実施形態において、ネットワークコンピューティングプロバイダ106によって行われる、本明細書に記載される機能性の1つ以上の態様は、任意の他のコンピューティングデバイスまたは一式のコンピューティングデバイスによって行われてもよい。例えば、一実施形態において、ネットワークコンピューティングプロバイダ106によって行われるとして本明細書に記載される機能性は、クライアントコンピューティングデバイス102のユーザまたは任意の他のユーザもしくはエンティティに関連する1つ以上のコンピューティングデバイス(例えば、パーソナルコンピュータ、タブレット、スマートフォン等)によって行われてもよい。一実施形態において、1つ以上のコンピューティングデバイスは、クライアントコンピューティングデバイス102に対して物理的または論理的にローカルであり得る。1つ以上のコンピューティングデバイスは、有線もしくは無線接続上の広域もしくはローカルエリアネットワークによってリンクされ得るか、またはBluetooth、赤外線等を含む任意の数の伝送機構もしくは通信プロトコルによってリンクされてもよい。例えば、一実施形態において、スマートフォン等のクライアントコンピューティングデバイス102は、Bluetooth上の側近のパーソナルコンピュータ等の第2のコンピューティングデバイスに遠隔セッション構成情報を提供してもよい。遠隔構成情報に基づいて、第2のコンピューティングデバイスは、クライアントコンピューティングデバイス102上で作動するアプリケーションの様々なサブプロセスに対応する1つ以上の遠隔セッションをインスタンス化してもよく、上述のネットワークコンピューティングプロバイダ106と同一の方法で処理結果をクライアントコンピューティングデバイス102に戻してもよい。例示的に、ローカルマシン上で遠隔セッションをインスタンス化することは、ローカルデバイスの処理力のみを利用するだけでしつつ、ネットワークコンピューティングプロバイダ106上の遠隔処理の利益の多くを可能にし得る。一実施形態において、クライアントコンピューティングデバイス102は、第1の遠隔セッション構成情報を代替コンピューティングデバイスに提供して、代替コンピューティングデバイスに、アプリケーション122の第1のサブプロセスに対応する第1の遠隔セッションをインスタンス化させてもよく、さらに第2の遠隔セッション構成情報をネットワークコンピューティングプロバイダ106に提供して、ネットワークコンピューティングプロバイダ106に、アプリケーション122の第2のサブプロセスに対応する第2の遠隔セッションをインスタンス化し得る。例示的に、任意の数の代替コンピューティングデバイスまたはネットワークコンピューティングプロバイダ106は、クライアントコンピューティングデバイス102において実行するアプリケーション122の1つ以上のサブプロセスに関連する遠隔セッションをインスタンス化し得る。
なおもさらなる実施形態において、クライアントコンピューティングデバイス102は、ある条件が真である場合、パーソナルコンピュータ等のローカルデバイスが、アプリケーションの特定のサブプロセスのための遠隔セッションをインスタンス化するのみであることを遠隔セッション構成情報内で特定し得る。条件が満たされない場合、ローカルデバイスは、遠隔セッションをインスタンス化しない場合があり、および/または遠隔セッション構成情報をネットワークコンピューティングプロバイダ106に渡し、ネットワークコンピューティングプロバイダ106が遠隔セッションを代わりに、または追加としてインスタンス化することを要求し得る。例示的に、遠隔セッションインスタンス化の再振り向けのレベルには任意の数があり得る。例えば、遠隔セッション構成情報は、ある第1の条件が満たされる場合、第1のローカルデバイスが遠隔セッションをインスタンス化することを特定し、そうでなければ、ある第2の条件が満たされる場合、第2のローカルデバイスが遠隔セッションをインスタンス化することを特定し、そうでなければ、ネットワークコンピューティングプロバイダ106が遠隔セッションをインスタンス化することを特定し得る。別の実施形態において、遠隔セッション構成情報は、第1のネットワークコンピューティングプロバイダ106が遠隔セッションをインスタンス化することを特定し、そうでなければ第2のネットワークコンピューティングプロバイダが遠隔セッションをインスタンス化すること等を特定し得る。なおもさらなる実施形態において、1つ以上のデバイスまたは1つ以上のネットワークコンピューティングプロバイダ106は、遠隔セッションを並列でインスタンス化し得る。例えば、クライアントコンピューティングデバイス102は、遠隔セッション構成情報を代替コンピューティングデバイスおよびネットワークコンピューティングプロバイダ106に提供し得る。例示的に、遠隔セッション構成情報は、代替コンピューティングデバイスおよびネットワークコンピューティングプロバイダ106の両方に、アプリケーション122の同一のサブプロセスに関連する遠隔セッションをインスタンス化し得る。一実施形態において、代替コンピューティングデバイス102およびネットワークコンピューティングプロバイダ106はいずれもサブプロセスに関連する命令を処理してもよく、いずれも処理結果をクライアントコンピューティングデバイスに提供し得る。クライアントコンピューティングデバイスは、提供される第1の処理結果を受け入れ得るか、または事前に定義された、もしくは動的に決定された選好に基づいて特定の処理結果を受け入れ得る。
別のデバイスまたはネットワークコンピューティングプロバイダに向けられる(すなわち、アプリケーションのサブプロセスのための遠隔セッションのインスタンス化に関する要求または情報を渡す)命令は、本明細書において、クライアントコンピューティングデバイス102によって生成された遠隔セッション構成データに含まれると記載されるが、代替デバイスまたはネットワークコンピューティングプロバイダ106に向ける決定は、上述のように、任意の数のデバイスまたはネットワークコンピューティングプロバイダによって動的に決定されてもよく、命令は、遠隔セッション構成情報内に含まれる、もしくは添付され得るか、または任意の他の手段によって他のデバイスまたはネットワークコンピューティングプロバイダにコードされる、および/または渡されてもよいことを理解されたい。
図8は、クライアントコンピューティングデバイス102によって実現される遠隔セッションユーザ対話ルーチン800を示すフロー図である。遠隔セッションユーザ対話ルーチン800は、ブロック802において開始する。例示的に、遠隔セッションユーザ対話ルーチン800は、NCC POP138における新たな遠隔セッションのインスタンス化に続いて開始し得る。例えば、処理ユーザ対話ルーチン800は、上記の図7のブロック714に対応し得る。
例示的に、クライアントコンピューティングデバイス102におけるアプリケーションは、1つ以上の対話型要素、例えば、フォーム、ボタン、アニメーション等を有してもよい。これらの対話型要素とのユーザ対話は、1つ以上のサブプロセスによるデータの処理および表示を必要とし得る。例えば、アプリケーション内のドロップダウンメニューにおいて要素を選択することは、処理を必要とし得、アプリケーションの構成または外観を変更し得る。他の実施形態において、処理は、任意の他のシステムもしくはアプリケーションイベント、または他のトリガによって必要とされ得る。例えば、アプリケーションにおけるデータ処理サブプロセスの完了が、データフォーマット化の実行をトリガしてサブプロセスを表示し得る。例示的に、かつ図6および7を参照して上述のように、処理は、クライアントコンピューティングデバイス102においてローカルに行われ得るか、または遠隔セッション構成情報に応じて、NCC POP138において実行する遠隔セッションとして行われ得る。例えば、遠隔セッション構成情報が相当なローカル処理を特定する場合、様々なユーザ対話および他の処理が、クライアントコンピューティングデバイス102においてローカルに行われてもよい。例示的に、ユーザ対話をクライアントコンピューティングデバイス102においてローカルに行うことは、場合によっては、より良好な応答性およびより少ない遅延を可能にする。例えば、対話に対応するプロセスデータは、処理のためにNCC POP138に送信される必要がないため、単純なユーザ対話は(例えば、ラジオボタンの選択、またはフィールドへのテキスト入力)、より迅速に実行し得る。
さらなる実施例として、遠隔セッション構成情報が、コンテンツの大量の遠隔処理を特定する場合、表示されたコンテンツとのすべてのユーザ対話は、様々なNCC POP上でインスタンス化された1つ以上の遠隔セッションにおいて、遠隔ユーザ対話として行われてもよい。例えば、一実施形態において、図7を参照して上述のように、NCC POP138は、クライアントコンピューティングデバイス102において実行するアプリケーション122の並列インスタンスを含む遠隔セッションを実行していてもよい。例示的に、ユーザ入力(例えば、キーボード入力およびカーソル位置)は、RDPプロトコルデータユニットにカプセル化され、NCC POP138での遠隔セッションにおいてネットワーク104を通じて並列アプリケーションに伝送され得る。例示的に、NCC POP138は、ユーザ対話を並列アプリケーションに適用し、更新されたビットマップ、ならびにアプリケーションおよびアプリケーションコンテンツの更新された表現に対応するインターフェースデータからなる処理結果をクライアントコンピューティングデバイス102に伝送し得る。例示的に、アプリケーションとのユーザ対話をNCC POP138において遠隔に処理することは、データがネットワーク上を通過することが必要とされ、ネットワーク待ち時間によって制限されるため、インターフェースの応答性に悪影響を及ぼし得るが、NCC POP138の処理待ち時間が、相当量の処理を必要とする処理は、遠隔ユーザ対話として処理されるとき、クライアントコンピューティングデバイス102の処理待ち時間よりも実質的に短い場合があるため、より良好に機能し得る。
ブロック804において、クライアントコンピューティングデバイス102は、サブプロセスイベントを得る。例示的に、サブプロセスイベントは、任意のシステムもしくはユーザ対話、アプリケーションもしくはシステムイベントもしくはトリガ、またはアプリケーション122のサブプロセスの1つ以上の態様の実行を引き起こす他のタイプのデータを含み得る。このイベントは、上記のように、ローカルインターフェース構成要素またはコンテンツとの対話を含み得るか、またはアプリケーションもしくはオペレーティングシステムの別のサブプロセスによって生成されたイベントであり得る。サブプロセスによるこのイベントの処理は、構成要素もしくは要素の性質、および図6および7ならびに上に説明される遠隔セッション構成情報によって特定された処理分割に応じてローカルおよび/または遠隔処理を必要とし得る。ブロック806において、クライアントコンピューティングデバイス102は、サブプロセスの対話処理要件を決定する(例えば、遠隔セッション構成情報に基づいて)。
決定ブロック808において、サブプロセスが全面的にローカルで処理されるべきであるか、またはローカルに処理されるべき任意の態様を有する場合(例えば、単純なインターフェースフィードバック、遠隔セッションに提供するためのプロセスデータの準備等)、ルーチン800は、ブロック810に移動してクライアントコンピューティングデバイス102におけるサブプロセスのローカルの態様(複数可)を処理する。例示的に、また上述のように、インターフェース構成要素および他の要素をローカルに更新する等の態様の処理は、アプリケーションが応答性の良いユーザインターフェースおよびコンテンツを提供することを可能にし得る。サブプロセスの任意のローカル態様(複数可)を処理することに続いて、またはサブプロセスがローカル要素を有しない場合(例えば、処理結果のビットマップを受信および表示するためにRDP通信プロトコルを利用するアプリケーション)、ルーチン800は、決定ブロック812に移動する。サブプロセスが全面的に遠隔プロセスされるべきであるか、または処理を必要とする遠隔態様を有するとき、ルーチン800はブロック814に移動して、プロセスデータをネットワークコンピューティングプロバイダ106に提供する。一実施形態において、大量のサーバ側の遠隔セッションの構成情報の場合、プロセスデータは、入力データ、カーソル位置、またはキーボード入力等のユーザ対話データを含んでもよい(例えば、RDPまたは類似のプロトコルにカプセル化される)。いくつかの実施形態において、カーソル位置等の遠隔ユーザ対話データを含むプロセスデータは、ネットワークコンピューティングプロバイダ106に順次に提供され得るが、他の実施形態では、遠隔ユーザ対話データを含むプロセスデータは、特定のイベントまたはサブプロセス実行に関連するときに、ネットワークコンピューティングプロバイダ106に提供され得るのみである。
ブロック816において、クライアントコンピューティングデバイス102は、ネットワークコンピューティングプロバイダ106からの更新された処理結果を得るが、ネットワークコンピューティングプロバイダ106は、任意の提供されたプロセスデータを処理している。ブロック818において、クライアントコンピューティングデバイス102は、ブロック810において行われた処理結果および/またはローカル処理に必要とされる任意の追加の処理を行う(例えば、遠隔セッション構成情報に基づいて)。一実施形態において、これは、アプリケーション122のフローに再統合するために処理結果を変換または準備することを含み得る。ブロック820において、処理ユーザ対話ルーチン800が終了する。例示的に、ルーチンは、アプリケーション122の1つ以上のサブプロセスの実行をトリガするさらなるイベントに応答して、任意の回数だけ再度実行され得る。
例示的に、ネットワークコンピューティングプロバイダ106によってインスタンス化された遠隔セッションは、アプリケーションまたはアプリケーションの態様が、閉じられるか、または終了されたときに終了し得るか、遠隔セッションは、クライアントコンピューティングデバイス102において実行するサブプロセスと置き換えられるときに終了し得るか(例えば、更新された遠隔プロセス構成情報が、以前の遠隔プロセスがローカルに行われるべきであることを特定する場合)、またはタイマーもしくは他のイベントに従って終了し得る。例示的に、遠隔セッションを終了する決定は、クライアントコンピューティングデバイス102、ネットワークコンピューティングプロバイダ106、NCC POP138、または任意のそれらの組み合わせによって行われ得る。一実施形態において、遠隔セッションがタイムアウトのために自動的に終了したが、依然としてアプリケーションインスタンスがクライアントコンピューティングデバイス102において持続している場合(例えば、ユーザがアプリケーションとの対話を停止したため、プロセスデータが遠隔セッションに送信されなくなった場合)、後にユーザがコンテンツと対話しようとすると、終了されたセッションの最後の状態に従って、ネットワークコンピューティングプロバイダ106によってインスタンス化される新たな遠隔セッションを引き起こし得る。例示的に、タイムアウト後の遠隔セッションの終了は、ネットワークコンピューティングストレージプロバイダ106がNCC POPにおいてコンピューティングリソースを節約することを可能にする。一実施形態において、この処理は、遠隔セッションが中断期間に終了されているが、クライアントコンピューティングデバイス102におけるアプリケーション122および/またはユーザに対して透過的であり得る。
さらなる実施形態において、ネットワークコンピューティングプロバイダ106は、クライアントコンピューティングデバイス102とネットワークコンピューティングプロバイダ106との間の接続が喪失した後(例えば、アプリケーション122がクライアントコンピューティングデバイス102において終了したか、またはクライアントコンピューティングデバイス102がネットワーク接続性を喪失した場合)であっても、アプリケーション122に関連するアプリケーションおよび/またはシステム状態を維持し得る。例示的に、クライアントコンピューティングデバイス102においてアプリケーション122の第2のインスタンスを開始することは、アプリケーションをネットワークコンピューティングプロバイダ106に接続させ、アプリケーションの最後の状態に関連する状態データおよび/または処理結果を得て(本明細書では「アプリケーションコンテキスト」と称され得る)、それが最後に中止された場所からローカル/遠隔実行を再開し得る。例示的に、ネットワークコンピューティングプロバイダからの状態データおよび/または処理結果の検索読み出しは、以前のアプリケーションセッションからシームレス連続性の経験をユーザに提供し得る。
なおもさらなる実施形態において、ネットワークコンピューティングプロバイダ106は、クライアントコンピューティングデバイス102において実行するアプリケーション122とネットワークコンピューティングプロバイダ106との間の接続が喪失した後であっても、アプリケーション122に関連するデータまたは実行命令を処理し続けてもよい。例えば、アプリケーション122の複雑またはリソース集約的なサブプロセスは、ネットワークコンピューティングプロバイダ106において、クライアントコンピューティングデバイス102でのユーザによって開始され得る。この実施例の目的で、ネットワークコンピューティングプロバイダ106においてサブプロセスを開始することに続いて、ユーザは、クライアントコンピューティングデバイス102をパワーダウンするか、クライアントコンピューティングデバイス102において実行するアプリケーション122のインスタンスを終了するか、またはネットワークコンピューティングプロバイダ106とのネットワーク接続を喪失し得る。ネットワークコンピューティングプロバイダ106は、クライアントコンピューティングデバイス102におけるアプリケーション122と、ネットワークコンピューティングプロバイダ106との間の接続がアクティブでなくなった後でさえも、サブプロセスに関連する処理を実行し続け得る。この実施例において、ユーザが後次の時点でアプリケーション122を使用するために戻ったとき、クライアントコンピューティングデバイス102は、ネットワークコンピューティングプロバイダ106に接続して、アプリケーション122がネットワークコンピューティングプロバイダ106と通信していない間に処理された任意の処理結果を得てもよい。アプリケーション122は、クライアントコンピューティングデバイス102において、任意のさらなる処理を行い、これらの結果をユーザに表示し得る。例示的に、クライアントコンピューティングデバイス102と通信していない間にネットワークコンピューティングプロバイダ106において結果を処理することは、クライアントコンピューティングデバイス102におけるユーザが、クライアントコンピューティングデバイス102を継続して処理するか、またはアプリケーション122を実行するか、またはネットワークコンピューティングプロバイダ106との一定の通信を維持する必要なく、コンピューティング上複雑または集約的な処理を開始し、後の時点で結果を読み出すことを可能にする。
様々な他の実施形態において、複数のアプリケーションコンテキストが、アプリケーションとのユーザ対話の過去の状態または期間に対応するネットワークコンピューティングプロバイダ106において維持され得る。したがって、特定のアプリケーションコンテキストが、過去のアプリケーションコンテキストからの作業を継続するために、ロードされるアプリケーションのインスタンスに続いて、ユーザまたはクライアントコンピューティングデバイス102により選択され得る。例えば、ユーザは、1つ以上の過去の状態の選択を容易にするグラフィックインターフェースとともに提示され得る。なおもさらに、別の実施形態において、ユーザは、並列(または実質的に並列)分岐を可能にする過去のアプリケーションコンテキストから対話を形成することができる。
特に本開示の様々な実施形態のいくつかは、以下の付記によって説明することができる。
付記1.遠隔実行管理のためのコンピュータで実現される方法であって、
ソフトウェアプロセスインスタンスを初期化することと、
ソフトウェアプロセスインスタンスに関連するソフトウェアプロセス構成情報を得ることであって、ソフトウェアプロセス構成情報が、ソフトウェアプロセスインスタンスの1つ以上のサブプロセスを識別し、ソフトウェアプロセスインスタンスの1つ以上のサブプロセスのそれぞれが、複数の実行可能な命令を含む、得ることと、
ソフトウェアプロセス構成情報に少なくとも部分的に基づいて、ソフトウェアプロセスインスタンスのための遠隔プロセス構成を決定することであって、遠隔プロセス構成が、ネットワークコンピューティングプロバイダにおける遠隔操作のためのソフトウェアプロセスインスタンスの1つ以上のサブプロセスのサブプロセスを識別し、遠隔プロセス構成が、データ交換のための通信プロトコルを識別する、決定することと、
通信プロトコルに従って処理するためにプロセスデータをネットワークコンピューティングプロバイダに提供することであって、プロセスデータが、ソフトウェアプロセスインスタンスに関連する一式のデータ、およびネットワークコンピューティングプロバイダにおいて行われるサブプロセスに関連する1つ以上の実行可能な命令を含む、提供することと、
通信プロトコルに従ってネットワークコンピューティングプロバイダから1つ以上の処理結果を得ることであって、1つ以上の処理結果が、1つ以上の実行可能な命令の実行を含む、ネットワークコンピューティングおよびストレージ構成要素におけるプロセスデータの処理の結果に対応する、得ることと、
ソフトウェアプロセスインスタンスによって使用するために、得られた1つ以上の処理結果を処理することと、
を含む、コンピュータで実現される方法。
付記2.通信プロトコルが、ハイパーテキスト転送プロトコル(HTTP)、ファイル転送プロトコル(FTP)、リモートデスクトッププロトコル(RDP)、バーチャルネットワークコンピューティング(VNC)プロトコル、X−Windowsプロトコル、およびリモートフレームバッファプロトコルの少なくとも1つを含む、付記1に記載のコンピュータで実現される方法。
付記3.ソフトウェアプロセスインスタンスのための遠隔プロセス構成を決定することが、ソフトウェアプロセスインスタンスに関連するデータの特徴、ソフトウェアプロセスインスタンスのコンピューティングプロファイル、ソフトウェアプロセスインスタンスのサブプロセスのコンピューティングプロファイル、ソフトウェアプロセスインスタンスメモリ使用、ソフトウェアプロセスインスタンスプロセッサ使用、ソフトウェアプロセスインスタンスデータストア使用、ソフトウェアプロセスインスタンスネットワーク使用、クライアントコンピューティングデバイスの特徴、ネットワークコンピューティングプロバイダの特徴、クライアントコンピューティングデバイスの構成、クライアントコンピューティングデバイスにおける現在のリソース使用、ネットワークコンピューティングプロバイダにおける現在のリソース使用、ネットワーク接続の特徴、ユーザに関連する選好、または事前に定義された構成に基づいて、遠隔プロセス構成を決定することを含む、付記1に記載のコンピュータで実現される方法。
付記4.遠隔プロセス実行のためのシステムであって、
1つ以上のコンピュータプロセッサと、
1つ以上のコンピュータプロセッサの少なくとも1つによってアクセス可能な少なくとも1つのコンピュータメモリと、
1つ以上のコンピュータプロセッサによって実行される実行可能なソフトウェアモジュールを含む遠隔実行管理構成要素と、を備え、遠隔実行管理構成要素が、
ソフトウェアプロセスインスタンスのための遠隔プロセス構成を決定することであって、遠隔プロセス構成が、遠隔操作のためのソフトウェアプロセスインスタンスの少なくとも1つのサブプロセスを識別する、決定することと、
ソフトウェアプロセスインスタンスの少なくとも1つのサブプロセスに関連するプロセスデータをネットワークコンピューティングプロバイダに提供することであって、プロセスデータが、ソフトウェアプロセスインスタンスの少なくとも1つのサブプロセスに関連するデータ、およびソフトウェアプロセスインスタンスの少なくとも1つのサブプロセスに関連する複数の命令の少なくとも1つを少なくとも識別する、提供することと、
ネットワークコンピューティングプロバイダから1つ以上の処理結果を得ることであって、1つ以上の処理結果が、ネットワークコンピューティングプロバイダにおいて複数の命令の1つ以上の実行と関連する、得ることと、
ソフトウェアプロセスインスタンスに従って、得られた1つ以上の処理結果を処理することと、
を行うように動作可能である、システム。
付記5.遠隔プロセス構成が、ネットワークコンピューティングおよびストレージ構成要素とのデータの交換のための通信プロトコルを識別する、付記4に記載のシステム。
付記6.プロセスデータおよび1つ以上の処理結果の少なくとも1つが、テキスト、拡張マークアップ言語(XML)、ハイパーテキストマークアップ言語(HTML)、JavaScriptオブジェクト表記(JSON)、実行可能なバイナリ、圧縮フォーマット、暗号化フォーマット、ソフトウェアコードフォーマット、画像フォーマット、ビデオフォーマット、およびオーディオフォーマットの少なくとも1つを含むフォーマットでコードされる、付記5に記載のシステム。
付記7.クライアントコンピューティングデバイスが、プロセスデータをネットワークコンピューティングプロバイダに提供し、1つ以上の処理結果を、ネットワーク接続によりネットワークコンピューティングプロバイダから得る、付記4に記載のシステム。
付記8.ネットワーク接続が断続的である、付記7に記載のシステム。
付記9.少なくとも1つのサブプロセスが、第1のサブプロセスと、第2のサブプロセスと、を含む、付記4に記載のシステム。
付記10.第1のサブプロセスが、第1の通信プロトコルに関連し、第2のサブプロセスが、第2の通信プロトコルに関連する、付記9に記載のシステム。
付記11.プロセスデータが、ソフトウェアプロセスインスタンスに関連する一式のデータを含む、付記4に記載のシステム。
付記12.1つ以上の処理結果が、少なくともソフトウェアプロセスインスタンスに関連する一式のデータの表現に対応する、付記11に記載のシステム。
付記13.遠隔実行管理構成要素が、一式のデータの表現を表示させるようにさらに動作可能である、付記12に記載のシステム。
付記14.一式のデータの表現が、一式のデータの一部を含む、付記13に記載のシステム。
付記15.遠隔実行管理構成要素が、ソフトウェアプロセス実行データに少なくとも部分的に基づいて、ソフトウェアプロセスインスタンスのための遠隔プロセス構成を決定するようにさらに動作可能である、付記4に記載のシステム。
付記16.ソフトウェアプロセス実行データが、ソフトウェアプロセスインスタンスの実行のモニタリングに基づく、付記15に記載のシステム。
付記17.ソフトウェアプロセス実行データが、1つ以上の第三者コンピューティングデバイスにおけるソフトウェアプロセスインスタンスに関する1つ以上のソフトウェアプロセスの実行のモニタリングに基づく、付記16に記載のシステム。
付記18.遠隔実行管理構成要素が、ソフトウェアプロセス実行データに基づいて、ネットワークコンピューティングプロバイダにおける遠隔実行のためのソフトウェアプロセスインスタンスのサブプロセスを識別するようにさらに動作可能である、付記15に記載のシステム。
付記19.遠隔実行管理構成要素が、ソフトウェアプロセス実行データに基づいて、通信プロトコルをソフトウェアプロセスインスタンスのサブプロセスと関連付けるようにさらに動作可能である、付記15に記載のシステム。
付記20.遠隔プロセス構成が、ネットワークコンピューティングプロバイダから得られた情報に基づく、付記4に記載のシステム。
付記21.遠隔プロセス実行のためのコンピュータで実現される方法であって、
ソフトウェアプロセスインスタンスを初期化することと、
ソフトウェアプロセスインスタンスのための遠隔プロセス構成を決定することであって、遠隔プロセス構成が、遠隔操作のためのソフトウェアプロセスインスタンスの少なくとも1つのサブプロセスを識別する、決定することと、
プロセスデータをネットワークコンピューティングプロバイダに提供することであって、プロセスデータが、少なくとも1つのサブプロセスに関連するデータ、および少なくとも1つのサブプロセスに関連する複数の実行可能なデバイス命令の少なくとも1つを識別する、提供することと、
ネットワークコンピューティングプロバイダから1つ以上の処理結果を得ることであって、1つ以上の処理結果が、少なくとも1つのサブプロセスに関連する複数の実行可能なデバイス命令の1つ以上の実行と関連する、得ることと、
ソフトウェアプロセスインスタンスに従って得られた1つ以上の処理結果を処理することと、
を含む、コンピュータで実現される方法。
付記22.クライアントコンピューティングデバイスが、プロセスデータをネットワークコンピューティングプロバイダに提供し、1つ以上の処理結果を、ネットワーク接続によってでネットワークコンピューティングプロバイダから得る、付記21に記載のコンピュータで実現される方法。
付記23.プロセスデータが、ソフトウェアプロセスインスタンスに関連する一式のデータを含む、付記21に記載のコンピュータで実現される方法。
付記24.1つ以上の処理結果が、少なくともソフトウェアプロセスインスタンスに関連する一式のデータの表現に対応する、付記23に記載のコンピュータで実現される方法。
付記25.ソフトウェアプロセスインスタンスに従って得られた1つ以上の処理結果を処理することが、一式のデータの表現の表示を引き起こすことを含む、付記24に記載のコンピュータで実現される方法。
付記26.一式のデータの表現が、一式のデータの一部を含む、付記25に記載のコンピュータで実現される方法。
付記27.
クライアントコンピューティングデバイスにおいてソフトウェアプロセスインスタンスを終了することと、
クライアントコンピューティングデバイスにおいて第2のソフトウェアプロセスインスタンスを初期化することと、
ネットワークコンピューティングプロバイダから1つ以上の処理結果を得ることであって、1つ以上の処理結果が、クライアントコンピューティングデバイスにおける終了前にソフトウェアプロセスインスタンスの最終状態と関連することと、
をさらに含む、付記21に記載のコンピュータで実現される方法。
付記28.ネットワークコンピューティングプロバイダから1つ以上の処理結果を得ることが、クライアントコンピューティングデバイスとネットワークコンピューティングプロバイダとの間の制限されたネットワーク接続性に基づく、付記27に記載のコンピュータで実現される方法。
付記29.クライアントコンピューティングデバイスにおいてソフトウェアプロセスインスタンスを終了させることをさらに含み、1つ以上の処理結果をネットワークコンピューティングプロバイダから得ることが、ソフトウェアプロセスインスタンスの終了前に1つ以上の処理結果を得ることをさらに含む、付記27に記載のコンピュータで実現される方法。
付記30.処理するために第2のプロセスデータを第1のコンピューティングデバイスに提供することをさらに含み、第2のプロセスデータが、第1のコンピューティングデバイスにおいて行われる少なくとも1つのサブプロセスに関連する第2の複数の実行可能な命令を識別する、付記21に記載のコンピュータで実現される方法。
付記31.コンピューティングデバイスに関連するコンピューティングリソース利用に基づいて、プロセスデータを第1のコンピューティングデバイスに提供するか、またはネットワークコンピューティングプロバイダに提供するかどうかを決定することをさらに含む、付記30に記載のコンピュータで実現される方法。
付記32.遠隔実行管理のためのコンピュータで実現される方法であって、
クライアントコンピューティングデバイスによって、ソフトウェアプロセスインスタンスを初期化することと、
クライアントコンピューティングデバイスによって、ソフトウェアプロセスインスタンスに関連するソフトウェアプロセス構成情報を得ることであって、ソフトウェアプロセス構成情報が、ソフトウェアプロセスインスタンスの1つ以上のサブプロセスを識別し、ソフトウェアプロセスインスタンスの1つ以上のサブプロセスのそれぞれが、複数の実行可能な命令を含む、得ることと、
クライアントコンピューティングデバイスによって、ソフトウェアプロセス構成情報に少なくとも部分的に基づいて、ソフトウェアプロセスインスタンスのための遠隔プロセス構成を決定することであって、遠隔プロセス構成が、代替コンピューティングデバイスにおける実行のためにソフトウェアプロセスインスタンスの1つ以上のサブプロセスのサブプロセスを識別し、遠隔プロセス構成が、データの交換のための通信プロトコルを識別する、決定することと、
クライアントコンピューティングデバイスによって、通信プロトコルに従って処理するために、プロセスデータを代替コンピューティングデバイスに提供することであって、プロセスデータが、ソフトウェアプロセスインスタンスに関連する一式のデータ、および代替コンピューティングデバイスにおいて実行されるサブプロセスに関連する1つ以上の実行可能な命令を含む、提供することと、
クライアントコンピューティングデバイスにおいて、通信プロトコルに従って代替コンピューティングデバイスから1つ以上の処理結果を得ることであって、1つ以上の処理結果は、1つ以上の実行可能な命令の実行を含む、代替コンピューティングデバイスにおけるプロセスデータの処理の結果に対応する、得ることと、
クライアントコンピューティングデバイスによって、ソフトウェアプロセスインスタンスによって使用するための得られた1つ以上の処理結果を処理することと、
を含む、コンピュータで実現される方法。
付記33.通信プロトコルが、ハイパーテキスト転送プロトコル(HTTP)、ファイル転送プロトコル(FTP)、リモートデスクトッププロトコル(RDP)、X−Windowsプロトコル、バーチャルネットワークコンピューティング(VNC)プロトコル、X−Windowsプロトコル、およびリモートフレームバッファプロトコルの少なくとも1つを含む、付記32に記載のコンピュータで実現される方法。
付記34.ソフトウェアプロセスインスタンスのための遠隔プロセス構成を決定することが、ソフトウェアプロセスインスタンスに関連するデータの特徴、ソフトウェアプロセスインスタンスのコンピューティングプロファイル、ソフトウェアプロセスインスタンスのサブプロセスのコンピューティングプロファイル、ソフトウェアプロセスインスタンスネットワーク使用要件、クライアントコンピューティングデバイスの特徴、代替コンピューティングデバイスの特徴、クライアントコンピューティングデバイスの構成、クライアントコンピューティングデバイスにおけるリソース使用可能性、代替コンピューティングデバイスにおけるリソース利用可能性、ネットワーク接続の特徴、ユーザに関連する選好、または事前に定義された構成の少なくとも1つに基づいて、遠隔プロセス構成を決定することを含む、付記32に記載のコンピュータで実現される方法。
付記35.代替コンピューティングデバイスが、パーソナルコンピュータ、ラップトップ、タブレット、パーソナルデジタルアシスタント(PDA)、スマートフォン、ゲーミングコンソール、およびホームサーバの少なくとも1つを含む、付記32に記載のコンピュータで実現される方法。
付記36.処理するためにプロセスデータを代替コンピューティングデバイスに提供することが、Bluetooth接続、赤外線接続、無線ネットワーク接続、および優先ネットワーク接続の少なくとも1つによってプロセスデータを提供することを含む、付記32に記載のコンピュータで実現される方法。
付記37.遠隔プロセス実行のためのシステムであって、
1つ以上のコンピュータプロセッサと、
1つ以上のコンピュータプロセッサの少なくとも1つによってアクセス可能な少なくとも1つのコンピュータメモリと、
1つ以上のコンピュータプロセッサによって実行される実行可能なソフトウェアモジュールを備える実行管理構成要素であって、
ソフトウェアプロセスインスタンスのための遠隔プロセス構成を決定することであって、遠隔プロセス構成が、ソフトウェアプロセスインスタンスの少なくとも1つのサブプロセスを識別する、決定することと、
ソフトウェアプロセスインスタンスの少なくとも1つのサブプロセスに関連するプロセスデータを第1のコンピューティングデバイスに提供することであって、プロセスデータが、ソフトウェアプロセスインスタンスの少なくとも1つのサブプロセスに関連するデータ、およびソフトウェアプロセスインスタンスの少なくとも1つのサブプロセスに関連する複数の命令の少なくとも1つを少なくとも識別する、提供することと、
第2のコンピューティングデバイスから1つ以上の処理結果を得ることであって、1つ以上の処理結果が、第2のコンピューティングデバイスにおける複数の命令の1つ以上の実行と関連する、得ることと、
ソフトウェアプロセスインスタンスに従って得られた1つ以上の処理結果を処理することと、
を行うように動作可能である、システム。
付記38.ソフトウェアプロセスインスタンスのための遠隔プロセス構成を決定することが、ソフトウェアプロセスインスタンスに関連するデータの特徴、ソフトウェアプロセスインスタンスのコンピューティングプロファイル、ソフトウェアプロセスインスタンスのサブプロセスのコンピューティングプロファイル、ソフトウェアプロセスインスタンスネットワーク使用要件、クライアントコンピューティングデバイスの特徴、第1のコンピューティングデバイスの特徴、第2のコンピューティングデバイスの特徴、クライアントコンピューティングデバイスの構成、クライアントコンピューティングデバイスにおけるリソース利用可能性、第1のコンピューティングデバイスにおけるリソース利用可能性、ネットワーク接続の特徴、ユーザに関連する選好、または事前に定義された構成の少なくとも1つに基づいて遠隔プロセス構成を決定することを含む、付記37に記載のシステム。
付記39.第1のコンピューティングデバイスおよび第2のコンピューティングデバイスが、同一のコンピューティングデバイスである、付記37に記載のシステム。
付記40.ソフトウェアプロセスインスタンスの少なくとも1つのサブプロセスに関連するプロセスデータを第1のコンピューティングデバイスに提供することが、ソフトウェアプロセスインスタンスの少なくとも1つのサブプロセスに関連するデータ、およびソフトウェアプロセスインスタンスの少なくとも1つのサブプロセスに関連する複数の命令の少なくとも1つを第1のコンピューティングデバイスに提供することを含む、付記37に記載のシステム。
付記41.第2のコンピューティングデバイスが、パーソナルコンピュータ、ラップトップ、パーソナルデジタルアシスタント(PDA)、スマートフォン、ゲーミングコンソール、およびホームサーバの少なくとも1つを含む、付記37に記載のシステム。
付記42.実行管理構成要素が、プロセスデータを第1のコンピューティングデバイスに提供し、1つ以上の処理結果を、少なくとも1つのネットワーク接続により第2のコンピューティングデバイスから得るようにさらに動作可能である、付記37に記載のシステム。
付記43.少なくとも1つのネットワーク接続が制限されており、実行管理構成要素が、制限されたネットワーク接続に基づいて、第1のコンピューティングデバイスに提供するデータの量を決定するようにさらに動作可能である、付記42に記載のシステム。
付記44.ソフトウェアプロセスインスタンスの少なくとも1つのサブプロセスが、第1のサブプロセスを含み、遠隔プロセス構成情報が、ネットワークコンピューティングプロバイダにおける遠隔操作のために、ソフトウェアプロセスインスタンスの第2のサブプロセスを識別する、付記37に記載のシステム。
付記45.実行管理構成要素が、第1のサブプロセスと関連する第1の通信プロトコル、および第2のサブプロセスと関連する第2の通信プロトコルを決定するようにさらに動作可能である、付記44に記載のシステム。
付記46.実行管理構成要素が、Bluetooth接続、赤外線接続、無線ネットワーク接続、および有線ネットワーク接続の少なくとも1つにより、処理するために、プロセスデータを第1のコンピューティングデバイスに提供するようにさらに動作可能である、付記37に記載のシステム。
付記47.プロセスデータが、第1のコンピューティングデバイスによって第2のコンピューティングデバイスに提供される、付記37に記載のシステム。
付記48.第1のコンピューティングデバイスが、第1のコンピューティングデバイスにおいてプロセスデータを処理するか、または処理するためにプロセスデータを第2のコンピューティングデバイスに提供するかを決定するように構成される、付記47に記載のシステム。
付記49.第1のコンピューティングデバイスにおいてプロセスデータを処理するか、または処理するためにプロセスデータを第2のコンピューティングデバイスに提供するかを、第1のコンピューティングデバイスによって決定することが、サブプロセスに関連する処理要件、第1のコンピューティングデバイスにおけるリソース利用可能性、第2のコンピューティングデバイスにおけるリソース利用可能性、およびプロセスデータの特徴の少なくとも1つに基づく、付記48に記載のシステム。
付記50.実行管理構成要素が、プロセスデータを第1のコンピューティングデバイスにおいて処理させるか、またはプロセスデータを処理するために第2のコンピューティングデバイスに提供させるようにさらに動作可能である、付記38に記載のシステム。
付記51.遠隔プロセス実行のためのコンピュータで実現される方法であって、
クライアントコンピューティングデバイスにおいて、ソフトウェアプロセスインスタンスを初期化することと、
ソフトウェアプロセスインスタンスのための遠隔プロセス構成を決定することであって、遠隔プロセス構成が、ソフトウェアプロセスインスタンスの少なくとも1つのサブプロセスを識別する、決定することと、
プロセスデータを第1のコンピューティングデバイスに提供することであって、プロセスデータが、少なくとも1つのサブプロセス、および少なくとも1つのサブプロセスに関連する複数の実行可能なデバイス命令の少なくとも1つを識別する、提供することと、
1つ以上の処理結果を第2のコンピューティングデバイスから得ることであって、1つ以上の処理結果が、少なくとも1つのサブプロセスに関連する複数の実行可能なデバイスの1つ以上の実行と関連する、得ることと、
ソフトウェアプロセスインスタンスに従って、得られた1つ以上の処理結果を処理することと、
を含む、コンピュータで実現される方法。
付記52.プロセスデータおよび1つ以上の処理結果の少なくとも1つが、テキスト、拡張マークアップ言語(XML)、ハイパーテキストマークアップ言語(HTML)、JavaScriptオブジェクト表記(JSON)、実行可能なバイナリ、圧縮フォーマット、暗号化フォーマット、ソフトウェアコードフォーマット、画像フォーマット、ビデオフォーマット、およびオーディオフォーマットの少なくとも1つを含むフォーマットでコードされる、付記51に記載のコンピュータで実現される方法。
付記53.第1のコンピューティングデバイスおよび第2のコンピューティングデバイスが、同一のコンピューティングデバイスである、付記52に記載のコンピュータで実現される方法。
付記54.プロセスデータを第1のコンピューティングデバイスに提供することが、少なくとも1つのサブプロセスに関連するデータ、および少なくとも1つのサブプロセスに関連する複数の命令の少なくとも1つを第1のコンピューティングデバイスに提供することを含む、付記51に記載のコンピュータで実現される方法。
付記55.クライアントコンピューティングデバイスが、プロセスデータを第1のコンピューティングデバイスに提供し、1つ以上の処理結果を、少なくとも1つのネットワーク接続により第2のコンピューティングデバイスから得る、付記51に記載のコンピュータで実現される方法。
付記56.少なくとも1つのネットワーク接続が制限され、実行管理構成要素が、制限されたネットワーク接続性に基づいて第1のコンピューティングデバイスに提供するデータの量を決定するようにさらに動作可能である、付記55に記載のコンピュータで実現される方法。
付記57.ソフトウェアプロセスインスタンスの少なくとも1つのサブプロセスが、第1のサブプロセスを含み、遠隔プロセス構成情報が、ネットワークコンピューティングプロバイダにおける遠隔操作のためのソフトウェアプロセスインスタンスの第2のサブプロセスを識別する、付記52に記載のコンピュータで実現される方法。
付記58.プロセスデータが、第1のコンピューティングデバイスによって第2のコンピューティングデバイスに提供される、付記52に記載のコンピュータで実現される方法。
付記59.第1のコンピューティングデバイスが、プロセスデータを第1のコンピューティングデバイスにおいて処理するか、またはプロセスデータを処理するために第2のコンピューティングデバイスに提供するかを決定するように構成される、付記58に記載のコンピュータで実現される方法。
付記60.第1のコンピューティングデバイスが、プロセスデータを第1のコンピューティングデバイスにおいて処理するか、またはプロセスデータを処理するために第2のコンピューティングデバイスに提供するかを、第1のコンピューティングデバイスによって決定することが、サブプロセスに関連する処理要件、第1のコンピューティングデバイスにおけるリソース利用可能性、第2のコンピューティングデバイスにおけるリソース利用可能性、およびプロセスデータの特徴の少なくとも1つに基づく、付記59に記載のコンピュータで実現される方法。
付記61.プロセスデータを第1のコンピューティングデバイスにおいて処理させるか、またはプロセスデータを処理するために第2のコンピューティングデバイスに提供させるかを決定することをさらに含む、付記52に記載のコンピュータで実現される方法。
例示の実施形態が開示および説明されたが、関連技術分野における熟練者であれば、追加または代替の実施形態が本発明の趣旨および範囲内で実現され得ることを理解するであろう。例えば、本明細書に記載される技法を、画像またはビデオ編集ソフトウェア、データベースソフトウェア、オフィス生産性ソフトウェア、3D設計ソフトウェア、オーディオおよびサウンド処理アプリケーション等を含むが、これらに限定されない任意の数の他のソフトウェアアプリケーションにおいて、遠隔処理管理を可能にし得るように、本発明の範囲から逸脱することなく利用することができる。さらに、多くの実施形態は例示として示されたが、関連技術分野における熟練者であれば、例示の実施形態を組み合わせるか、または一緒に実現する必要はないことを理解するであろう。したがって、いくつかの例示の実施形態は、本開示の変形の範囲に従って利用または実現される必要はない。
条件語句、例えば、特に、「できる」、「できるであろう」、「してもよいであろう」、または「してもよい」は、特に別段の記載がない限り、または使用される文脈内で別の意味で理解されない限り、一般に、ある実施形態が、ある特徴、要素、および/またはステップを含むが、他の実施形態は含まないことを意味するものとする。したがって、そのような条件語句は、一般に、その特徴、要素、および/またはステップが、任意の方法で1つ以上の実施形態に必要とされること、または1つ以上の実施形態が、ユーザ入力もしくはプロンプト表示の有無にかかわらず、これらの特徴、要素、および/またはステップを含むか、あるいは任意の特定の実施形態において行われるかを決定するための論理を必ず含むことを含意するものではない。
本明細書に記載される、および/または添付の図面に図示されるフロー図における任意のプロセス説明、要素、またはブロックは、そのプロセスにおいて特定の論理機能またはステップを実装するための1つ以上の実行可能な命令を含む、モジュール、セグメント、またはコードの部分を潜在的に表現すると理解されるべきである。代替の実現形態は、本明細書に記載される実施形態の範囲内に含まれ、当業者によって理解されるように、関与する機能性に応じて、要素または機能が削除され、図示または説明されるものとは異なる順序(実質的に同時または逆順を含む)で実行され得る。上記のデータおよび/または構成要素が、コンピュータ可読媒体上に記憶され、コンピュータ可読媒体に関連するドライブ機構を使用して、コンピューティングデバイスのメモリにロードされ得ること、CD−ROM、DVD−ROM等の任意の数のコンピュータ実行可能な構成要素内に記憶されるか、またはネットワークインターフェースを介して得られてもよいこと、さらに構成要素および/またはデータが、単一デバイスに含まれるか、または任意の他の方法で分散され得ることをさらに理解するであろう。したがって、汎用コンピューティングデバイスは、上記の様々なデータおよび/または構成要素の処理および/または実行とともに、本開示のプロセス、アルゴリズム、および方法を実装するように構成され得る。
多くの変形および修正が上記の実施形態に行われてもよいことが強調されるべきであり、それらの要素は、他の許容される例に含まれるものとして理解される。そのような修正および変形のすべては、本開示の範囲内で本明細書に含まれ、以下の請求項によって保護されるものとする。

Claims (15)

  1. 遠隔プロセス実行のためのシステムであって、
    1つ以上のコンピュータプロセッサと、
    前記1つ以上のコンピュータプロセッサの少なくとも1つによってアクセス可能な少なくとも1つのコンピュータメモリと、
    前記1つ以上のコンピュータプロセッサによって実行される実行可能なソフトウェアモジュールを備える遠隔実行管理構成要素と、
    を備え、
    前記遠隔実行管理構成要素が、
    ソフトウェアプロセス遠隔プロセス構成インスタンスのための遠隔プロセス構成を決定するように動作可能であり、前記遠隔プロセス構成が、遠隔操作のための前記ソフトウェアプロセスインスタンスの少なくとも1つのサブプロセスを識別し、
    前記遠隔実行管理構成要素が、
    前記ソフトウェアプロセスインスタンスの前記少なくとも1つのサブプロセスに関連するプロセスデータをネットワークコンピューティングプロバイダに提供するように動作可能であり、前記プロセスデータが、前記ソフトウェアプロセスインスタンスの前記少なくとも1つのサブプロセスに関連するデータ、および、前記ソフトウェアプロセスインスタンスの前記少なくとも1つのサブプロセスに関連する複数の命令の少なくとも1つを少なくとも識別し、
    前記遠隔実行管理構成要素が、
    前記ネットワークコンピューティングプロバイダから1つ以上の処理結果を得るように動作可能であり、前記1つ以上の処理結果が、前記ネットワークコンピューティングプロバイダにおいて前記複数の命令の1つ以上の前記実行と関連し、
    前記遠隔実行管理構成要素が、
    前記ソフトウェアプロセスインスタンスに従って、前記得られた1つ以上の処理結果を処理するように動作可能である、
    システム。
  2. 前記遠隔プロセス構成が、データを前記ネットワークコンピューティングおよびストレージ構成要素と交換するための通信プロトコルを識別する、
    請求項1に記載のシステム。
  3. 前記クライアントコンピューティングデバイスが、プロセスデータを前記ネットワークコンピューティングプロバイダに提供し、1つ以上の処理結果を、ネットワーク接続により前記ネットワークコンピューティングプロバイダから得る、
    請求項1に記載のシステム。
  4. 前記少なくとも1つのサブプロセスが、第1のサブプロセスおよび第2のサブプロセスを含む、
    請求項1に記載のシステム。
  5. 前記プロセスデータが、前記ソフトウェアプロセスインスタンスに関連する一式のデータを含む、
    請求項1に記載のシステム。
  6. 前記遠隔実行管理構成要素がさらに、ソフトウェアプロセス実行データに少なくとも部分的に基づいて、ソフトウェアプロセスインスタンスのための遠隔プロセス構成を決定するように動作可能である、
    請求項1に記載のシステム。
  7. 前記遠隔実行管理構成要素がさらに、前記ソフトウェアプロセス実行データに基づいて、前記ネットワークコンピューティングプロバイダにおける遠隔実行のための前記ソフトウェアプロセスインスタンスのサブプロセスを識別するように動作可能である、
    請求項6に記載のシステム。
  8. 前記遠隔実行管理構成要素がさらに、前記ソフトウェアプロセス実行データに基づいて、通信プロトコルを前記ソフトウェアプロセスインスタンスのサブプロセスと関連付けるように動作可能である、
    請求項6に記載のシステム。
  9. 前記遠隔プロセス構成が、前記ネットワークコンピューティングプロバイダから得られた情報に基づく、
    請求項1に記載のシステム。
  10. 遠隔プロセス実行のためのコンピュータで実現される方法であって、前記方法は、
    ソフトウェアプロセスインスタンスを初期化するステップと、
    前記ソフトウェアプロセスインスタンスのための遠隔プロセス構成であって、前記ソフトウェアプロセスインスタンスの少なくとも1つのサブプロセスを識別する遠隔プロセス構成を決定するステップと、
    前記少なくとも1つのサブプロセスに関連するデータ、および、前記少なくとも1つのサブプロセスに関連する複数の実行可能なデバイス命令の少なくとも1つを識別するプロセスデータを、ネットワークコンピューティングプロバイダに提供するステップと、
    前記少なくとも1つのサブプロセスに関連する前記複数の実行可能なデバイス命令の1つ以上の実行と関連する1つ以上の処理結果を、前記ネットワークコンピューティングプロバイダから得るステップと、
    前記ソフトウェアプロセスインスタンスに従って、前記得られた1つ以上の処理結果を処理するステップと、
    を含む、
    コンピュータで実現される方法。
  11. 前記クライアントコンピューティングデバイスが、プロセスデータを前記ネットワークコンピューティングプロバイダに提供し、1つ以上の処理結果を、ネットワーク接続により前記ネットワークコンピューティングプロバイダから得る、
    請求項10に記載のコンピュータで実現される方法。
  12. 前記プロセスデータが、前記ソフトウェアプロセスインスタンスに関連する一式のデータを含む、
    請求項10に記載のコンピュータで実現される方法。
  13. 前記クライアントコンピューティングデバイスにて、前記ソフトウェアプロセスインスタンスを終了するステップと、
    前記クライアントコンピューティングデバイスにて、第2のソフトウェアプロセスインスタンスを初期化するステップと、
    前記クライアントコンピューティングデバイスにおける終了の前の、前記ソフトウェアプロセスインスタンスの最後の状態と関連する、1つ以上の処理結果を前記ネットワークコンピューティングプロバイダから得るステップと、
    をさらに含む、
    請求項10に記載のコンピュータで実現される方法。
  14. 処理のために、第2のプロセスデータを第1のコンピューティングデバイスに提供するステップをさらに含み、
    前記第2のプロセスデータが、前記第1のコンピューティングデバイスにおいて行われる前記少なくとも1つのサブプロセスに関連する第2の複数の実行可能な命令を識別する、
    請求項10に記載のコンピュータで実現される方法。
  15. 前記コンピューティングデバイスに関連するコンピューティングリソース使用に基づいて、プロセスデータを前記第1のコンピューティングデバイスに提供するか、または、前記ネットワークコンピューティングプロバイダに提供するかどうかを決定するステップをさらに含む、
    請求項14に記載のコンピュータで実現される方法。
JP2014531926A 2011-09-21 2012-09-19 遠隔プロセス実行管理 Pending JP2014531670A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/239,187 US20130073600A1 (en) 2011-09-21 2011-09-21 Remote process execution management
US13/239,187 2011-09-21
PCT/US2012/056107 WO2013043716A2 (en) 2011-09-21 2012-09-19 Remote process execution management

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2017111388A Division JP2017168139A (ja) 2011-09-21 2017-06-06 遠隔プロセス実行管理

Publications (1)

Publication Number Publication Date
JP2014531670A true JP2014531670A (ja) 2014-11-27

Family

ID=47073498

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2014531926A Pending JP2014531670A (ja) 2011-09-21 2012-09-19 遠隔プロセス実行管理
JP2017111388A Pending JP2017168139A (ja) 2011-09-21 2017-06-06 遠隔プロセス実行管理

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2017111388A Pending JP2017168139A (ja) 2011-09-21 2017-06-06 遠隔プロセス実行管理

Country Status (7)

Country Link
US (1) US20130073600A1 (ja)
EP (1) EP2758878A2 (ja)
JP (2) JP2014531670A (ja)
CN (2) CN107102899A (ja)
CA (2) CA2979622A1 (ja)
SG (1) SG2014012710A (ja)
WO (1) WO2013043716A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021521574A (ja) * 2018-05-11 2021-08-26 サイトリックス システムズ,インコーポレイテッド ヘルパを介したクライアントデバイスの匿名セッションへの接続

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2516833A (en) * 2013-07-31 2015-02-11 Ibm Running software application with dynamic action delegation
US9374415B1 (en) * 2013-09-16 2016-06-21 The Boeing Company Remote peripheral controller
KR101517844B1 (ko) * 2013-12-02 2015-06-09 홍운식 모바일 기기 사용자를 위한 개인용 컴퓨터 시스템 및 그 개인용 컴퓨터 시스템의 운용방법
US9880918B2 (en) 2014-06-16 2018-01-30 Amazon Technologies, Inc. Mobile and remote runtime integration
US10185590B2 (en) 2014-06-16 2019-01-22 Amazon Technologies, Inc. Mobile and remote runtime integration
EP3155523B1 (en) * 2014-06-16 2023-08-02 Amazon Technologies, Inc. Mobile and remote runtime integration
US10296391B2 (en) * 2014-06-30 2019-05-21 Microsoft Technology Licensing, Llc Assigning a player to a machine
US10693946B2 (en) * 2014-09-16 2020-06-23 Amazon Technologies, Inc. Instance backed mobile devices
US10298259B1 (en) 2015-06-16 2019-05-21 Amazon Technologies, Inc. Multi-layered data redundancy coding techniques
US10977128B1 (en) 2015-06-16 2021-04-13 Amazon Technologies, Inc. Adaptive data loss mitigation for redundancy coding systems
US9998150B1 (en) 2015-06-16 2018-06-12 Amazon Technologies, Inc. Layered data redundancy coding techniques for layer-local data recovery
US10270475B1 (en) 2015-06-16 2019-04-23 Amazon Technologies, Inc. Layered redundancy coding for encoded parity data
US10270476B1 (en) 2015-06-16 2019-04-23 Amazon Technologies, Inc. Failure mode-sensitive layered redundancy coding techniques
US10609122B1 (en) * 2015-06-29 2020-03-31 Amazon Technologies, Inc. Instance backed building or place
US11061969B1 (en) * 2015-06-29 2021-07-13 Amazon Technologies, Inc. Instance backed mobile devices with multiple instances
US10162704B1 (en) 2015-07-01 2018-12-25 Amazon Technologies, Inc. Grid encoded data storage systems for efficient data repair
US10394762B1 (en) 2015-07-01 2019-08-27 Amazon Technologies, Inc. Determining data redundancy in grid encoded data storage systems
US9959167B1 (en) 2015-07-01 2018-05-01 Amazon Technologies, Inc. Rebundling grid encoded data storage systems
US9998539B1 (en) 2015-07-01 2018-06-12 Amazon Technologies, Inc. Non-parity in grid encoded data storage systems
US10198311B1 (en) 2015-07-01 2019-02-05 Amazon Technologies, Inc. Cross-datacenter validation of grid encoded data storage systems
US10089176B1 (en) 2015-07-01 2018-10-02 Amazon Technologies, Inc. Incremental updates of grid encoded data storage systems
US10108819B1 (en) 2015-07-01 2018-10-23 Amazon Technologies, Inc. Cross-datacenter extension of grid encoded data storage systems
US9690622B1 (en) 2015-08-24 2017-06-27 Amazon Technologies, Inc. Stateless instance backed mobile devices
US10911404B1 (en) 2015-08-24 2021-02-02 Amazon Technologies, Inc. Attribute based authorization
US9928141B1 (en) 2015-09-21 2018-03-27 Amazon Technologies, Inc. Exploiting variable media size in grid encoded data storage systems
US11386060B1 (en) 2015-09-23 2022-07-12 Amazon Technologies, Inc. Techniques for verifiably processing data in distributed computing systems
US9940474B1 (en) 2015-09-29 2018-04-10 Amazon Technologies, Inc. Techniques and systems for data segregation in data storage systems
US10394789B1 (en) 2015-12-07 2019-08-27 Amazon Technologies, Inc. Techniques and systems for scalable request handling in data processing systems
US10642813B1 (en) 2015-12-14 2020-05-05 Amazon Technologies, Inc. Techniques and systems for storage and processing of operational data
US10248793B1 (en) 2015-12-16 2019-04-02 Amazon Technologies, Inc. Techniques and systems for durable encryption and deletion in data storage systems
US10324790B1 (en) 2015-12-17 2019-06-18 Amazon Technologies, Inc. Flexible data storage device mapping for data storage systems
US10235402B1 (en) 2015-12-17 2019-03-19 Amazon Technologies, Inc. Techniques for combining grid-encoded data storage systems
US10180912B1 (en) 2015-12-17 2019-01-15 Amazon Technologies, Inc. Techniques and systems for data segregation in redundancy coded data storage systems
US10127105B1 (en) 2015-12-17 2018-11-13 Amazon Technologies, Inc. Techniques for extending grids in data storage systems
US10102065B1 (en) 2015-12-17 2018-10-16 Amazon Technologies, Inc. Localized failure mode decorrelation in redundancy encoded data storage systems
US10592336B1 (en) 2016-03-24 2020-03-17 Amazon Technologies, Inc. Layered indexing for asynchronous retrieval of redundancy coded data
US10061668B1 (en) 2016-03-28 2018-08-28 Amazon Technologies, Inc. Local storage clustering for redundancy coded data storage system
US10678664B1 (en) 2016-03-28 2020-06-09 Amazon Technologies, Inc. Hybridized storage operation for redundancy coded data storage systems
US10366062B1 (en) 2016-03-28 2019-07-30 Amazon Technologies, Inc. Cycled clustering for redundancy coded data storage systems
CN106055374B (zh) * 2016-06-30 2019-10-01 广东佳米科技有限公司 配置信息存储方法及装置、配置信息应用方法及装置
US11137980B1 (en) 2016-09-27 2021-10-05 Amazon Technologies, Inc. Monotonic time-based data storage
US10496327B1 (en) 2016-09-28 2019-12-03 Amazon Technologies, Inc. Command parallelization for data storage systems
US10437790B1 (en) 2016-09-28 2019-10-08 Amazon Technologies, Inc. Contextual optimization for data storage systems
US11204895B1 (en) 2016-09-28 2021-12-21 Amazon Technologies, Inc. Data payload clustering for data storage systems
US10810157B1 (en) 2016-09-28 2020-10-20 Amazon Technologies, Inc. Command aggregation for data storage operations
US10657097B1 (en) 2016-09-28 2020-05-19 Amazon Technologies, Inc. Data payload aggregation for data storage systems
US11281624B1 (en) 2016-09-28 2022-03-22 Amazon Technologies, Inc. Client-based batching of data payload
US10614239B2 (en) 2016-09-30 2020-04-07 Amazon Technologies, Inc. Immutable cryptographically secured ledger-backed databases
US10534910B1 (en) * 2016-10-04 2020-01-14 Hewlett-Packard Development Company, L.P. Using threat model to monitor host execution
US10296764B1 (en) 2016-11-18 2019-05-21 Amazon Technologies, Inc. Verifiable cryptographically secured ledgers for human resource systems
US11269888B1 (en) 2016-11-28 2022-03-08 Amazon Technologies, Inc. Archival data storage for structured data
US10873565B2 (en) * 2016-12-22 2020-12-22 Nicira, Inc. Micro-segmentation of virtual computing elements
US10592258B2 (en) * 2017-07-07 2020-03-17 Facebook, Inc. Systems and methods for loading features
CN107317873B (zh) * 2017-07-21 2020-08-11 曙光信息产业(北京)有限公司 一种会话处理方法和装置
CN108897629A (zh) * 2018-06-01 2018-11-27 山东中创软件商用中间件股份有限公司 一种ejb调用参数传递方法及相关装置
US11782881B2 (en) * 2018-12-05 2023-10-10 Vmware, Inc. Recommending remotely executed applications for opening files
CN112346906A (zh) * 2019-08-08 2021-02-09 丰鸟航空科技有限公司 无人机守护进程处理方法、装置、设备、及存储介质
WO2022046068A1 (en) * 2020-08-28 2022-03-03 Hewlett-Packard Development Company, L.P. Computing devices to transfer execution of processes
CN116016296B (zh) * 2022-12-19 2024-03-26 四川九洲电器集团有限责任公司 一种基于json的二进制数据处理方法、系统及设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100257228A1 (en) * 2009-04-01 2010-10-07 Honeywell International Inc. Cloud computing for an industrial automation and manufacturing system
US20110078303A1 (en) * 2009-09-30 2011-03-31 Alcatel-Lucent Usa Inc. Dynamic load balancing and scaling of allocated cloud resources in an enterprise network

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5642515A (en) * 1992-04-17 1997-06-24 International Business Machines Corporation Network server for local and remote resources
DE59310083D1 (de) * 1993-09-24 2000-09-07 Siemens Ag Verfahren zum Lastausgleich in einem Multiprozessorsystem
JP3658420B2 (ja) * 1994-04-14 2005-06-08 株式会社日立製作所 分散処理システム
JP2000029848A (ja) * 1998-07-10 2000-01-28 Matsushita Electric Ind Co Ltd 協調ネットワークシステム
US7418470B2 (en) * 2000-06-26 2008-08-26 Massively Parallel Technologies, Inc. Parallel processing systems and method
US7155681B2 (en) * 2001-02-14 2006-12-26 Sproqit Technologies, Inc. Platform-independent distributed user interface server architecture
US6990662B2 (en) * 2001-10-31 2006-01-24 Hewlett-Packard Development Company, L.P. Method and system for offloading execution and resources for resource-constrained networked devices
US7478152B2 (en) * 2004-06-29 2009-01-13 Avocent Fremont Corp. System and method for consolidating, securing and automating out-of-band access to nodes in a data network
US7480702B2 (en) * 2004-11-08 2009-01-20 International Business Machines Corporation Storage configuration loader
EP1842140A4 (en) * 2005-01-19 2012-01-04 Truecontext Corp APPLICATIONS BASED ON MOBILE FORMS ORDERED BY RULES
JP2007241394A (ja) * 2006-03-06 2007-09-20 Mitsubishi Electric Corp 分割処理管理装置及び分割処理管理システム及び演算処理実行システム及び分割処理管理方法
US20090157800A1 (en) * 2007-12-18 2009-06-18 Cheng-Chieh Cheng Dynamically Generating a Proxy Object in a Client for Dynamically Created Object on the Server Using Retrieved Class Metadata of the Object
US8516037B2 (en) * 2008-06-16 2013-08-20 International Business Machines Corporation Methods for dynamic partitioning of applications in client-server environments
US9239740B2 (en) * 2009-06-16 2016-01-19 Microsoft Technology Licensing, Llc Program partitioning across client and cloud
US8156212B2 (en) * 2009-06-16 2012-04-10 JumpSoft, Inc. Method, system and apparatus for managing computer processes
KR20110063297A (ko) * 2009-12-02 2011-06-10 삼성전자주식회사 휴대용단말기 및 그 제어방법
US8230006B2 (en) * 2009-12-16 2012-07-24 Hewlett-Packard Development Company, L.P. Remote client management
US9213574B2 (en) * 2010-01-30 2015-12-15 International Business Machines Corporation Resources management in distributed computing environment
WO2011116459A1 (en) * 2010-03-25 2011-09-29 Enomaly Inc. System and method for secure cloud computing
US20110314075A1 (en) * 2010-06-18 2011-12-22 Nokia Corporation Method and apparatus for managing distributed computations within a computation space
US8935317B2 (en) * 2010-06-23 2015-01-13 Microsoft Corporation Dynamic partitioning of applications between clients and servers
US8954587B2 (en) * 2011-07-27 2015-02-10 Salesforce.Com, Inc. Mechanism for facilitating dynamic load balancing at application servers in an on-demand services environment
US9009703B2 (en) * 2012-05-10 2015-04-14 International Business Machines Corporation Sharing reconfigurable computing devices between workloads
US8656482B1 (en) * 2012-08-20 2014-02-18 Bitdefender IPR Management Ltd. Secure communication using a trusted virtual machine
US8935496B2 (en) * 2012-08-31 2015-01-13 Hitachi, Ltd. Management method of virtual storage system and remote copy system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100257228A1 (en) * 2009-04-01 2010-10-07 Honeywell International Inc. Cloud computing for an industrial automation and manufacturing system
US20110078303A1 (en) * 2009-09-30 2011-03-31 Alcatel-Lucent Usa Inc. Dynamic load balancing and scaling of allocated cloud resources in an enterprise network

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021521574A (ja) * 2018-05-11 2021-08-26 サイトリックス システムズ,インコーポレイテッド ヘルパを介したクライアントデバイスの匿名セッションへの接続
JP7027612B2 (ja) 2018-05-11 2022-03-01 サイトリックス システムズ,インコーポレイテッド ヘルパを介したクライアントデバイスの匿名セッションへの接続
US11722461B2 (en) 2018-05-11 2023-08-08 Citrix Systems, Inc. Connecting client devices to anonymous sessions via helpers

Also Published As

Publication number Publication date
WO2013043716A3 (en) 2013-05-16
CN107102899A (zh) 2017-08-29
JP2017168139A (ja) 2017-09-21
CA2848747A1 (en) 2013-03-28
CA2848747C (en) 2020-01-28
EP2758878A2 (en) 2014-07-30
US20130073600A1 (en) 2013-03-21
SG2014012710A (en) 2014-06-27
CA2979622A1 (en) 2013-03-28
CN103999052A (zh) 2014-08-20
WO2013043716A2 (en) 2013-03-28

Similar Documents

Publication Publication Date Title
JP2017168139A (ja) 遠隔プロセス実行管理
US20130073601A1 (en) Remote process execution management
US10104188B2 (en) Customized browser images
US10567346B2 (en) Remote browsing session management
CA2840416C (en) Remote browsing session management
US9167054B2 (en) Remote browsing session management
US8577963B2 (en) Remote browsing session between client browser and network based browser
US9621406B2 (en) Remote browsing session management
JP2017168139A5 (ja) 遠隔プロセス実行のためのコンピュータで実現される方法および遠隔プロセス実行のためのシステム
US20140380184A1 (en) Remote browsing session management
US9166882B1 (en) Remote browsing session management
US9117002B1 (en) Remote browsing session management
US9491113B2 (en) Managing network connections for processing network resources
JP5937207B2 (ja) 遠隔ブラウジングセッション管理
US11196817B1 (en) Intelligently managing resource utilization in desktop virtualization environments
US20240184606A1 (en) Host/dpu service provisioning system
Mattila et al. Cloud Space-Web-based Smart Space with Management UI

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150914

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151026

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160404

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20160623

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20160905

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160930

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20170206

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20170516