(57)【特許請求の範囲】
【請求項１】
命令を含むコンピュータ可読記憶媒体であって、前記命令は、実行時に、コンピュータ・システムに、
クライアント・コンピューティング・デバイスへ、複数の通信プロトコルの第１の通信プロトコルと関連付けられた第１の通信チャネルを使用して、サービス・プロバイダのサーバ・コンピュータ上で実行される仮想デスクトップ・インスタンスへのアクセスを提供させ、
前記複数の通信プロトコルの第２の通信プロトコルと関連付けられている第２の通信チャネルを介し前記仮想デスクトップ・インスタンスへの前記アクセスを前記クライアント・コンピューティング・デバイスに提供させ、
前記サービス・プロバイダの前記サーバ・コンピュータと前記サービス・プロバイダのエンドポイント・サービスとが互いに、前記第１の通信プロトコル及び前記第２の通信プロトコルを同時に使って通信する
前記コンピュータ可読記憶媒体。
【請求項２】
前記命令は、実行時に、前記コンピュータ・システムにさらに、
前記第１の通信チャネルを終了させ、前記第２の通信プロトコルと関連付けられた前記第２の通信チャネルへ前記仮想デスクトップ・インスタンスへの前記アクセスを提供させる、
請求項１に記載の前記コンピュータ可読記憶媒体。
【請求項３】
前記命令は、実行時に、前記コンピュータ・システムにさらに、
前記第１の通信チャネルを使用して前記クライアント・コンピューティング・デバイスへ複数の機能のうちの少なくとも１つを提供しながら、前記第２の通信チャネルへ、前記仮想デスクトップ・インスタンスへの前記アクセスと関連付けられた、前記複数の機能のうちの少なくとも別の１つをスイッチオーバーさせる、
請求項１または請求項２に記載の前記コンピュータ可読記憶媒体。
【請求項４】
前記複数の機能は、
マルチメディア・データ処理機能、
ＵＳＢデータ処理機能、
仮想チャネル・データ処理機能、または
キーボード・データ処理機能、
のうちの少なくとも１つを含む、請求項３に記載の前記コンピュータ可読記憶媒体。
【請求項５】
前記命令は、実行時に、前記コンピュータ・システムにさらに、前記第１の通信プロトコル及び第２の通信プロトコルを同時に使用させ、前記仮想デスクトップ・インスタンスへの前記アクセスを提供する、請求項１から請求項４のいずれか1項に記載の前記コンピュータ可読記憶媒体。
【請求項６】
前記複数の通信プロトコルは、
ＰＣ−ｏｖｅｒ−ＩＰ（ＰＣｏＩＰ）通信プロトコル、
ウェブ実時間通信（ＷｅｂＲＴＣ）プロトコル、または
リモート・デスクトップ・プロトコル（ＲＤＰ）、
のうちの少なくとも１つを含む、請求項１から請求項５のいずれか1項に記載の前記コンピュータ可読記憶媒体。
【請求項７】
前記命令は、実行時に、前記コンピュータ・システムにさらに、
前記クライアント・コンピューティング・デバイスから機能についての要求を検出させ、要求された前記機能が前記第１の通信プロトコルによりサポートされない、
請求項１から請求項６のいずれか１項に記載の前記コンピュータ可読記憶媒体。
【請求項８】
前記命令は、実行時に、前記コンピュータ・システムにさらに、
要求された前記機能が前記第２の通信プロトコルによりサポートされることを検証させ、
検証が成功すると、前記第２の通信チャネルを使用して、要求された前記機能を前記クライアント・コンピューティング・デバイスへ提供させる、
請求項７に記載の前記コンピュータ可読記憶媒体。
【請求項９】
前記命令は、実行時に、前記コンピュータ・システムにさらに、
要求された前記機能が前記第２の通信プロトコルによりサポートされるかどうかを判定させ、
要求された前記機能が前記第２の通信プロトコルによりサポートされないと判定すると、
要求された前記機能に基づき、前記複数の通信プロトコルから第３の通信プロトコルを選択させ、前記第３の通信プロトコルが要求された前記機能をサポートし、
前記第１の通信チャネル及び第２の通信チャネルを使用して前記仮想デスクトップ・インスタンスへのアクセスを維持しながら、前記機能を実行する前記第３の通信プロトコルを使用して、前記サーバ・コンピュータ、及び前記クライアント・コンピューティング・デバイス間に第３の通信チャネルを確立させる、
請求項７または請求項８に記載の前記コンピュータ可読記憶媒体。
【請求項１０】
サービス・プロバイダ環境内で仮想デスクトップ・インスタンスについての通信プロトコルを選択する方法であって、
クライアント・コンピューティング・デバイスへ、第１の通信プロトコルと関連付けられた第１の通信チャネルを使用して、前記サービス・プロバイダ環境内のサーバ・コンピュータ上で実行される仮想デスクトップ・インスタンスへのアクセスを提供し、
前記クライアント・コンピューティング・デバイスのユーザから機能についての要求を検出し、要求された前記機能が前記第１の通信プロトコルによりサポートされず、
要求された前記機能に基づき、複数の利用可能な通信プロトコルから第２の通信プロトコルを選択し、前記第２の通信プロトコルが要求された前記機能をサポートし、
前記ユーザが前記第２の通信プロトコルを使用するように権限付与されるかどうかを検証し、
検証が成功すると、前記第１の通信チャネルを使用して前記仮想デスクトップ・インスタンスへのアクセスを維持しながら、前記第２の通信プロトコルを使用して前記サーバ・コンピュータと前記クライアント・コンピューティング・デバイスとの間に第２の通信チャネルを確立し、
前記サービス・プロバイダ環境内の前記サーバ・コンピュータと前記サービス・プロバイダ環境内のエンドポイント・サービスとが互いに、前記第１の通信プロトコル及び前記第２の通信プロトコルを同時に使って通信することを含む、前記方法。
【発明の詳細な説明】
【背景技術】
【０００１】
クラウド・コンピューティングは、遠隔位置で利用可能であり、インターネットのような、ネットワーク経由でアクセス可能であるコンピューティング・リソース（ハードウェア及びソフトウェア）の使用である。多くのサーバ・コンピュータを備える仮想サーバまたはクラウド・コンピューティング環境のような、多くのコンピューティング・デバイスを備えるコンピューティング環境で、コンピューティング・リソースの使用は、コスト優位性、及び／または変化するコンピューティング・リソース・ニーズに迅速に適合する能力を含む複数の利点を提供することが可能である。
【０００２】
データ・センター・リソースの稼働率の向上を促進するために、仮想化技術は、接続されたコンピュータ・ユーザに対して独立したコンピュータ・マシンとして出現し、動作する、１つ以上の仮想デスクトップ・インスタンスを単一の物理コンピューティング・マシンがホストすることを可能にすることができる。仮想化を用いて、単一の物理コンピューティング・デバイスは、動的な方法で仮想マシンを作成する、維持する、または削除することが可能である。一方で、ユーザは、データ・センターからコンピュータ・リソースを要求し、「必要に応じて」方式により、または少なくとも「要求に応じて」方式により、さまざまな数の仮想マシン・リソースが提供され得る。仮想デスクトップ・インスタンスを実行するクラウド・コンピューティング環境の中には、クラウド・コンピューティング・リソースの使用率の向上に伴って、リソース割当てを管理し、仮想デスクトップ・インスタンスと関連付けられた顧客要求機能に応じる通信機能を提供する効率が低下し得るものがある。
【発明の概要】
【０００３】
本開示に従いさまざまな実施形態が、図面を参照して記述される。
【図面の簡単な説明】
【０００４】
【図１】本開示の実施形態に従う、サービス・プロバイダにおいて仮想デスクトップ・インフラストラクチャをサポートする例示的なネットワーク環境の図解である。
【図２】本開示の実施形態に従う、１つ以上の通信プロトコルを使用して仮想デスクトップ・インスタンスにアクセスするための例示的なクライアント・コンピューティング・デバイス認証のブロック図である。
【図３】本開示の実施形態に従う、複数のデバイス・コンポーネントに複数の通信プロトコルを関連付けることが可能であるリモート・コンピューティング・アプリケーションを実行する例示的なクライアント・コンピューティング・デバイスのブロック図である。
【図４】本開示の例示的な実施形態に従う、プロトコル選択サービスを使用してマルチテナント環境で実行される複数の仮想マシン・インスタンスを示す例示的なシステム図である。
【図５】一実施形態に従ってプロトコル選択を提供するのに使用することができる、制御プレーンと関連付けられた複数の管理コンポーネントを含む例示的なシステムのさらなる詳細を示す。
【図６】一実施形態に従って構成することができるプロトコル選択関連機能を有するホスト・コンピュータを備えた、仮想マシン・インスタンスを実行するのに使用されるハードウェア資産である複数のホスト・コンピュータ、ルータ、及びスイッチの実施例を示す。
【図７】本開示の実施形態に従う、サービス・プロバイダ環境において仮想デスクトップ・インスタンスに対する通信プロトコルを選択する例示的な方法のフローチャートである。
【図８】本開示の実施形態に従う、サービス・プロバイダ環境において仮想デスクトップ・インスタンスに対する通信プロトコルを選択する例示的な方法のフローチャートである。
【図９】記述された技術革新を実現することができる適切なコンピューティング環境の一般化された実施例を描写する。
【発明を実施するための形態】
【０００５】
仮想マシン・イメージは、仮想環境で仮想マシンを起動させるのに必要とされる、オペレーティング・システム（たとえば、Ｌｉｎｕｘ）及び他のデータを含む。仮想マシン・イメージは、物理コンピュータのディスク容量に類似し、マシンとしてブートアップするのに必要とされる、ファイル・システム、オペレーティング・システム、及び他のコンポーネントを含むことができる。仮想マシンを起動させるために、ハードウェアを選択する必要がある。ハードウェア選択は、さまざまな異なるサイズのメモリ、ＣＰＵ容量、Ｉ／Ｏパフォーマンスなどを許容することができる、インスタンス・タイプにより達成されることが可能である。仮想マシン・イメージとインスタンス・タイプとの組合せは、マルチテナント・ネットワーク環境内のホスト・サーバ・コンピュータのような、クラウド・コンピューティング・リソース上で起動することができる、「インスタンス」または仮想マシンを作成するのに使用されることが可能である。本明細書で使用される用語「仮想マシン」、及び「仮想マシン・インスタンス」は、交換可能である。
【０００６】
本明細書で使用される用語「仮想デスクトップ・インフラストラクチャ」は、複数のサーバ・コンピュータを含む環境を指し、デスクトップ・オペレーティング・システムは、複数のサーバ・コンピュータのうちの少なくとも１つにおいて起動される仮想マシン・インスタンス上で実行することが可能である。デスクトップ・オペレーティング・システムを実行する仮想マシン・インスタンスは、仮想デスクトップ・インスタンスと称されることがある。本明細書に開示された実施形態のうちの少なくともいくつかは、サービス・プロバイダにより提供される仮想デスクトップ・インフラストラクチャとの関連で記述されるが、さらに実施形態は、オンプレミス・ネットワークで、またはサービス・プロバイダ・ネットワークとオンプレミス・ネットワークとの組合せで使用されることが可能である。
【０００７】
以下の説明は、複数の通信プロトコルを使用することが可能である仮想デスクトップ・インフラストラクチャ環境を作成することをサポートする技術及び解決策を対象とする。より具体的には、サービス・プロバイダ環境のユーザは、クライアント・コンピューティング・デバイスを使用して、仮想マシン上で実行される仮想デスクトップ・インスタンスにアクセスすることができる。仮想デスクトップ・インスタンスへのアクセスは、第１の通信プロトコルと関連付けられた通信チャネルを使用して提供されることが可能である。ユーザは、第１の通信プロトコルによりサポートされない可能性がある機能（たとえば、ＵＳＢリダイレクト）を要求することができる。サービス・プロバイダのプロトコル選択サービスを使用して、要求された機能をサポートする別の（第２の）通信プロトコルを選択することができる。プロトコル選択テーブル及び／または１つ以上のポリシー・ドキュメント（たとえば、グローバル・ポリシー・ドキュメント、及び／またはユーザの顧客アカウントと関連付けられたポリシー・ドキュメント）を使用して、プロトコル選択を実行することができる。第２の通信プロトコルを使用するユーザを認証することができ、認証時に、第１の通信チャネルを利用可能にしたまま、要求された機能を取り扱う第２の通信チャネルを確立することができる。例示的な実施形態において、サービス・プロバイダ環境ネットワークについての１つ以上のネットワーク健全性特性（たとえば、ネットワーク・レイテンシ）、及び／またはクライアント・コンピューティング・デバイス、及び仮想デスクトップ・インスタンスを実行するサーバ・コンピュータの１つ以上のソフトウェア及び／またはハードウェア特性（たとえば、ＣＰＵ、メモリ、ＧＰＵ可用性、オペレーティング・システム・バージョンなど）を使用して、すべての通信を第２の通信プロトコルと関連付けられた第２の通信チャネルへスイッチオーバーするかどうか、または第１及び第２の通信チャネル間で通信を分割するかどうかを判定することができる。この点について、複数の通信プロトコルを使用して、クライアント・コンピューティング・デバイスにより仮想デスクトップ・インスタンスへのアクセスをサポートすることができる。
【０００８】
図１は、本開示の実施形態に従う、サービス・プロバイダにおいて仮想デスクトップ・インフラストラクチャをサポートする例示的なネットワーク環境の図である。図１を参照して、ネットワーク環境１００は、ネットワーク１１２を介してクライアント・コンピューティング・デバイス１１０と通信するサービス・プロバイダ１０２を含むことができる。サービス・プロバイダ１０２は、１人以上のクライアント（たとえば、クライアント・コンピューティング・デバイス１１０のユーザ）が１つ以上のサーバ・コンピュータ上の１つ以上の仮想マシン・インスタンス（ＶＭＩ）（たとえば、サーバ・コンピュータ１０６上のインスタンス１２６）を実行することができるマルチテナント・クラウド・ネットワーク環境からなり得る（単一のサーバ・コンピュータ１０６のみを図１で示すが、サービス・プロバイダ１０２が複数のサーバ・コンピュータを使用することが可能である）。たとえば、仮想マシン・インスタンス１２６は、オペレーティング・システム及びアプリケーション・ソフトウェアのインスタンスを実行し、仮想デスクトップ・インスタンスを作成することができる。クライアント・コンピューティング・デバイス１１０のような、１つ以上のクライアント・コンピューティング・デバイスにより、１つ以上のサーバ・コンピュータ上で実行する各仮想デスクトップ・インスタンスにアクセスすることが可能である。サーバ・コンピュータ（たとえば、１０６）は、たとえば、サービス・プロバイダ１０２の１人以上のクライアントにより（またはクライアントの代わりに）操作されるクライアント・サーバからなり得る。サービス・プロバイダ１０２は、複数のエンドポイント１１８、．．．、１２４を用いるエンドポイント・サービス１０４、及びプロトコル選択サービス（ＰＳＳ）１０８をさらに備えることができる。
【０００９】
また仮想デスクトップ・インスタンス１２６は、プロトコル・エージェント１２８を含むことができる。このプロトコル・エージェント１２８は、適切なロジック、インタフェース、及び／またはコードを含むことができ、新規の通信リンクについての新規の通信ポートをセットアップすることを備える、仮想デスクトップ・インスタンス１２６のストリーミングを管理する、及び／または既存の通信リンク及びポートを終了するように動作可能であり得る。例示的な実施形態において、プロトコル・エージェント１２８は、インスタンス１２６上においてアプリケーションとして実行することができる。
【００１０】
サーバ・コンピュータ１０６は、インスタンス・マネージャ１３０を含むことができる。このインスタンス・マネージャ１２２は、仮想デスクトップ・インスタンス１２６と同一のサーバ・コンピュータ（たとえば、１０６）上に、または別のコンピュータ上にあることができる。インスタンス・マネージャ１３０は、サーバ・コンピュータ（たとえば、１０６）上で実行されるインスタンスの進行状況を追跡し、クライアント・コンピューティング・デバイスを介してインスタンス（たとえば、１２６）とインタラクトしながらユーザにより作成されるデータのストレージを監視して調整し、クライアント・コンピューティング・デバイス（たとえば、１１０）上で実行する、サービス・プロバイダ１０２の、及びリモート・コンピューティング・アプリケーション（たとえば、１１６）のサーバ・コンピュータの全体的な健全性及び状態を監視することができる。インスタンス・マネージャ１３０は、図５で示されるような、管理プレーン（たとえば、管理サーバ・コンピュータ）の部分であることが可能である。
【００１１】
さらにサーバ・コンピュータ１０６は、ハイパーバイザ１３１及びサーバ機能ブロック１３２を含むことができる。ハイパーバイザ１３１は、サーバ・コンピュータ１０６上で複数のインスタンス（たとえば、インスタンス１２６）の実行を可能にするように構成されることが可能である。ハイパーバイザは、さらに以下で図４及び図６を参照して考察される。サーバ・コンピュータ１０６は、中央処理装置及びアーキテクチャ、メモリ、マス・ストレージ、グラフィックス・プロセッシング・ユニット（ＧＰＵ）、通信ネットワーク可用性及び帯域幅などのような、さまざまなローカル・コンピューティング・リソースを含むことができる。サーバ・コンピュータ１０６のさまざまなコンピューティング・リソース上の情報がサーバ機能１３２として指定される。
【００１２】
クライアント・コンピューティング・デバイス１１０を使用して、リモート・オペレーティング・システム（たとえば、仮想デスクトップ・インスタンス１２６）へのアクセス、及びアプリケーションをユーザに提供することができる。例示的な実施形態において、クライアント・コンピューティング・デバイス１１０は、パーソナル・コンピューティング・デバイス、ラップトップ・コンピューティング・デバイス、ハンドヘルド・コンピューティング・デバイス、端末コンピューティング・デバイス、モバイル・デバイス（たとえば、携帯電話、タブレット・コンピューティング・デバイス、電子ブック・リーダーなど）、無線デバイス、さまざまな電子機器及びアプライアンスなどを含む、多種多様なコンピューティング・デバイスに相当することが可能である。例示的な実施形態において、クライアント・コンピューティング・デバイス１１０は、ワイド・エリア・ネットワーク、またはローカル・エリア・ネットワークのような、通信ネットワーク１１２経由で通信を確立する、必要なハードウェア及びソフトウェア・コンポーネントを含む。たとえば、クライアント・コンピューティング・デバイス１１０は、サービス・プロバイダ１０２内のサーバ・コンピュータ１０６のうちの１つ以上とのインターネットまたはイントラネットを介した通信を促進するネットワーキング機器、及びブラウザ・ソフトウェア・アプリケーションを備えることができる。クライアント・コンピューティング・デバイス１１０は、中央処理装置及びアーキテクチャ、メモリ、マス・ストレージ、グラフィックス・プロセッシング・ユニット（ＧＰＵ）、通信ネットワーク可用性及び帯域幅などのような、さまざまなローカル・コンピューティング・リソースを含むことができる。クライアント・コンピューティング・デバイス１１０のさまざまなコンピューティング・リソース上の情報がクライアント機能１１４として指定される。
【００１３】
一実施形態において、クライアント・コンピューティング・デバイス１１０は、リモート・コンピューティング・アプリケーション１１６を実行することができる。リモート・コンピューティング・アプリケーション１１６は、サービス・プロバイダ１０２のサーバ・コンピュータ１０６によりホストされる仮想デスクトップ・インスタンス（たとえば、１２６）へのアクセスを要求することができる。またリモート・コンピューティング・アプリケーション１１６は、クライアント・コンピューティング・デバイス１１０とサービス・プロバイダ１０２との間のリモート・コンピューティング・セッションを管理することができる。加えて、リモート・コンピューティング・アプリケーション１１６は、１つ以上の通信プロトコル・エンドポイント（たとえば、複数の通信プロトコルのうちの１つを使用する通信リンク）とデバイス・コンポーネント（図３でより詳細に示されるような）との間の接続を確立することを促進することができる。
【００１４】
エンドポイント・サービス１０４は、複数のエンドポイント１１８、．．．、１２４を含むことができる。各エンドポイント１１８、．．．、１２４は、適切なロジック、回路、インタフェース、及び／またはコードを含むことができ、１人以上のサービス・プロバイダ・クライアント（たとえば、クライアント・デバイス１１０のユーザ）の認証を提供し、クライアント・コンピューティング・デバイス１１０とサーバ・コンピュータ（たとえば、１０６）との間の通信を促進するように動作可能であり得る。各エンドポイント１１８、．．．、１２４は、複数の通信プロトコルのうちの少なくとも１つと関連付けられた１つ以上の通信リンク（たとえば、通信プロトコル１、．．．、Ｎと関連付けられた通信リンク１４６、．．．、１４８、及び１４２、．．．、１４４）を使用するように動作可能な、安全なゲートウェイ、ルータ、または別のネットワーク・デバイスを含むことができる。加えて、エンドポイント・サービス１０４内の各エンドポイントは、サービス・プロバイダ１０２と関連付けられた複数の別々の領域（たとえば、別々の地理的領域）のうちの１つに設置されるクラウド・エンドポイントからなり得る。クライアント・コンピューティング・デバイス１１０とエンドポイント・サービス１０４とサーバ・コンピュータ１０６との間の安全なリンクを確立する例示的な通信シーケンスは、図２を参照して本明細書に以下で記述される。
【００１５】
プロトコル選択サービス（ＰＳＳ）１０８は、適切なロジック、回路、インタフェース、及び／またはコードを含むことができ、通信プロトコルを選択し、クライアント・コンピューティング・デバイス１１０とサーバ・コンピュータ１０６との間の通信プロトコルと関連付けられた通信リンク（またはチャネル）の確立を促進するように動作可能であり得る。またＰＳＳ１０８は、プロトコル選択機能に関連して１つ以上のポリシーを指定することができるポリシー・ドキュメント（たとえば、１３８及び／または１４０）を使用することができる。たとえば、顧客アカウント・ポリシー１３８は、顧客（たとえば、コンピューティング・デバイス１１０のユーザ）に、仮想デスクトップ・インスタンス１２６にアクセスすることと関連付けられた特定の機能に使用するように権限付与される、１つ以上の通信プロトコルを指定することができる。仮想デスクトップ・インスタンス１２６へのアクセスに関連してクライアント・デバイス１１０のユーザにより要求され得る例示的な機能は、マルチメディア・データ処理機能、ＵＳＢデータ処理機能（たとえば、ＵＳＢリダイレクト）、仮想チャネル・データ処理機能、及びキーボード・データ処理機能を含むことができる。要求された機能性に関連して使用され得る例示的な通信プロトコルは、ＰＣ−ｏｖｅｒ−ＩＰ（ＰＣｏＩＰ）通信プロトコル、及びリモート・デスクトップ・プロトコル（ＲＤＰ）を含むことができる。
【００１６】
グローバル・ポリシー１４０は、サービス・プロバイダ環境１０２のすべてのユーザと関連して使用されることが可能であるプロトコル選択ポリシーを指定することができる。ポリシー・ドキュメント１３８及び１４０は、たとえば、管理ポータル１４１を介して管理者により更新されることが可能である。さらにＰＳＳ１０８は、２つ以上の通信リンク（たとえば、各々は異なる通信プロトコルと関連付けられる）を利用可能にすることを同時に維持するかどうか、または単一の通信リンクを使用してコンピューティング・デバイス１１０とエンドポイント・サービス１０４とサーバ・コンピュータ１０２との間のすべての通信トラフィックをスイッチオーバーするかどうかを判定することに加え、通信プロトコルの選択中にネットワーク・モニタ１３６、及びプロトコル決定テーブル１３４を使用することができる。たとえば、ＰＳＳ１０８は、クライアント機能１１４、サーバ機能１３２についての情報、及びネットワーク・モニタ１３６からの情報を受信し、受信した情報を使用して一方の通信プロトコルに基づく既存の通信リンクから、他方の通信プロトコルに基づく新規の通信リンクへ通信を切り換えるかどうかを判定することができる。ネットワーク・モニタから提供される情報は、ネットワーク・レイテンシ、帯域幅などの、サービス・プロバイダ１０２内の通信ネットワークについての健全性情報を含むことができる。
【００１７】
本開示の例示的な実施形態に従い、ＰＳＳ１０８は、サービス・プロバイダ１０２（図１で示されるように）内にスタンドアロン・サービスとして実装されることが可能であり、またはそれは、サーバ・コンピュータ（たとえば、１０６）のうちの１つ以上の内のコード・ライブラリ（すなわち、ソフトウェア）として実装されることが可能である。
【００１８】
図２は、本開示の実施形態に従う、１つ以上の通信プロトコルを使用して、仮想デスクトップ・インスタンスにアクセスするための例示的なクライアント・コンピューティング・デバイス認証のブロック図である。図１〜図２を参照して、デバイス１１０のユーザは、サービス・プロバイダ１０２のクライアントからなり得るとともに、サーバ・コンピュータ１０６を使用して、仮想デスクトップ・インスタンス１２６を実行することができる（たとえば、ユーザは、サーバ・コンピュータ１０６のような１つ以上のサーバ・コンピュータ上で実行する１つ以上のインスタンス上で仮想デスクトップを起動させる権利をユーザに与える手数料と引き換えに、サービス・プロバイダ１０２から顧客アカウントを取得することができる）。換言すれば、仮想デスクトップ・インスタンス１２６は、デバイス１１０のユーザの顧客アカウントと関連付けられることが可能である。ユーザは、一度に１つより多い仮想デスクトップ・インスタンスを含むことができるが、一度に１つの仮想デスクトップ・インスタンスにログインし、これを使用することが可能であり得る。
【００１９】
仮想デスクトップ・インスタンス１２６へのアクセスを取得する例示的な通信交換において、クライアント・コンピューティング・デバイス１１０のユーザは、エンドポイント１１８へログインＩＤ（ユーザ名）及びパスワード（または顧客アカウントと関連付けられた任意の他のログイン／認証クレデンシャル）を送信する（ｒｅｆ＃１で）ことで、エンドポイント・サービス１０４と通信を開始することができる。エンドポイント１１８は、ユーザを認証することができ、認証トークン２１０をクライアント・コンピューティング・デバイス１１０へ返送する（ｒｅｆ＃２で）ことができる。つぎにクライアント・デバイス１１０は、エンドポイント１２０へ認証トークン２１０を送信する（ｒｅｆ＃３で）ことができる。エンドポイント１２０は、エンドポイント１１８へトークンを転送し（ｒｅｆ＃４で）、要求するユーザに属するトークンを確認することができ、ユーザは、有効な顧客アカウントを有する。ユーザが認証されたことの確認は、エンドポイント１１８からエンドポイント１２０へ送信される（ｒｅｆ＃５で）ことが可能である。つぎにエンドポイント１２０は、仮想デスクトップ・インスタンス識別２１２（プロトコル１を使用して通信リンク２０４を確立するのに使用されるポートのような、ポート番号を含むことができる）、ゲートウェイＩＰアドレス２１４、及び安全なトークン２１６を返す（ｒｅｆ＃６で）ことができる。ゲートウェイＩＰアドレス２１４は、通信リンク２０２及び２０４を使用しながら、クライアント・コンピューティング・デバイス１１０と仮想デスクトップ・インスタンス１２６との間でプロキシとして動作することが可能である、エンドポイント１２２についてのＩＰアドレスからなり得る。安全なトークン２１６を使用して、クライアント・デバイス１１０を認証し、プロキシとしてエンドポイント１２２を使用し、複数の利用可能な通信プロトコルのうちの少なくとも１つ（たとえば、プロトコル１）を使用して仮想デスクトップ・インスタンス１２６と通信することができる。
【００２０】
仮想デスクトップ・インスタンス識別２１２、ゲートウェイＩＰアドレス２１４、及び安全なトークン２１６は、エンドポイント１２２へ送信される（ｒｅｆ＃７で）ことが可能である。エンドポイント１２２は、トークンを発行したエンドポイント１２０へ安全なトークン２１６を送信する（ｒｅｆ＃８で）ことができる。エンドポイント１２０は、トークン２１６を認証することができ、エンドポイント１２２へ認証の確認を返信する（ｒｅｆ＃９で）ことができる。つぎにプロトコル選択サービス１０８は、仮想デスクトップ・インスタンス１２６においてプロトコル・エージェント１２８と通信し（たとえば、仮想デスクトップ・インスタンス識別２１２を使用して）、通信プロトコル１を使用して通信リンク２０４を確立することに新規のポートを利用可能とするプロトコル・エージェント１２８を含むことができる。通信プロトコル１は、プロトコル決定テーブル１３４を使用してプロトコル選択サービスにより選択されることが可能である。より具体的には、プロトコル決定テーブル１３４は、１つ以上のデバイス機能（たとえば、デバイス１１０がインスタンス１２８にアクセスするのに要求される、または必要な機能）を、複数の利用可能な通信プロトコルから選択される１つ以上の通信プロトコルと関連付けることができる。
【００２１】
例示的な実施形態において、ＰＳＳ１０８は、グローバル・ポリシー・ドキュメント、及び／または顧客アカウント・ポリシー１３８を使用して、通信リンク２０２及び２０４についての通信プロトコルを選択することができる。ポリシー・ドキュメント１３８／１４０は、仮想デスクトップ・インスタンス１２６にアクセスするコンピューティング・デバイス１１０により要求される特定の機能にいずれの通信プロトコルを使用するかを指定することができる。またＰＳＳ１０８は、このようなプロトコルを使用してリンクを確立する前に、所与の通信プロトコルを使用するクライアント・デバイス１１０のユーザを認証することができる。ユーザ認証は、たとえば、サービス・プロバイダ環境内でいずれのプロトコルを使用するクライアント／ユーザを承認するかを指定することができる、顧客アカウント・ポリシー１３８を使用して、実行されることが可能である。
【００２２】
プロトコル・エージェント１２８が新規のポートを利用可能にした後に、通信リンク２０２及び２０４（または図１のリンク１４２、１４６）は、クライアント・デバイス１１０に仮想デスクトップ・インスタンス１２６へのアクセスを提供する通信プロトコル１を使用して確立されることが可能である。別の例示的な実施形態において、ＰＳＳ１０８は、クライアント・デバイス１１０により要求される、通信チャネル／リンク２０２／２０４と関連付けられた通信プロトコル１によりサポートされない新規の機能を検出することができる。たとえば、デバイス１１０のユーザは、インスタンス１２６にアクセスすることと関連してＵＳＢメモリ・スティックを使用することができるが、ＵＳＢリダイレクトは、通信プロトコル１によりサポートされない可能性がある。参照番号１〜６により示される通信シーケンスは、再度行うことができるが、エンドポイント１２０は、エンドポイント１２３を識別するゲートウェイＩＰアドレス２１４と、ユーザ及びクライアント・デバイス１１０に、通信プロトコル２と関連付けられた通信リンク２０６／２０８を使用してデバイス１１０と仮想デスクトップ・インスタンス１２６との間のプロキシとしてエンドポイント１２３にアクセスするように権限付与する安全なトークン２１６とを返信することができる。
【００２３】
ＰＳＳ１０８は、プロトコル１によりサポートされない、要求された機能をサポートするような、通信プロトコル２を選択することができる。プロトコル２の選択は、プロトコル決定テーブル１３４、グローバル・ポリシー１４０、及び／または顧客アカウント・ポリシー１３８に基づくことができる。代替として、新規のプロトコル２は、ユーザにより選択され、エンドポイント１２３を介してＰＳＳ１０８へ送信されることも可能である。通信リンク２０４と同様に、プロトコル・エージェント１２８がプロトコル２と関連付けられた新規のポートを確立することができることによって、ＰＳＳ１０８（またはプロトコル・エージェント１２８）は、通信プロトコル２と関連付けられた新規の通信リンク２０６／２０８（または図１の１４４／１４８）を利用可能にすることができる。この点で、クライアント・コンピューティング・デバイス１１０は、少なくとも２つの異なる通信プロトコルを同時に使用して（すなわち、通信リンク２０２、．．．、２０８が同時に、利用可能であり、使用される）仮想デスクトップ・インスタンス１２６にアクセスすることができる。
【００２４】
さらに別の例示的な実施形態において、ＰＳＳ１０８は、クライアント機能１１４、サーバ機能１３２、及び／またはネットワーク・モニタ１３６からの情報（たとえば、ネットワーク・レイテンシ情報）を使用して、第１のプロトコル・タイプの一方の通信リンク（たとえば、プロトコル１を使用するリンク２０２／２０４）から、第２のプロトコル・タイプの他方の通信リンク（たとえば、プロトコル２を使用するリンク２０６／２０８）へ通信トラフィックをオフロードする（またはスイッチオーバーする）かどうかを判定することができる。このような通信配信機能は、自動的に、またはネットワーク管理者の承認時に（たとえば、ポータル１４１を介して）実行されることが可能である。加えて、新規の通信プロトコルを使用する（たとえば、新規の通信リンクを確立し、特定の機能性を取り扱う）、または一方のプロトコルから他方へ通信トラフィックを切り換える（完全に、または部分的に）ときは常に、クライアント・コンピューティング・デバイス１１０に通知を表示することができる。
【００２５】
図３は、本開示の実施形態に従う、複数の通信プロトコルを複数のデバイス・コンポーネントと関連付けることが可能であるリモート・コンピューティング・アプリケーションを実行する、例示的なクライアント・コンピューティング・デバイスのブロック図である。図３を参照して、異なる通信プロトコル１、．．．、Ｘを使用する、複数の通信リンク３０６、．．．、３０８を使用して、クライアント・コンピューティング・デバイス１１０を示す。各通信リンク３０６、．．．、３０８を使用して、クライアント・デバイス１１０により使用される機能または通信の特定のタイプを取り扱い、仮想デスクトップ・インスタンスにアクセスすることができる。加えて、通信リンク３０６、．．．、３０８は、対応するプロトコル・エンドポイント３０２、．．．、３０４からクライアント・コンピューティング・デバイス１１０に入ることができる。本開示の例示的な実施形態に従い、リモート・コンピューティング・アプリケーション１１６は、所与のプロトコルと関連付けられた１つ以上のデバイス・コンポーネントを決定し、つぎにこのようなプロトコルから１つ以上のコンポーネントへ通信トラフィックを向けることができる。たとえば、通信リンク３０６がＲＤＰプロトコルを使用してＵＳＢリダイレクトを取り扱う場合に、つぎにリモート・コンピューティング・アプリケーション１１６は、プロトコル・エンドポイント３０２をデバイス・コンポーネント３１２（たとえば、ＵＳＢポート、及びＵＳＢアクセス機能性を提供する関連コンポーネント）と関連付けることができる。
【００２６】
図４は、本開示の例示的な実施形態に従う、プロトコル選択サービスを使用する、マルチテナント環境内で実行する複数の仮想マシン・インスタンスを示す例示的なシステム図である。より具体的には、図４は、本明細書に記述される実施形態を使用することが可能である１つの環境を示すネットワーク・ベースのサービス・プロバイダ４００のコンピューティング・システム図である。背景として、サービス・プロバイダ４００（すなわち、クラウド・プロバイダ）は、末端受信者のコミュニティ（たとえば、テナントまたは顧客）へサービスとしてコンピューティング及びストレージ容量の配信が可能である。サービス・プロバイダ４００は、図１〜図３に示されるサービス・プロバイダ１０２と同一のものからなり得る。
【００２７】
例示的な実施形態において、サービス・プロバイダ４００は、組織によって、または組織のために、組織用に確立されることが可能である。すなわち、サービス・プロバイダ４００は、「プライベート・クラウド環境」を提供することができる。別の実施形態において、サービス・プロバイダ４００は、マルチテナント環境をサポートし、複数の顧客は、独立して運用する（すなわち、パブリック・クラウド環境）。一般的に言えば、サービス・プロバイダ４００は、以下のモデル、すなわち、サービスとしてのインフラストラクチャ（「ＩａａＳ」）、サービスとしてのプラットフォーム（「ＰａａＳ」）、及び／またはサービスとしてのソフトウェア（「ＳａａＳ」）を提供することが可能である。他のモデルを提供することも可能である。ＩａａＳモデルについて、サービス・プロバイダ４００は、物理または仮想マシン、及び他のリソースとしてコンピュータを提供することが可能である。以下でさらに記述されるように、ハイパーバイザによりゲストとして仮想マシンを実行することが可能である。ＰａａＳモデルは、オペレーティング・システム、プログラミング言語実行環境、データベース、及びウェブ・サーバを含むことが可能であるコンピューティング・プラットフォームを配信する。アプリケーション開発者は、基本的なハードウェア及びソフトウェアを購入して管理するコストなしでサービス・プロバイダ・プラットフォーム上に彼らのソフトウェア解決策を開発して実行することが可能である。ＳａａＳモデルは、サービス・プロバイダ内でアプリケーション・ソフトウェアのインストール及び操作を可能にする。いくつかの実施形態で、エンド・ユーザは、ウェブ・ブラウザ、または他のライトウェイト顧客アプリケーションを実行する、デスクトップ・コンピュータ、ラップトップ、タブレット、スマートフォンなどのようなネットワーク化された顧客デバイスを使用して、サービス・プロバイダ４００にアクセスする。当業者は、サービス・プロバイダ４００を「クラウド」環境として記述することが可能であることを認識するであろう。
【００２８】
特定の図示されたサービス・プロバイダ４００は、複数のサーバ・コンピュータ４０２Ａ〜４０２Ｄを含む。４台のサーバ・コンピュータのみを示すが、任意の台数を使用することが可能であり、大規模なセンターは、数千台のサーバ・コンピュータを含むことが可能である。サーバ・コンピュータ４０２Ａ〜４０２Ｄは、ソフトウェア・インスタンス４０６Ａ〜４０６Ｄを実行するためにコンピューティング・リソースを提供することが可能である。一実施形態において、インスタンス４０６Ａ〜４０６Ｄは、仮想マシンである。当該技術分野で既知であるように、仮想マシンは、物理マシンのようなアプリケーションを実行するマシン（すなわち、コンピュータ）のソフトウェア実装のインスタンスである。実施例で、各サーバ・コンピュータ４０２Ａ〜４０２Ｄは、単一のサーバ上で複数のインスタンス４０６の実行を可能にするように構成されるハイパーバイザ４０８、または別のタイプのプログラムを実行するように構成されることが可能である。たとえば、各サーバ４０２Ａ〜４０２Ｄは、各仮想マシン・パーティションが仮想マシン・インスタンスを実行することが可能でありながら、１つ以上の仮想マシン・パーティションをサポートするように構成される（たとえば、ハイパーバイザ４０８を介して）ことが可能である（たとえば、サーバ・コンピュータ４０２Ａは、対応する仮想マシン・インスタンスを各実行する３つの仮想マシン・パーティションをサポートするように構成されることが可能である）。加えて、各インスタンス４０６は、１つ以上のアプリケーションを実行するように構成されることが可能である。
【００２９】
またサービス・プロバイダ４００は、ＰＳＳ１０８に関連して本明細書に記述される機能を有することができる、プロトコル選択サービス４４０を備えることができる。プロトコル選択サービス４４０は、プロバイダ４００内でスタンドアロン・サービスとして、専用サーバ（サーバ４０２Ａ〜４０２Ｄに類似する）として、１つ以上のサーバ４０２内のコード・ライブラリとして実装されることができる、及び／または管理機能を実行するサーバ・コンピュータ４０４の部分として実装されることができる。たとえば、プロトコル選択サービス４４０は、管理コンポーネント４１０（図５で示されるような）の部分として実装されることができる。
【００３０】
本明細書に開示された実施形態を仮想マシンとの関連で最初に記述するが、本明細書に開示された概念及び技術と併せて他のタイプのインスタンスを利用することが可能であることを理解するであろう。たとえば、本明細書に開示された技術は、ストレージ・リソース、データ通信リソースと併せて、及び他のタイプのコンピューティング・リソースと併せて利用されることが可能である。本明細書に開示された実施形態は、仮想マシン・インスタンスを利用せずにコンピュータ・システム上で直接にアプリケーションのすべて、または部分を実行することもできる。
【００３１】
１つ以上のサーバ・コンピュータ４０４は、サーバ・コンピュータ４０２、インスタンス４０６、ハイパーバイザ４０８、及び／またはプロトコル選択サービス４４０の操作を管理するソフトウェア・コンポーネントを実行するのに確保されることが可能である。たとえば、サーバ・コンピュータ４０４は、管理コンポーネント４１０を実行することが可能である。顧客は、管理コンポーネント４１０にアクセスし、顧客により購入されたインスタンス４０６の動作のさまざまな態様を設定することが可能である。たとえば、顧客は、インスタンスを購入し、レンタルし、またはリースし、インスタンスの設定へ変更を行うことが可能である。また顧客は、購入したインスタンスを需要に応じてスケーリングする方式について設定を指定することが可能である。
【００３２】
さらにサーバ・コンピュータ４０４は、プロトコル選択サービス４４０により処理メモリとして使用できるメモリ４５２を備えることができる。自動スケーリング・コンポーネント４１２は、顧客により定められたルールに基づきインスタンス４０６をスケーリングすることが可能である。一実施形態において、自動スケーリング・コンポーネント４１２は、新規のインスタンスをインスタンス化するときを決定することへの使用に供されるスケールアップ・ルール、及び既存のインスタンスを終了するときを決定することへの使用に供されるスケールダウン・ルールを顧客が指定することを可能にする。自動スケーリング・コンポーネント４１２は、異なるサーバ・コンピュータ４０２、または他のコンピューティング・デバイス上で実行する複数のサブコンポーネントからなることが可能である。自動スケーリング・コンポーネント４１２は、内部管理ネットワーク経由で利用可能なコンピューティング・リソースを監視し、必要に基づき利用可能なリソースを変更することが可能である。
【００３３】
デプロイメント・コンポーネント４１４を使用して、コンピューティング・リソースの新規のインスタンス４０６のデプロイメントにおいて顧客を支援することが可能である。デプロイメント・コンポーネントは、だれがアカウントの所有者であるかといった、インスタンスと関連付けられたアカウント情報、クレジット・カード情報、所有者の国などへのアクセス権を有することが可能である。デプロイメント・コンポーネント４１４は、新規のインスタンス４０６を設定する方式を記述するデータを含む顧客からの設定を受信することが可能である。たとえば、設定は、新規のインスタンス４０６内にインストールされる１つ以上のアプリケーションを指定し、新規のインスタンス４０６を構成するように実行されるスクリプト及び／または他のタイプのコードを提供し、アプリケーション・キャッシュを準備する方式を指定するキャッシュ・ロジック、及び他のタイプの情報を提供することが可能である。デプロイメント・コンポーネント４１４は、顧客が提供する設定及びキャッシュ・ロジックを利用して、新規のインスタンス４０６を設定し、準備し、起動させることが可能である。設定、キャッシュ・ロジック、及び他の情報は、管理コンポーネント４１０を使用して顧客により、またはデプロイメント・コンポーネント４１４へ直接にこの情報を提供することにより指定されることが可能である。インスタンス・マネージャ（たとえば、図５の５５０）は、デプロイメント・コンポーネント４１４の部分とみなされることが可能である。
【００３４】
顧客アカウント情報４１５は、マルチテナント環境の顧客と関連付けられた任意の所望の情報を含むことが可能である。たとえば、顧客アカウント情報は、顧客についての一意識別子、顧客アドレス、ビリング情報、ライセンス情報、インスタンスを起動させるカスタマイズ・パラメータ、スケジューリング情報、自動スケーリング・パラメータ、このアカウントにアクセスするのに使用された以前のＩＰアドレス、及びその他のものを含むことが可能である。
【００３５】
ネットワーク４３０は、サーバ・コンピュータ４０２Ａ〜４０２Ｄ、及びサーバ・コンピュータ４０４を相互接続するのに利用されることが可能である。ネットワーク４３０は、ローカル・エリア・ネットワーク（ＬＡＮ）からなることが可能であり、ワイド・エリア・ネットワーク（ＷＡＮ）４４０へ接続されることが可能であるため、エンド・ユーザは、サービス・プロバイダ４００にアクセスすることが可能である。図４で示されたネットワーク・トポロジが簡略化されていること、ならびにより多くのネットワーク及びネットワーキング・デバイスが本明細書に開示されたさまざまなコンピューティング・システムを相互接続するのに利用されることが可能であることを理解するであろう。
【００３６】
図５は、１つの実施形態によりプロトコル選択を提供するのに使用できる、制御プレーンと関連付けられた複数の管理コンポーネントを含む例示的なシステムのさらなる詳細を示す。より具体的には、図５は、より詳細に、サービス・プロバイダ４００のマルチテナント環境内のプロトコル選択サービス４４０を実装することができる管理コンポーネント４１０を示す。
【００３７】
インスタンス（図４のインスタンス４０６のような）にアクセスし、これらを利用するために、顧客デバイスを使用することが可能である。顧客デバイス５１０は、セルフォン、スマートフォン、ハンドヘルド・コンピュータ、パーソナル・デジタル・アシスタント（ＰＤＡ）、デスクトップ・コンピュータなどを含む、さまざまなコンピューティング・デバイス、モバイルまたはその他のもののうちのいずれかからなることが可能である。顧客デバイス５１０は、アプリケーション・プログラミング・インタフェース（ＡＰＩ）要求を受信して処理するように設計されるＤＮＳアドレスからなることが可能であるエンドポイント５１２を介して、サービス・プロバイダ４００と通信することが可能である。特に、エンドポイント５１２は、ＡＰＩを公開するように構成されるウェブ・サーバからなることが可能である。ＡＰＩ要求を使用して、顧客デバイス５１０は、本明細書に記述された機能のいずれかを実装する、またはサービス・プロバイダ４００により提供された１つ以上のサービスにアクセスする要求を行うことが可能である。他のサービス５１５は、サービス・プロバイダ４００内部にあることが可能であり、同様にエンドポイント５１２へＡＰＩ要求を行うことが可能である。クライアントからのＡＰＩ要求は、サービス・プロバイダ４００のプロトコル選択関連機能にアクセスするために、アドミッション・コントロール５１４を通過し、プロトコル選択サービス４４０へと向かうことが可能である。
【００３８】
サービス・プロバイダ４００内に（及び／または管理コンポーネント４１０内に）含まれてもよい、または含まれなくてもよい他の一般的な管理サービスは、アドミッション・コントロール５１４、たとえば、アドミッション・コントロール・ウェブ・サービスとして共に動作する１つ以上のコンピュータを含む。アドミッション・コントロール５１４は、サービス・プロバイダ４００内のデータのサービスまたはストレージについてのＡＰＩ要求を認証し、検証し、アンパックすることが可能である。容量トラッカー５１６は、容量の、予測と、プロビジョニングと、リアルタイムの構成及び割当てとの観点で物理インベントリを管理及び構成することによって、異なるインスタンス・タイプについての要求を満たすために、サーバが構成される必要がある方式を判定することを受け持つ。容量トラッカー５１６は、容量プール・データベース５１８内の利用可能なインベントリのプールを維持する。また容量トラッカー５１６は、リソースが直ちに利用可能であるか、それとも制限されているかを知るために、容量レベルを監視することが可能である。
【００３９】
インスタンス・マネージャ５５０は、ネットワーク内の仮想マシン・インスタンスの起動及び終了を制御する。インスタンスを起動させる命令（ＡＰＩ要求を介してのような）を受信すると、インスタンス・マネージャ５５０は、容量プール５１８からリソースを引き出し、決定されたホスト・サーバ・コンピュータ上でインスタンスを起動させる。インスタンス・マネージャに類似するのは、ストレージ・マネージャ５２２、及びネットワーク・リソース・マネージャ５２４である。ストレージ・マネージャ５２２は、ストレージ容量の開始及び終了に関与し、ネットワーク・リソース・マネージャ５２４は、ルータ、スイッチ、サブネットなどの開始及び終了に関与する。パーティション５４０のネットワークは、図６に関連してさらに記述され、インスタンスを起動させる物理層を含む。
【００４０】
プロトコル選択サービス４４０は、本明細書に記述されたプロトコル選択機能性（たとえば、ＰＳＳ１０８を参照して記述される機能性）を実行することができる。ＰＳＳ４４０は、パーティション５４０のネットワーク（たとえば、サーバ・コンピュータ上で実行する仮想デスクトップ・インスタンスにアクセスするために）、ポリシー・ドキュメント１３８／１４０、及びプロトコル決定テーブル１３４（たとえば、図１と関連して記述されるような）を用いてアドミッション・コントロール５１４と通信する（ことにより、たとえば、新規の機能要求、及び新規の通信リンクを確立することを求める要求を受信する、または一方のプロトコル・タイプから他方のものへ通信を切り換える）ことができる。
【００４１】
図６は、一実施形態に従って構成することができるプロトコル選択関連機能を有するホスト・コンピュータを備えた、仮想マシン・インスタンスを実行するのに使用されるハードウェア資産である、複数のホスト・コンピュータ、ルータ、及びスイッチの実施例を示す。より具体的には、図６は、パーティション６４０のネットワーク、及びそれらと関連付けられた物理ハードウェアを示す。パーティション６４０のネットワークは、ルータ６１６のようなルータにより共に結合された、データ・センター６１０ａ、．．．、６１０ｎのような複数のデータ・センターを含むことが可能である。
【００４２】
ルータ６１６は、受信したパケット内のアドレス情報を読み出し、パケットの宛先を判定する。異なるデータ・センターがホスト・サーバ・コンピュータを含むとルータが決定する場合に、つぎにパケットは、そのデータ・センターへ転送される。このパケットをデータ・センター６１０ａ内のホストへアドレス指定する場合に、つぎにそれは、パケットのパブリックＩＰアドレスをプライベートＩＰアドレスへ変換するネットワーク・アドレス変換器（ＮＡＴ）６１８へ伝えられる。またＮＡＴ６１８は、データ・センター６１０ａの外側にバインドされるパブリック・アドレスへプライベート・アドレスを変換する。追加のルータ６２０は、ＮＡＴ６１８へ結合され、ホスト・サーバ・コンピュータの１つ以上のラック６３０へパケットをルーティングすることが可能である。各ラック６３０は、複数のホスト・サーバ・コンピュータへ結合されるスイッチ６３２を含むことが可能である。特定のホスト・サーバ・コンピュータを６４１で拡大図に示す。
【００４３】
各ホスト６４１は、基本のハードウェア６５０を含む。ハードウェア６５０上に層を広げるのは、ハイパーバイザまたはカーネル層６６０である。ハイパーバイザまたはカーネル層６６０は、タイプ１またはタイプ２のハイパーバイザとして分類されることが可能である。タイプ１のハイパーバイザは、ホスト・ハードウェア６５０上で直接実行し、ハードウェアを制御し、ゲスト・オペレーティング・システムを管理する。タイプ２のハイパーバイザは、従来のオペレーティング・システム環境内で実行される。したがって、タイプ２の環境で、ハイパーバイザは、オペレーティング・システム上に広がる別個の層であることが可能であり、オペレーティング・システムは、システム・ハードウェアとインタラクトする。異なるタイプのハイパーバイザは、Ｘｅｎベース、Ｈｙｐｅｒ−Ｖ、ＥＳＸｉ／ＥＳＸ、Ｌｉｎｕｘなどを含むが、他のハイパーバイザも使用されることが可能である。例示的な実施形態において、ハイパーバイザ層６６０は、本明細書に記述されるように、ＤＳＮまたはＤＭＮをインストールするのに使用できるＤＦＳソフトウェア４０９を含むことができる。
【００４４】
管理層６７０は、ハイパーバイザの部分である、またはそこから分離されることが可能であり、ハードウェア６５０にアクセスするのに必要とされるデバイス・ドライバを一般的に含む。パーティション６８０は、ハイパーバイザによる論理的な分離単位である。各パーティション６８０は、ハードウェア層のメモリ、ＣＰＵ割り当て、ストレージなどのそれ自体の部分を割り当てられることが可能である。加えて、各パーティションは、仮想マシン、及びそれ自体のゲスト・オペレーティング・システムを含むことが可能である（たとえば、ＶＭＩ１がパーティション１上で実行していることができ、ＶＭＩｎがパーティションｎ上で実行していることができる）。このようなものとして、各パーティション６８０は、他のパーティションから独立してそれ自体の仮想マシンをサポートするように設計される容量の理論上の部分である。また、パーティション６８０上のＶＭＩ（ＶＭＩ１、．．．、ＶＭＩｎ）のうちの１つ以上は、図１のＶＤＩ１２６に類似して、顧客アカウントと関連付けられた仮想デスクトップ・インスタンス（ＶＤＩ）を実行することができる。
【００４５】
図７〜図８は、本開示の実施形態に従う、サービス・プロバイダ環境内の仮想デスクトップ・インスタンスについての通信プロトコルを選択する例示的な方法のフローチャートである。図１〜図２及び図７を参照して、例示的な方法７００は、７０２で開始することができ、第１の通信プロトコルと関連付けられた第１の通信チャネルを使用してサービス・プロバイダ環境内のサーバ・コンピュータ（たとえば、１０６）上で実行する仮想デスクトップ・インスタンス（たとえば、１２６）へのアクセスを、プロトコル選択サービス１０８がクライアント・コンピューティング・デバイス（たとえば、１１０）へ提供することができる。たとえば、エンドポイント・サービス１０４、及びクライアント・デバイス１１０は、図２を参照して記述されるような安全な認証シーケンスを実行することができ、ＰＳＳ１０８は、通信プロトコル１の使用に供されるデバイス１１０を認証し、つぎに仮想デスクトップ・インスタンス１２６にアクセスする通信プロトコル１に基づき通信リンク２０２／２０４を確立することができる。
【００４６】
７０４で、ＰＳＳ１０８は、クライアント・コンピューティング・デバイス１１０のユーザから機能についての要求を検出することができ、要求された機能は、第１の通信プロトコル（すなわち、既存の通信リンク２０２／２０４と関連付けられたプロトコル１）によりサポートされない。たとえば、要求された機能は、マルチメディア・データ処理機能、ＵＳＢデータ処理機能、仮想チャネル・データ処理機能、及び／またはキーボード・データ処理機能のうちの１つからなり得る。７０６で、ＰＳＳ１０８は、要求された機能に基づき、複数の利用可能な通信プロトコルからの第２の通信プロトコルを選択することができ、この第２の通信プロトコルは、要求された機能をサポートする。ＰＳＳ１０８は、プロトコル１によりサポートされない、要求された機能をサポートするような通信プロトコル２を選択することができる。プロトコル２の選択は、プロトコル決定テーブル１３４、グローバル・ポリシー１４０、及び／または顧客アカウント・ポリシー１３８に基づくことができる。たとえば、７０８で、ＰＳＳ１０８は、顧客アカウント・ポリシー１３８、及び／またはグローバル・ポリシー１４０を参照することで、ユーザが、第２の通信プロトコル（たとえば、プロトコル２）を使用するように権限付与されているかどうかを検証することができる。
【００４７】
７１０で、検証が成功すると、ＰＳＳ１０８は、第１の通信チャネル（たとえば、２０２／２０４）を使用して仮想デスクトップ・インスタンス１２６へのアクセスを維持しながら、第２の通信プロトコル（たとえば、プロトコル２）を使用してサーバ・コンピュータとクライアント・コンピューティング・デバイスとの間に第２の通信チャネル（たとえば、２０６／２０８）を確立することができる。通信リンク２０４と同様に、プロトコル・エージェント１２８がプロトコル２と関連付けられた新規のポートを確立することができることによって、ＰＳＳ１０８（またはプロトコル・エージェント１２８）は、通信プロトコル２と関連付けられた新規の通信リンク２０６／２０８（または図１の１４４／１４８）を利用可能にすることができる。
【００４８】
図１〜図２及び図８を参照して、例示的な方法８００は、８０２で開始することができ、ＰＳＳ１０８は、クライアント・コンピューティング・デバイス（１１０）のユーザに、サービス・プロバイダ環境内で利用可能な複数の通信プロトコルを使用するように権限付与することができる。たとえば、ＰＳＳ１０８は、コンピューティング・デバイス１１０のユーザに、利用可能なプロトコル１、．．．、Ｎのうちの１つ以上を使用して、これらのようなプロトコルに基づきさまざまな通信リンクを確立するように権限付与することができる。８０４で、ＰＳＳ１０８は、複数の通信プロトコルの第１の通信プロトコルと関連付けられた第１の通信チャネルを使用してサービス・プロバイダ環境内のサーバ・コンピュータ上で実行する仮想デスクトップ・インスタンス（たとえば、１２６）へのアクセスを、クライアント・コンピューティング・デバイス１１０のユーザへ提供することができる。たとえば、ＰＳＳは、デバイス１１０のユーザを認証した（たとえば、図２を参照して、参照番号１〜１１で記述される安全な交換に基づき）後に、通信プロトコル１を使用して通信リンク２０２／２０４を確立することができる。
【００４９】
８０６で、ＰＳＳ１０８は、ネットワーク・レイテンシ（たとえば、ネットワーク・モニタ１３６により測定されるような）、クライアント・コンピューティング・デバイスの特性（たとえば、１１４）、またはサーバ・コンピュータの特性（たとえば、１３２）のうちの１つ以上に基づき、第２の通信チャネル（たとえば、２０６／２０８）経由での仮想デスクトップ・インスタンス１２６へのアクセスのうちの少なくともいくつかを、クライアント・コンピューティング・デバイス１１０へ提供することができ、第２の通信チャネルは、複数の通信プロトコルの第２の通信プロトコルと関連付けられる。たとえば、ＰＳＳ１０８は、クライアント機能１１４、サーバ機能１３２、及び／またはネットワーク・モニタ１３６からの情報（たとえば、ネットワーク・レイテンシ情報）を使用して、第１のプロトコル・タイプの一方の通信リンク（たとえば、プロトコル１を使用するリンク２０２／２０４）から、第２のプロトコル・タイプの他方の通信リンク（たとえば、プロトコル２を使用するリンク２０６／２０８）へ通信トラフィックをオフロードする（またはスイッチオーバーする）かどうかを判定することができる。このような通信配信機能は、自動的に、またはネットワーク管理者の承認時に（たとえば、ポータル１４１を介して）実行されることが可能である。
【００５０】
図９は、記述された技術革新を実施することができる適切なコンピューティング環境の一般化された実施例を描写する。図９を参照して、コンピューティング環境９００は、多様な汎用または専用コンピューティング・システムで技術革新を実施することができるため、使用または機能の範囲について何らの制限も示唆しようとするものではない。たとえば、コンピューティング環境９００は、さまざまなコンピューティング・デバイス（たとえば、デスクトップ・コンピュータ、ラップトップ・コンピュータ、サーバ・コンピュータ、タブレット・コンピュータなど）のうちのいずれかからなることが可能である。
【００５１】
図９を参照して、コンピューティング環境９００は、１つ以上の処理ユニット９１０、９１５、及びメモリ９２０、９２５を含む。図９において、この基本的な構成９３０は、破線内に含まれる。処理ユニット９１０、９１５は、コンピュータ実行可能命令を実行する。処理ユニットは、汎用の中央処理装置（ＣＰＵ）、特定用途向け集積回路（ＡＳＩＣ）内のプロセッサ、または任意の他のタイプのプロセッサであることが可能である。マルチプロセッシング・システムにおいて、複数の処理ユニットは、処理能力を高めるコンピュータ実行可能命令を実行する。たとえば、図９は、中央処理装置９１０と、グラフィックス・プロセッシング・ユニットまたはコプロセッシング・ユニット９１５とを示す。有形のメモリ９２０、９２５は、処理ユニット（複数可）によりアクセス可能な、揮発性メモリ（たとえば、レジスタ、キャッシュ、ＲＡＭ）、不揮発性メモリ（たとえば、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリなど）、またはこれら２つのいくつかの組合せからなり得る。メモリ９２０、９２５は、処理ユニット（複数可）による実行に適切なコンピュータ実行可能命令の形式で、本明細書に記述された１つ以上の技術革新（たとえば、機能性）を実装するソフトウェア９８０を格納する。
【００５２】
コンピューティング・システムは、追加の特徴を有することができる。たとえば、コンピューティング環境９００は、ストレージ９４０、１つ以上の入力デバイス９５０、１つ以上の出力デバイス９６０、及び１つ以上の通信接続９７０を含む。バス、コントローラ、またはネットワークのような、相互接続メカニズム（示されない）は、コンピューティング環境９００のコンポーネントを相互接続する。一般的に、オペレーティング・システム・ソフトウェア（示されない）は、コンピューティング環境９００内で実行する他のソフトウェアについての動作環境を提供し、コンピューティング環境９００のコンポーネントのアクティビティを調整する。
【００５３】
有形のストレージ９４０は、取り外し可能であっても、取り外し不可能であってもよく、磁気ディスク、磁気テープ若しくはカセット、ＣＤ−ＲＯＭ、ＤＶＤ、または非一時的な方式で情報を格納するために使用されることが可能であり、コンピューティング環境９００内でアクセスされることが可能である、任意の他の媒体を含む。ストレージ９４０は、本明細書に記述された１つ以上の技術革新を実施するソフトウェア９８０についての命令を格納する。
【００５４】
入力デバイス（複数可）９５０は、コンピューティング環境９００へ入力を提供する、キーボード、マウス、ペン、若しくはトラックボールのようなタッチ入力デバイス、音声入力デバイス、走査デバイス、または別のデバイスからなり得る。出力デバイス（複数可）９６０は、コンピューティング環境９００からの出力を提供する、ディスプレイ、プリンタ、スピーカ、ＣＤライター、または別のデバイスからなり得る。
【００５５】
通信接続（複数可）９７０は、別のコンピューティング・エンティティへ通信媒体を介した通信を可能にする。通信媒体は、変調されたデータ信号の、コンピュータ実行可能命令、オーディオ若しくはビデオ入力若しくは出力、または他のデータのような情報を伝える。変調されたデータ信号は、その特性セットのうちの１つ以上を含む信号である、またはこの信号の情報を符号化するような方式で変更される信号である。限定されないが、実施例として、通信媒体は、電気、光学、ＲＦ、または他のキャリアを使用することが可能である。
【００５６】
開示された方法のうちのいくつかの操作を便宜的な提示のために特定の順序で記述するが、以下に記載される特定の言語が特定の順序を要求しない限り、説明のこの方式が並べ替えを包含することを理解するであろう。たとえば、順次に記述された操作は、いくつかの事例で、並べ替えられる、または同時に実行されることが可能である。さらに、簡略のために、添付された図面は、開示された方法を他の方法と併せて使用することが可能であるさまざまな方式を示さない可能性がある。
【００５７】
開示された方法のいずれかは、１つ以上のコンピュータ可読記憶媒体（たとえば、１つ以上の光学媒体ディスク、揮発性メモリ・コンポーネント（ＤＲＡＭまたはＳＲＡＭのような）、または不揮発性メモリ・コンポーネント（フラッシュ・メモリ、またはハード・ドライブのような））上に格納されたコンピュータ実行可能命令として実装され、コンピュータ（たとえば、スマートフォン、またはコンピューティング・ハードウェアを含む他のモバイル・デバイスを含む、いずれかの市販のコンピュータ）上で実行されることが可能である。コンピュータ可読記憶媒体との用語は、信号及び搬送波のような通信接続を含まない。開示された実施形態の実施中に作成され使用される任意のデータと同様に、開示された技術を実施するためのコンピュータ実行可能命令のいずれかは、１つ以上のコンピュータ可読記憶媒体上に格納されることが可能である。コンピュータ実行可能命令は、たとえば、ウェブ・ブラウザ、または他のソフトウェア・アプリケーション（リモート・コンピューティング・アプリケーションのような）を介してアクセスされる、またはダウンロードされる専用ソフトウェア・アプリケーション、またはソフトウェア・アプリケーションの部分であることが可能である。このようなソフトウェアは、たとえば、１つ以上のネットワーク・コンピュータを使用して、単一のローカル・コンピュータ（たとえば、任意の適切な市販のコンピュータ）上で、またはネットワーク環境（たとえば、インターネット、ワイド・エリア・ネットワーク、ローカル・エリア・ネットワーク、顧客サーバ・ネットワーク（クラウド・コンピューティング・ネットワークのような）、または他のこのようなネットワークを介して）内で実行されることが可能である。
【００５８】
明確にするために、ソフトウェア・ベースの実装の特定の選択された態様のみを記述する。当該技術で既知である他の詳細は、省略される。たとえば、開示された技術がいずれかの特定のコンピュータ言語またはプログラムに限定されないことを理解するであろう。たとえば、開示された技術は、Ｃ＋＋、Ｊａｖａ（登録商標）、Ｐｅｒｌ、ＪａｖａＳｃｒｉｐｔ（登録商標）、Ａｄｏｂｅ  Ｆｌａｓｈ（登録商標）、または任意の他の適切なプログラミング言語で書き込まれたソフトウェアにより実施されることが可能である。同様に、開示された技術は、任意の特定のコンピュータ、またはハードウェアのタイプに限定されない。適切なコンピュータ及びハードウェアの特定の詳細は、既知であり、本開示で詳細に記載される必要がない。
【００５９】
ソフトウェアの代わりに、１つ以上のハードウェア・ロジック・コンポーネントにより、少なくとも部分的に、本明細書に記述された任意の機能性を実行することが可能であることもよく理解するであろう。たとえば、制限なしで、使用されることが可能であるハードウェア・ロジック・コンポーネントの例示的なタイプは、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、特定用途向け標準品（ＡＳＳＰ）、システムオンチップ（ＳＯＣ）・システム、コンプレックス・プログラマブル・ロジック・デバイス（ＣＰＬＤ）などを含む。
【００６０】
さらに、ソフトウェア・ベースの実施形態（たとえば、コンピュータに開示された方法のいずれかを実行させるためのコンピュータ実行可能命令を含む）のいずれかは、適切な通信手段を介してアップロードされる、ダウンロードされる、または遠隔でアクセスされることが可能である。これらのような適切な通信手段は、たとえば、インターネット、ワールド・ワイド・ウェブ、イントラネット、ソフトウェア・アプリケーション、ケーブル（光ファイバ・ケーブルを含む）、磁気通信、電磁通信（ＲＦ、マイクロ波、及び赤外線通信を含む）、電子通信、または他のこのような通信手段を含む。
【００６１】
本開示の実施形態は、以下の条項を考慮して記述されることが可能である。
１．サービス・プロバイダ環境内の仮想デスクトップ・インスタンスについての通信プロトコルを選択する方法であって、
クライアント・コンピューティング・デバイスへ、第１の通信プロトコルと関連付けられた第１の通信チャネルを使用して、前記サービス・プロバイダ環境内のサーバ・コンピュータ上で実行される仮想デスクトップ・インスタンスへのアクセスを提供し、
前記クライアント・コンピューティング・デバイスのユーザから機能についての要求を検出し、要求された前記機能が前記第１の通信プロトコルによりサポートされず、
要求された前記機能に基づき、複数の利用可能な通信プロトコルから第２の通信プロトコルを選択し、前記第２の通信プロトコルが要求された前記機能をサポートし、
前記第２の通信プロトコルを使用するように前記ユーザに権限付与するかどうかを検証し、
検証が成功すると、前記第１の通信チャネルを使用して前記仮想デスクトップ・インスタンスへのアクセスを維持しながら、前記第２の通信プロトコルを使用して前記サーバ・コンピュータと前記クライアント・コンピューティング・デバイスとの間に第２の通信チャネルを確立する、
ことを含む、前記方法。
【００６２】
２．前記クライアント・コンピューティング・デバイス、及び前記サーバ・コンピュータの少なくとも１つの特性と、
前記サービス・プロバイダ環境と関連付けられたネットワーク・レイテンシと
を示す情報を受信する、
ことをさらに含む、条項１に記載の前記方法。
【００６３】
３．前記ネットワーク・レイテンシ、
前記クライアント・コンピューティング・デバイスの前記少なくとも１つの特性、または
前記サーバ・コンピュータの前記少なくとも１つの特性、
のうちの１つ以上に基づき前記第２の通信チャネルを使用して、前記第１の通信チャネルを終了し、前記仮想デスクトップ・インスタンスへのアクセスを提供するかどうかを判定する、
ことをさらに含む、条項２に記載の前記方法。
【００６４】
４．前記複数の利用可能な通信プロトコルは、前記サービス・プロバイダ環境内のプロトコル決定テーブルに列挙され、１つ以上の機能と関連付けられた各前記複数の利用可能な通信プロトコルは、前記クライアント・コンピューティング・デバイスにより実行される、先行条項のいずれか1項に記載の前記方法。
【００６５】
５．前記検証することは、
前記ユーザの顧客アカウント・ポリシーにアクセスし、前記ユーザが前記プロトコル決定テーブル内の前記複数の利用可能な通信プロトコルのうちの１つ以上を使用するように権限付与されているかどうかを判定する、
ことをさらに含む、条項４に記載の前記方法。
【００６６】
６．要求された前記機能は、
マルチメディア・データ処理機能、
ＵＳＢデータ処理機能、
仮想チャネル・データ処理機能、または
キーボード・データ処理機能、
のうちの少なくとも１つからなる、先行条項のいずれか1項に記載の前記方法。
【００６７】
７．命令を含むコンピュータ可読記憶媒体であって、前記命令は、実行時に、コンピュータ・システムに、
クライアント・コンピューティング・デバイスへ、複数の通信プロトコルの第１の通信プロトコルと関連付けられた第１の通信チャネルを使用して、サーバ・コンピュータ上で実行される仮想デスクトップ・インスタンスへのアクセスを提供させ、
前記クライアント・コンピューティング・デバイスへ、１つ以上のネットワーク・レイテンシに基づき第２の通信チャネルを介した前記仮想デスクトップ・インスタンスへの前記アクセスのうちの少なくともいくつかを提供させ、
前記第２の通信チャネルは、前記複数の通信プロトコルの第２の通信プロトコルと関連付けられている、
前記コンピュータ可読記憶媒体。
【００６８】
８．前記命令は、実行時に、前記コンピュータ・システムにさらに、
前記第１の通信チャネルを終了させ、前記第２の通信プロトコルと関連付けられた前記第２の通信チャネルへ前記仮想デスクトップ・インスタンスへの前記アクセスを提供させる、
条項７に記載の前記コンピュータ可読記憶媒体。
【００６９】
９．前記命令は、実行時に、前記コンピュータ・システムにさらに、
前記第１の通信チャネルを使用して前記クライアント・コンピューティング・デバイスへ複数の機能のうちの少なくとも１つを提供しながら、前記第２の通信チャネルへ、前記仮想デスクトップ・インスタンスへの前記アクセスと関連付けられた、前記複数の機能のうちの少なくとももう１つをスイッチオーバーさせる、
条項７または８に記載の前記コンピュータ可読記憶媒体。
【００７０】
１０．前記複数の機能は、
マルチメディア・データ処理機能、
ＵＳＢデータ処理機能、
仮想チャネル・データ処理機能、または
キーボード・データ処理機能、
のうちの少なくとも１つを含む、条項９に記載の前記コンピュータ可読記憶媒体。
【００７１】
１１．前記命令は、実行時に、前記第１の通信プロトコル及び第２の通信プロトコルを前記コンピュータ・システムに同時にさらに使用させ、前記仮想デスクトップ・インスタンスへの前記アクセスを提供する、条項７〜１０のいずれか１項に記載の前記コンピュータ可読記憶媒体。
【００７２】
１２．前記複数の通信プロトコルは、
ＰＣ−ｏｖｅｒ−ＩＰ（ＰＣｏＩＰ）通信プロトコル、
ウェブ実時間通信（ＷｅｂＲＴＣ）プロトコル、または
リモート・デスクトップ・プロトコル（ＲＤＰ）、
のうちの少なくとも１つを含む、条項７〜１１のいずれか１項に記載の前記コンピュータ可読記憶媒体。
【００７３】
１３．前記クライアント・コンピューティング・デバイスの前記少なくとも１つの特性、または前記サーバ・コンピュータの前記少なくとも１つの特性は、
少なくとも１つのＣＰＵ特性、
暗号化デバイスまたは復号デバイスの可用性、
メモリ容量、または
グラフィックス・プロセッシング・ユニット（ＧＰＵ）の可用性、
のうちの少なくとも１つを含む、条項７〜１２のいずれか１項に記載の前記コンピュータ可読記憶媒体。
【００７４】
１４．前記命令は、実行時に、前記コンピュータ・システムにさらに、
前記クライアント・コンピューティング・デバイスから機能についての要求を検出させ、要求された前記機能が前記第１の通信プロトコルによりサポートされない、
条項７〜１３のいずれかに記載の前記コンピュータ可読記憶媒体。
【００７５】
１５．前記命令は、実行時に、前記コンピュータ・システムにさらに、
要求された前記機能が前記第２の通信プロトコルによりサポートされることを検証させ、
検証が成功すると、前記第２の通信チャネルを使用して前記クライアント・コンピューティング・デバイスへ要求された前記機能を提供させる、
条項１４に記載の前記コンピュータ可読記憶媒体。
【００７６】
１６．前記命令は、実行時に、前記コンピュータ・システムにさらに、
要求された前記機能が前記第２の通信プロトコルによりサポートされるかどうかを判定させ、
要求された前記機能が前記第２の通信プロトコルによりサポートされないと判定すると、
要求された前記機能に基づき、前記複数の通信プロトコルから第３の通信プロトコルを選択させ、前記第３の通信プロトコルが要求された前記機能をサポートし、
前記第１の通信チャネル及び第２の通信チャネルを使用して前記仮想デスクトップ・インスタンスへのアクセスを維持しながら、前記機能を実行する前記第３の通信プロトコルを使用して前記サーバ・コンピュータと前記クライアント・コンピューティング・デバイスとの間に第３の通信チャネルを確立させる、
条項１４または１５に記載の前記コンピュータ可読記憶媒体。
【００７７】
１７．ネットワークを介して互いに結合されてサービス・プロバイダ環境を形成する複数のサーバ・コンピュータと、
前記複数のサーバ・コンピュータへ、及びクライアント・コンピューティング・デバイスへ通信可能に結合されたプロトコル選択サービスと
を備え、
前記サーバ・コンピュータの少なくとも一部は、仮想デスクトップ・インスタンスを実行し、
前記プロトコル選択サービスは、
前記仮想デスクトップ・インスタンスのうちの１つについての第１の機能を前記クライアント・コンピューティング・デバイスへ提供し、前記第１の機能が第１の通信プロトコルを使用して提供され、
前記仮想デスクトップ・インスタンスのうちの前記１つについての第２の機能を前記クライアント・デバイスへ提供し、前記第２の機能が第２の通信プロトコルを使用して提供され、前記第１の機能と同時に提供され、前記第１の通信プロトコルと第２の通信プロトコルとが異なるプロトコルである、
ように動作可能である、
システム。
【００７８】
１８．前記プロトコル選択サービスは、
前記クライアント・コンピューティング・デバイスから、または前記複数のサーバ・コンピュータから前記第２の機能についての要求を検出し、前記第２の機能が前記第１の通信プロトコルによりサポートされず、
前記第２の機能についての前記要求に基づき前記第２の通信プロトコルを選択し、
前記第２の通信プロトコルを使用して、前記複数のサーバ・コンピュータと前記クライアント・コンピューティング・デバイスとの間に通信チャネルを確立する、
ようにさらに動作可能である、条項１７に記載の前記システム。
【００７９】
１９．前記プロトコル選択サービスは、
前記クライアント・コンピューティング・デバイスの少なくとも１つの特性を示す情報、前記複数のサーバ・コンピュータのうちの１つ以上の少なくとも１つの特性を示す情報、または前記サービス・プロバイダ環境と関連付けられたネットワーク・レイテンシを示す情報を受信する、
ようにさらに動作可能である、条項１７または１８に記載の前記システム。
【００８０】
２０．前記プロトコル選択サービスは、前記受信した情報に基づき前記第１の通信プロトコルを使用して停止するかどうかを判定するようにさらに動作可能である、条項１９に記載の前記システム。
【００８１】
開示された方法、装置、及びシステムは、いかなる場合も限定的であると解釈されるべきではない。代替に、本開示は、単独で、ならびに互いとのさまざまな組合せ、及び副組合せで、さまざまな開示された実施形態のすべての新規な、かつ非自明性の特徴及び態様を対象とする。開示された方法、装置、及びシステムは、任意の特定の態様、または特徴、またはそれらの組合せに限定されず、開示された実施形態も、任意の１つ以上の特定の利点が存在すること、または問題が解決されることを要求しない。
【００８２】
開示された本発明の原理を適用することができる、多くの可能な実施形態を考慮して、図示された実施形態が本発明の好ましい実施例のみであり、本発明の範囲を限定すると解釈されないことを認識するであろう。むしろ、本発明の範囲は、以下の特許請求の範囲により定められる。したがって、本発明として請求されるものは、これらの特許請求の範囲内に入るすべてのものである。
【図１】
0006621838.tif 000002
【図２】
0006621838.tif 000003
【図３】
0006621838.tif 000004
【図４】
0006621838.tif 000005
【図５】
0006621838.tif 000006
【図６】
0006621838.tif 000007
【図７】
0006621838.tif 000008
【図８】
0006621838.tif 000009
【図９】
0006621838.tif 000010