本開示のこれらおよび他の特徴は、本開示の様々な実施形態を描写する添付の図面と併せてなされる、本開示の様々な態様の以下の詳細な説明から、より容易に理解される。
図面は、本開示の典型的な態様のみを描写することを意図しており、したがって、本開示の範囲を限定するものと見なされるべきではない。
本開示の実施形態は、リソースサーバを利用せずに、仮想コンピューティング環境において、クライアントデバイスに接続されたローカルリソースを他のクライアントデバイスと共有するための技術的解決策を提供する。従来、クライアントデバイス間でのプリンタなどのリソースの共有は、プリンタが、ユニバーサルプリントサーバ(UPS)、複合デスクトップデリバリコントローラ(DDC)および/または他のポリシーなどのエンタープライズサービスによって管理されることを必要とした。したがって、クライアントデバイスにローカルに(例えば、直接)接続されたプリンタ、ファックスなどのリソースを、そのリソースがエンタープライズサービスによって管理されていない限り、共有することはできなかった。リソースには、クライアントデバイスに接続されている仮想デスクトップエージェント(VDA)セッションからクライアントデバイスを介して、またはローカルでアクセスできた。
本実施形態は、クライアントデバイスセットにローカルに接続されているリソースを、ワークスペース(WS)リソースサーバ(例えば、クラウドに配置されている)に登録するための方法論を提供する。また、WSリソースサーバは、クライアントデバイスのユーザから現在利用可能なリソースのリストに対する要求を受信するように設定されている。その後、第1クライアント上のローカルに接続されたリソースと第2クライアントとの間で接続を確立できる。各クライアントには、仮想デスクトップエージェント(VDA)セッション、WebSocket接続などを介して、WSリソースサービスとのインターフェイスを管理できるクライアント側(CS)サービスが含まれている。
本開示の目的のために、「ローカルリソース」は、一般に、ネットワークベースのリソースを含む、クライアントデバイスによってまたはクライアントデバイスから容易にアクセス可能であるが、認証子、ゲートウェイ、ワークスペースアプリケーション、レガシーユニバーサルプリントサーバなどの従来のエンタープライズサービスなしではアクセスできない任意のリソースを含む。ローカルリソースは、USB、Bluetooth(登録商標)、Wifiなどの接続を使用してクライアントデバイスに接続できる。
図1は、例示的な実施形態による仮想コンピューティング環境を有するコンピューティングインフラストラクチャ100を示す。この場合、MS Windows(登録商標)、Linux(登録商標)等を実行するサーバデスクトップ104は、クライアントデバイスセット(例えば、ラップトップ、スマートデバイスなど)のためにサーバデスクトップ104へのリモート仮想アクセスを提供する仮想デスクトップエージェント(VDA)122セットを含む。サーバデスクトップ104は、例えば、オンプレミスシステムとして、またはクラウド102を介して実装することができる。図示の例では、サーバデスクトップ104は、オンプレミスシステムとして実装され、ワークスペースリソースサーバ110へのアクセスを提供するクラウドコネクタ120および配信コントローラ118を介してクラウド102とやりとりする。
図の例では、2つのクライアントデバイス106、108が、サーバデスクトップ104に遠隔的にアクセスするように構成されている。第1クライアントデバイス106は、クライアント側(CS)リソースサービス134を実行するワークスペース(WS)アプリケーション130(例えば、米国フロリダ州フォート、ラウダーデールのCitrix Systemsから市販されているCitrix(登録商標)ワークスペースによって提供される)を含み、VDAセッション128を介してサーバデスクトップ104に接続される。同様に、第2クライアントデバイス108は、CSリソースサービス138を実行するWSアプリケーション140を含み、VDAセッション142を介してサーバデスクトップ104に接続される。
この場合、プリンタ、スキャナ、ファックス、周辺機器などのリソース124は、エンタープライズサービスを使用せずに、例えばユニバーサルシリアルバス(USB)接続を介してクライアントデバイス106に接続されている。過去の実装では、リソース124は、ローカルクライアントデバイス106を介してのみ利用可能であり、すなわち、リモートクライアントデバイス108のユーザは、プリントサーバのようなエンタープライズサービスがなければ、リソース124にアクセスできない。本アプローチは、第2クライアントデバイス108が、(1)クライアントデバイス106、108にそれぞれインストールされたクライアント側(CS)リソースサービス134、138、および(2)クラウド102に実装されたWSリソースサーバ110の使用により、第1クライアントデバイス106上のリソース124にアクセスすることを可能にする。いくつかの実施形態では、クライアント側(CS)リソースサービス134、138は、それぞれワークスペース(WS)アプリケーション130、140の一部としてインストールすることができる。
例示的な一実施形態では、WSリソースサーバ110は、Citrix HDX(High Definition Experience)プロトコルなどの仮想チャネルインフラストラクチャを介して、フルまたはライトウェイトヘッドレスセッションのいずれかでCSリソースサービス134、138と通信する。ヘッドレスセッションは、ユーザが直接開始することなく、ユーザが見ることができるアーティファクトなしに、バックグラウンド動作として自動的かつ静かに確立されるICA(Citrix Independent Computing Architecture)などのプロトコルを利用する。このようなインフラストラクチャは、クライアントデバイス上でワークスペースの仮想バージョンをレンダリングし、例えば、(1)画面アクティビティ、アプリケーションコマンド、エンドポイントデバイス、およびネットワークとサーバの機能を調べて、アプリケーションまたはデスクトップアクティビティをレンダリングする方法と場所をすぐに決定し、(2)データ圧縮を提供し、(3)データ重複排除などのテクニックを使用してネットワークトラフィックを最適化できる。軽量ヘッドレスセッションでは、セッションは、例えば、グラフィカルユーザインターフェイスや、リソース124の使用に必要ではないオーディオ、マルチメディア、クライアントドライブマッピング、クリップボードマッピングなどの追加の仮想チャネルをレンダリングせずに実行される。
CSリソースサービス134、138は、例えば、HDX VDAセッション、ヘッドレスVDAセッション、または何らかの他のプロトコルを使用して、アクティブセッションを介して、関連するWSアプリケーション130、140を使用してWSリソースサーバ110と通信する。CSリソースサービス134、138によって実行される例示的な機能は、リソース124のクラウド102への登録を実行するために、リソース124およびWSリソースサーバ110への転送デバイスメタデータによって生成される、リソース接続および切断イベント、例えば、「プラグアンドプレイ」イベントの捕捉を含む。CSリソースサービス134、138はまた、ユーザが、他のユーザまたはデバイスにリソース124へのアクセスを許可するアクセス権を設定することを可能にする。これらの権利は、次に、WSリソースサーバ110またはアクセス制御を管理する別のサーバのいずれかに転送される。CSリソースサービス134、138は、列挙要求をWSリソースサーバ110に送信して、ユーザが利用可能なすべてのリソースおよび関連するリソース詳細をリストすることもできる。CSリソースサービス134、138は、さらに、任意の着信要求をリッスンして、遠隔クライアントデバイスからローカルに接続されたリソース124にアクセスし、WSリソースサーバ110からの要求者のアクセス権を認証およびチェックした後に、要求者へのアクセスを許可することができる。
一実施形態では、新しいリソース124がクライアントデバイス106に接続されると、WSリソースサーバ110は、新しいクライアント側リソース124を、例えば、リソースデータベース(DB)112に登録する。一実施形態では、新しいリソース124が接続されると、WSリソースサーバ110は、リソースメタデータを受信し、リソースIDを生成する。WSリソースサーバ110は、関連するリソースメタデータを含むリソースIDのリストをリソースDB112に保持する。
ユーザ要求に応答して、WSリソースサーバ110は、そのユーザのアクセス権を検証した後、ユーザが利用可能なすべてのクライアント側リソース124のリストを生成する。WSリソースサーバ110は、例えば、MicrosoftによるActive Directoryのようなディレクトリサービスを使用して、許可ポリシーに基づいてユーザを認証し、ユーザを許可するために、WSリソースサーバ110の一部であってもなくてもよい認証サービス114に連絡してもよい。一旦生成されると、WSリソースサーバ110は、リソースメタデータを要求側CSリソースサービス138に共有する。メタデータには、例えば、リソースタイプ、名前、モデル、ドライババージョン、Windowsでは{Class GUID、インスタンスGUID}、LINUXでは{Product ID、Product Version}、デバイスMacアドレス、クライアント名などがある。一部の実施形態では、ユーザ要求は、VDAセッション、例えばVDAセッション142内でトリガすることができる。他の実施形態では、ユーザ要求は、クライアントデバイス、例えば、クライアントデバイス108のWSアプリケーション140からトリガされ、VDAセッション142を介してWSリソースサーバ110に中継されることができる。
図2は、図1を参照して、例示的なリソース登録プロセス200および例示的なリソース切断プロセス202を示す流れ図を示す。図1は、リソース登録プロセス200の間に、ユーザがリソース124をクライアントデバイス106に接続し、これにより、リソース124は、「プラグアンドプレイ」イベントのようなイベントを生成し、その後、WSアプリケーション130上で実行されるCSリソースサービス134によって処理される。次いで、イベントは、アクティブなフルまたはヘッドレスHDX VDAセッション128を使用して、仮想チャネルを介して、例えば、HDXを介して通信される。次に、WSアプリケーション130は、クラウドコネクタ120を介してWSリソースサーバ110に登録呼び出しを行う。また、WSアプリケーション130は、要求と共にリソースメタデータを送信する。
例示的な実施形態では、デバイスが検出されると、登録プロセス中に、CSリソースサービス134は、例えば、インタフェースコールGUID、ハンドル、タイプ、名前、モデル、製品ID、製品バージョン、ドライバ情報、IPアドレスなどを含み得るリソースメタデータ(すなわち、デバイス情報)をWSリソースサーバ110に送信する。次に、WSリソースサーバ110は、後続のイベントに使用されるCSリソースサービス134にリソースIDを送り返す。
したがって、WSリソースサーバ110は、受信された要求に応答して、リソースメタデータを検証し(例えば、重複のチェックなど)、これは、リソースタイプ、リソースドライバ、リソースIPアドレス(内部/外部)などを評価することができる。次に、WSリソースサーバ110は、リソースIDを生成し、リソースメタデータにリソースIDを割り当て、リソース124を追跡するWSアプリケーション130およびCSリソースサービス134に送信する。
リソース切断プロセス202の間、例えば、リソース124は、クライアントデバイス106からアンプラグされ、例えば、「プラグアンドプレイ」切断イベントが生成される。WSアプリケーション130上で実行されるCSリソースサービス134は、イベントを捕捉し、リソースIDと共にWSリソースサーバ110に要求を転送して、リソースデータベース112内でリソースを非アクティブとしてマークする。
図3は、図1を参照して、例示的なリソースアクセスプロセスを示す。この例では、クライアントデバイス108上のWSアプリケーション140のユーザは、ユーザクレデンシャルを提供し、利用可能なリソースのリストを要求する。WSアプリケーション140上で実行されるCSリソースサービス138は、クラウドコネクタ120を介してWSリソースサーバ110に要求を送信する。次に、WSリソースサーバ110は、認証サービス114を呼び出して、ユーザのクレデンシャルを検証する。Active Directory(AD)統合(ADデータベースでのルックアップなど)、Microsoft Azure AD、サードパーティIDプロバイダ(IDP)との統合など、任意の認証プロセスを使用できる。さらに、クラウドコネクタを使用して、許可をローカルADアカウントと統合することができる(例えば、顧客企業がすでにそれをサポートしている場合)。
ユーザが認可されると、WSリソースサーバ110は、ユーザの認可および関連するポリシーに基づいて、ユーザが利用可能なリソースのリストを決定する。次に、WSリソースサーバ110は、WSアプリケーション140を介して利用可能なリソースのリストをユーザに送信する。ユーザは、アクセスしたいリソース124を選択し、その要求をWSリソースサーバ110に送信する。次に、WSリソースサーバ110は、プッシュ通知をクライアントデバイス106に送信して、リソース124に接続されたWSアプリケーション130/VDAセッション128をウェイクアップする。プッシュ通知サービス116は、WSリソースサーバ110に組み込まれてもよいし、独立していてもよい。プッシュ通知が受信されると、ユーザはリソースメタデータ情報を介してリソース124に直接アクセスすることができる。例示的なVDA実施形態では、HDXは、印刷データなど、リソース124によって必要とされる任意のデータを管理する。この場合、HDX印刷仮想チャネルは、ローカルリソース124を仮想プリンタとしてセッションにマッピングするために使用される。
WSリソースサーバ110からのプッシュ通知は、まず、WSリソースサーバ110の一部であるか、または第三者によって提供されるプッシュ通知サービス116に送られる。そして、通知は、その通知をWSアプリケーション130に転送するクライアントデバイス106のオペレーティングシステムに転送される。通知は、次に、CSリソースサービス134に転送され、これは、ウェイクアップ信号またはリソース124への接続信号を発行する。
プッシュ通知は、効率的なネイティブプラットフォーム機能(例えば、Windows、Apple、Android(登録商標)など、プッシュ通知とそれぞれのクラウドプッシュ通知サービスを使用する)を利用するため、理想的なアプローチであることに留意されたい。しかし、既存のアクティブな接続は、通知、例えば、アクティブなWSアプリケーション130をWSリソースサーバ110のWebSocket接続に、またはアクティブなWSアプリケーション130をVDA HDX接続、例えば、アクティブなVDAセッション128に送信するために、代替的に利用することができる。
パフォーマンスと可用性のために、クライアントリソース124は、WSアプリケーション130を介してWSリソースサーバ110によってトリガされるプッシュ通知を介してウェイクアップされてもよい(これは、クライアントデバイス106上の接続されたリソースのマッピングを維持する)。最初に、WSリソースサーバ110へのリソース登録時に、WSアプリケーション130は、プッシュ通知サービス116に登録し、WSリソースサーバ110にリソース情報と共に送信されるデバイストークンを取得することもできる。本実施形態では、リソース124を所有するクライアントデバイス106上で実行されるWSアプリケーション130は、アクティブなリソースセッション128を維持する必要はない。別のクライアントデバイスがリソース124の使用を要求すると、WSリソースサーバ110は、利用可能なリソースIDおよびメタデータをクライアントデバイス106に送信する。リソースの選択後、同じものに対する要求がWSリソースサーバ110に送信される。WSリソースサーバ110は、先に受信したクライアントデバイス106のデバイストークンを用いて、プッシュ通知を送信する。
このプッシュ通知は、リソース124に接続されたWSアプリケーション130を起動する。ウェイクアップ要求を受信すると、次に、WSアプリケーション130は、リソースセッション132を起動し、その後、リソースと通信する要求を受信することができる。セッションが既に存在する場合(例えば、前の要求から)、そのセッションが利用される。セッションが存在しない場合は、新しいヘッドレスリソースセッションを作成できる。
図4、図6Aおよび図6Bを参照して、リソース共有環境220におけるプッシュ通知サービスの使用についてさらに説明する。図6Aの流れ図(図4および図1を参照)に示すように、WSアプリケーション130は、S1において、ウィンドウ通知サービス、Android PNS、Apple PNSなどのプッシュ通知サービス(PNS)230に登録する。S2において、WSアプリケーション130は、クライアント側リソースサービス134を実行し、VDA228とのアクティブなリモートセッションを確立する。S3において、WSアプリケーション130は、例えば、秘密ID、秘密鍵、デバイストークン、デバイスタイプなどを、WSリソースサービス222(例えば、WSリソースサーバ110上で実行されている)に、例えば、VDAホストエージェント236を介して、または直接的に、送信する。
S4において、VDA228は、有効なセッション残留を有する可能性があり、S5において、別のユーザが、リソース124にアクセスするために、WSリソースサービス222に要求を発行することに留意されたい。S6において、WSリソースサービス222は通知を生成し、S7において、ディスパッチのための通知を準備する。例えば、通知コンテキストを秘密鍵で暗号化し、デバイストークン、秘密鍵ID、メタデータ等を追加する。S8で、WSサービス222はVDAホストエージェント236に通知を送信する。S9において、WSアプリケーション130がアクティブ接続を有するかどうかの判定が行われる。
アクティブな接続が存在しない場合、WSリソースサービス222は、プッシュ通知プロバイダ232に、S10において、デバイスタイプに基づいてPNSを介して通知をディスパッチするように通知する。次に、S11において、PNS230は、ターゲットデバイス(すなわち、リソース124に接続されたクライアントデバイス106)にサイレント通知を中継する。S12において、ターゲットデバイス(すなわち、クライアントデバイス106)は、WSアプリケーション130に対するプッシュ通知を受信し、S13において、ターゲットデバイスOSエージェント227は、その通知をWSアプリケーション130に中継する。次に、クライアント側リソースサービス134は、S14において、WSアプリケーション130から通知を受信し、S15において、その通知を復号する。S16において、クライアント側リソースサービス134は、リソース124をウェイクアップ/再接続する。
S9でアクティブな接続がある場合、S17で、例えば、HDXコネクタまたはWebSocketなどの他のプロトコルを介して、ウェイクアップ通知がディスパッチされる。次に、プロセスはS14で続行し、クライアント側リソースサービス134はWSアプリケーション130から通知を受信する。このプロセスは、図6Bを用いて続く。
代替実施形態では、WSアプリケーションおよびHDXなどの仮想チャネルプロトコルを使用して通信経路を提供するのではなく、代わりにWebSocketなどの技術を利用することができる。WebSocketはコンピュータ通信プロトコルで、1つのTCP接続を介して全二重通信チャネルを提供する。このアプローチは、CS資源サービス134、138(図1)がVDAに接続するか、またはヘッドレスHDXセッションを実行する必要性を除去する。WebSocketは、WSリソースサーバ110との双方向通信と、デバイスメタデータの共有を可能にする。リソースは、前述したように、プッシュ通知を介して起動されてもよい。あるいは、前述のように、既存のアクティブなWebSocket接続を使用してリソースを起動することができる。ある実装では、CSリソースサービス134、138は、オープンなWebSocketを維持し、WSリソースサーバ110からの受信データをリッスンすることができる。CSリソースサービス138が永続的なWebSocket接続を維持する実施形態では、WSアプリケーションは関与する必要はない。ネイティブプラットフォーム統合プッシュ通知、例えば、Apple Push Notification Service(APS)、Windows Push Notification Service(WPS)などを含む実施形態では、WSアプリケーションは、プッシュ通知を受信し、それらをCSリソースサービス138に中継するように登録することができる。
図5は、HDXを利用しないアーキテクチャ250を示す。代わりに、WSリソースサーバ110を介したリソース共有は、直接的なピアツーピア(P2P)接続252(例えば、WebSocket、TCP、UDP、HTTPSなど)またはP2P間接接続を利用する。前述のように、WebSocket接続は、コンピューティングデバイス(例えば、WSリソースサーバ110)と確立することができる。第1デバイス106と第2デバイス108との間のP2P直接接続は、可能であればいつでも利用される。あるいは、P2P間接接続、例えば、第1および第2デバイス間のネットワークアドレス変換(TURN)サーバ254周辺のリレーを使用するネットワークアドレス変換(STUN)/トラバーサルからのヘルプを利用することもできる。
図6Bに戻ると、デバイス共有プロセスがさらに説明され、図6AのコネクタAから続く。S18において、要求されたマシン(例えば、クライアントデバイス106またはクライアントデバイス108)がP2Pメソッドを介して到達可能であるかどうかの判定が行われる。肯定の場合、クライアント側リソースサービスは、直接アドレスを介して、またはS19で間接的(例えば、STUN/TURN)サーバを介して接続をセットアップし、共有リソースへのアクセスは、S20で提供される。S18において、要求されたマシンがP2Pを介して到達可能でない場合、S21において、HDXプロトコルを使用するかどうかの判定が行われる。肯定の場合、S23において、WSアプリケーションはリレーとして動作し、HDXを介して接続をセットアップし、S20において共有リソースにアクセスする。否定の場合、S22において、WSアプリケーションはリレーとして動作し、WebSocketを介して接続をセットアップし、S20において共有リソースにアクセスする。
図7を参照すると、エンタープライズコンピューティングプラットフォームを実装するのに適した例示的なネットワーク環境400が示されている。ネットワーク環境400は、1つまたは複数のネットワーク404(1)~404n(一般にネットワーク404と呼ばれる)を介して1つまたは複数のサーバ406(1)~406(n)(一般にリモートマシン406またはサーバ406とも呼ばれる)と通信する1つまたは複数のクライアント402(1)~402(n)(一般にローカルマシン402またはクライアント402とも呼ばれる)を含むことができる。いくつかの実施形態では、クライアント402は、1つまたは複数の機器410(1)~410n(一般に、機器410またはゲートウェイ410と呼ばれる)を介してサーバ406と通信することができる。
図7に示す実施形態は、クライアント402とサーバ406との間の1つまたは複数のネットワーク404を示すが、他の実施形態では、クライアント402およびサーバ406は、同じネットワーク404上にあってもよい。種々のネットワーク404は、同じタイプのネットワークであってもよく、または異なるタイプのネットワークであってもよい。例えば、ある実施形態では、ネットワーク404(1)は、ローカルエリアネットワーク(LAN)または企業イントラネットのようなプライベートネットワークであってもよく、ネットワーク404(2)および/またはネットワーク404(n)は、ワイドエリアネットワーク(WAN)またはインターネットのようなパブリックネットワークであってもよい。他の実施形態では、ネットワーク404(1)とネットワーク404(n)の両方がプライベートネットワークであってもよい。ネットワーク404は、有線および/または無線ネットワークのような1つ以上のタイプの物理ネットワークおよび/またはネットワークトポロジーを使用することができ、伝送制御プロトコル(TCP)、インターネットプロトコル(IP)、ユーザデータグラムプロトコル(UDP)、または他の同様のプロトコルのような1つ以上の通信トランスポートプロトコルを使用することができる。
図7に示すように、1つまたは複数の機器410は、ネットワーク環境400の様々な地点または様々な通信経路に配置することができる。例えば、機器410(1)は、2つのネットワーク404(1)と404(2)との間に配備されてもよく、機器410は、例えば、クライアント402とサーバ406との間のネットワークトラフィックを加速するために連携して動作するように互いに通信してもよい。他の実施形態では、機器410は、ネットワーク404上に配置されてもよい。例えば、デバイス410は、クライアント402および/またはサーバ406の一部として実装されてもよい。一実施形態では、機器410は、フロリダ州フォート、ラウダーデールのCitrix Systems、Inc.によって販売されているCitrixネットワーキング(以前はNetScaler(登録商標))製品などのネットワークデバイスとして実装することができる。
図7に示すように、1つまたは複数のサーバ406は、サーバファーム408として動作することができる。サーバファーム408のサーバ406は、論理的にグループ化することができ、クライアント402および/または他のサーバ406から地理的に共存するか(例えば、オンプレミス)、または地理的に分散する(例えば、クラウドベース)ことができる。一実施形態では、サーバファーム408は、ファイルサーバ、ゲートウェイサーバ、プロキシサーバ、または他の類似のサーバ使用などの他の使用も可能であるが、1つ以上のアプリケーションをクライアント402の1つ以上に代わって(例えば、アプリケーションサーバとして)実行する。クライアント402は、サーバ406上のホストされたアプリケーションへのアクセスを求めてもよい。
図7に示すように、いくつかの実施形態では、機器410は、一般にWAN最適化機器412と呼ばれるWAN最適化機器412(1)~412(n)などの1つまたは複数の追加の機器を含むか、それに置き換えられるか、またはそれと通信することができる。例えば、WAN最適化機器412は、WAFS(Wide Area File Features)の最適化、SMB(Server Message Block)またはCIFS(Common Internet File System)の加速など、WAN接続へのトラフィックおよび/またはWAN接続からのトラフィックなどのネットワークトラフィックの性能、動作、フロー制御、または機能の品質を最適化または改善してもよい。いくつかの実施形態では、(1つまたは複数の)機器412は、パフォーマンス強化プロキシまたはWAN最適化コントローラであってもよい。一実施形態では、機器412は、フロリダ州フォートローダーデールのCitrix Systems, Inc.が販売するCitrix SD-WAN製品として実装されてもよい。
説明される実施形態では、クライアント402、サーバ406、および機器410および412は、少なくとも1つのネットワークを介して通信することができ、本明細書で説明される動作を実行することができる任意のデスクトップコンピュータ、ラップトップコンピュータ、またはモバイルデバイスなど、任意のタイプおよび形態のコンピューティングデバイスとして配備され、かつ/またはその上で実行され得る。例えば、クライアント402、サーバ406、および/または機器410および412は、それぞれ、1つのコンピュータ、複数のコンピュータ、または図9に示すコンピューティングシステム300などの分散コンピュータのネットワークに対応することができる。
図8を参照すると、クラウド環境、クラウドコンピューティング、またはクラウドネットワークとも呼ばれるクラウドコンピューティング環境500が示されている。クラウドコンピューティング環境500は、共有コンピューティングサービスおよび/またはリソースを複数のユーザまたはテナントに配信することができる。例えば、共有リソースおよびサービスには、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、データベース、ソフトウェア、ハードウェア、分析、およびインテリジェンスが含まれるが、これらに限定されない。
クラウドコンピューティング環境500では、1つ以上のクライアント402a~402n(上述のように)がクラウドネットワーク504と通信している。クラウドネットワーク504は、バックエンドプラットフォーム、例えば、サーバ、ストレージ、サーバファームまたはデータセンターを含むことができる。ユーザまたはクライアント402a~402nは、単一の組織/テナントまたは複数の組織/テナントに対応することができる。より具体的には、一実施例では、クラウドコンピューティング環境500は、単一の組織(例えば、エンタープライズクラウド)にサービスを提供するプライベートクラウドを提供することができる。別の例では、クラウドコンピューティング環境500は、複数の組織/テナントにサービスを提供するコミュニティまたはパブリッククラウドを提供することができる。
ある実施形態では、ゲートウェイデバイスまたはサービスを利用して、クラウドコンピューティングリソースおよび仮想セッションへのアクセスを提供することができる。例として、Citrix Systems,Inc.によって提供されるCitrix Gatewayは、オンプレミスまたはパブリッククラウド上に展開されて、ユーザに安全なアクセスと、仮想アプリケーション、SaaSアプリケーションおよびウェブアプリケーションへのシングルサインオンとを提供することができる。さらに、Webの脅威からユーザを保護するために、Citrix Secure Web Gatewayなどのゲートウェイを使用できる。Citrix Secure Web Gatewayは、クラウドベースのサービスとローカルキャッシュを使用して、URLのレピュテーションとカテゴリを確認する。
さらに別の実施形態では、クラウドコンピューティング環境500は、パブリッククラウドとプライベートクラウドの組合せであるハイブリッドクラウドを提供することができる。パブリッククラウドは、クライアント402a~402nまたはエンタープライズ/テナントの第三者によって維持されるパブリックサーバを含むことができる。サーバは、地理的に離れた場所やその他の場所にあるオフサイトに配置される場合がある。
クラウドコンピューティング環境500は、クライアント402a~402nを介してマルチテナント環境またはマルチテナントモデルを介して複数のユーザにサービスするためのリソースプーリングを提供することができ、それぞれの環境内の異なる要求に応答して、異なる物理リソースおよび仮想リソースが動的に割り当てられ、再割り当てされる。マルチテナント環境には、ソフトウェアの単一インスタンス、アプリケーション、または複数のユーザに対応するソフトウェアアプリケーションを提供できるシステムまたはアーキテクチャを含めることができる。いくつかの実施形態において、クラウドコンピューティング環境500は、複数のクライアント402a~402nのためのネットワーク全体にわたる一方的な提供コンピューティング能力(例えば、サーバ時間、ネットワークストレージ)に対して、オンデマンドセルフサービスを提供できる。例として、プロビジョニングサービスは、シトリックスプロビジョニングサービス(Citrix PVS)などのシステムを介して提供され得る。Citrix PVSは、パッチ、アップデート、およびその他の構成情報を、共有デスクトップイメージを介して、複数の仮想デスクトップエンドポイントに配信するソフトウェアストリーミングテクノロジーである。クラウドコンピューティング環境500は、1つまたは複数のクライアント402からの異なる要求に応じて動的にスケールアウトまたはスケールインする弾性を提供することができる。いくつかの実施形態では、クラウドコンピューティング環境500は、提供された共有サービスおよびリソースに対応するレポートを監視、制御、および/または生成するための監視サービスを含むか、または提供することができる。
一部の実施形態では、クラウドコンピューティング環境500は、サービスとしてのソフトウェア(SaaS)508、サービスとしてのプラットフォーム(PaaS)512、サービスとしてのインフラストラクチャ(IaaS)516、サービスとしてのデスクトップ(DaaS)520など、異なるタイプのクラウドコンピューティングサービスのクラウドベースの配信を提供してもよい。IaaSは、指定された期間に必要なインフラストラクチャリソースの使用をレンタルするユーザを指す場合がある。IaaSプロバイダは、大規模なプールからストレージ、ネットワーク、サーバ、または仮想化リソースを提供することがあり、必要に応じてより多くのリソースにアクセスすることで、ユーザを迅速にスケールアップできる。IaaSの例には、米国ワシントン州シアトルのAmazon.com,Inc.によって提供されるAMAZON WEB SERVICES、カリフォルニア州マウンテンビューのGoogle Inc.によって提供されるGoogle Compute Engine、テキサス州サンアントニオのRackspace US、Inc.によって提供されるRACKSPACE CLOUD、またはカリフォルニア州サンタバーバラのRightScale,Inc.によって提供されるRIGHTSCALEが含まれる。
PaaSプロバイダは、IaaSによって提供される機能、例えば、ストレージ、ネットワーキング、サーバまたは仮想化、ならびに、例えば、オペレーティングシステム、ミドルウェア、またはランタイムリソースのような追加リソースを提供することができる。PaaSの例には、ワシントン州レドモンドのMicrosoft Corporationによって提供されるWINDOWS AZURE、Google Inc.によって提供されるGoogle App Engine、およびカリフォルニア州サンフランシスコのHeroku,Inc.によって提供されるHEROKUが含まれる。
SaaSプロバイダは、PaaSが提供するストレージ、ネットワーキング、サーバ、仮想化、オペレーティングシステム、ミドルウェア、ランタイムリソースなどのリソースを提供する場合がある。いくつかの実施形態では、SaaSプロバイダは、例えば、データおよびアプリケーションリソースを含む追加のリソースを提供することができる。SaaSの例には、Google Inc.によって提供されるGOGLE APPS、カリフォルニア州サンフランシスコのSalesforce.com Inc.によって提供されるSALESFORCE、またはMicrosoft Corporationによって提供されるOFFICE 365が含まれる。SaaSの例はまた、データストレージプロバイダ、例えば、Citrix SystemsからのCitrix ShareFile、カリフォルニア州サンフランシスコのDropbox,Inc.によって提供されるDROPBOX、Microsoft Corporationによって提供されるMicrosoft SKYDRIVE、Google Inc.によって提供されるGoogle Drive、またはカリフォルニア州クパチーノのApple Inc.によって提供されるApple ICLOUDを含むことができる。
SaaSと同様に、DaaS(ホストされるデスクトップサービスとも呼ばれる)は、仮想デスクトップセッションが通常、仮想デスクトップで使用されるアプリケーションとともにクラウドサービスとして配信される仮想デスクトップインフラストラクチャ(VDI)の形式である。Citrix SystemsのCitrix Cloudは、DaaS配信プラットフォームの一例である。DaaS配信プラットフォームは、例えば、ワシントン州レドモンドのMicrosoft CorporationからのAZURE CLOUD(本明細書では「Azure」)、またはワシントン州シアトルのAmazon.com,Inc.によって提供されるAMAZON WEB SERVICES(本明細書では「AWS」)などのパブリッククラウドコンピューティングインフラストラクチャ上でホストすることができる。Citrix Cloud の場合、Citrix Workspace appは、アプリ、ファイル、およびデスクトップを(オンプレミスまたはクラウドのいずれかにかかわらず)まとめて、統一されたエクスペリエンスを提供するためのシングルエントリポイントとして使用できる。
説明されたソリューションの要素は、コンピュータ300が、1つまたは複数のプロセッサ302、揮発性メモリ304(例えば、RAM)、不揮発性メモリ308(例えば、1つまたは複数のハードディスクドライブ(HDD)または他の磁気または光記憶媒体、フラッシュドライブまたは他のソリッドステート記憶媒体などの1つまたは複数のソリッドステートドライブ(SSD)、1つまたは複数のハイブリッド磁気およびソリッドステートドライブ、および/またはクラウドストレージなどの1つまたは複数の仮想記憶ボリューム、またはそのような物理記憶ボリュームと仮想記憶ボリュームまたはアレイの組合せ)、ユーザインターフェース(UI)310、1つまたは複数の通信インターフェイス306、および通信バス312を含むことができる図9に示すようなコンピューティングシステムで実施することができる。ユーザインターフェイス310は、グラフィカルユーザインターフェイス(GUI)320(例えば、タッチスクリーン、ディスプレイなど)と、1つまたは複数の入力/出力(I/O)デバイス322(例えば、マウス、キーボードなど)とを含むことができる。不揮発性メモリ308は、オペレーティングシステム314、1つ以上のアプリケーション316、およびデータ318を記憶し、例えば、オペレーティングシステム314および/またはアプリケーション316のコンピュータ命令が、揮発性メモリ304のうちプロセッサ302によって実行されるようにする。データは、GUI320の入力デバイスを使用して入力されてもよいし、I/Oデバイス322から受信されてもよい。コンピュータ300の様々な要素は、通信バス312を介して通信することができる。図9に示すコンピュータ300は、単に一例として、クライアント、サーバ、および/または機器として示されており、任意のコンピューティング環境または処理環境によって、本明細書で説明するように動作することができる適切なハードウェアおよび/またはソフトウェアを有することができる任意のタイプのマシンまたはマシンのセットを用いて実装することができる。
プロセッサ302は、システムの機能を実行するために1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラマブルプロセッサによって実装され得る。本明細書で使用されるように、「プロセッサ」という用語は、機能、動作、または動作のシーケンスを実行する電子回路を記述する。機能、動作、または動作のシーケンスは、電子回路にハードコードされるか、またはメモリデバイスに保持された命令によってソフトコードされてもよい。「プロセッサ」は、デジタル値を使用して、またはアナログ信号を使用して、機能、動作、または動作のシーケンスを実行してもよい。いくつかの実施形態では、「プロセッサ」は、1つまたは複数の特定用途向け集積回路(ASIC)、マイクロプロセッサ、デジタル信号プロセッサ、マイクロコントローラ、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブルロジックアレイ(PLA)、マルチコアプロセッサ、またはメモリに関連する汎用コンピュータで具現化されてもよい。「プロセッサ」は、アナログ、デジタル、または混合信号であってもよい。プロセッサ」は、アナログ、デジタル、または混合信号であってもよい。 いくつかの実施形態では、「プロセッサ」は、1つまたは複数の物理プロセッサ、または1つまたは複数の「仮想」(例えば、遠隔地にあるまたは「クラウド」)プロセッサであってもよい。
通信インターフェイス306は、コンピュータ300が様々な有線および/または無線またはセルラ接続を介してLAN、WAN、またはインターネットのようなコンピュータネットワークにアクセスできるようにするための1つ以上のインターフェイスを含んでもよい。
記載された実施形態では、第1コンピューティングデバイス300は、クライアントコンピューティングデバイス(例えば、クライアント)のユーザに代わってアプリケーションを実行することができ、その中でアプリケーションがユーザまたはクライアントコンピューティングデバイス(例えば、クライアント)に代わって実行される実行セッションを提供し、ホストされたデスクトップセッションなどの端末サービスセッションを実行し、または、1つ以上のアプリケーション、1つ以上のデスクトップアプリケーション、および1つ以上のアプリケーションが実行できる1つ以上のデスクトップセッションのうちの1つ以上を含むコンピューティング環境へのアクセスを提供することができる。
前述の図面は、本開示のいくつかの実施形態に関連する処理のいくつかを示す。この点に関して、図面の流れ図内の各図またはブロックは、説明される方法の実施形態に関連するプロセスを表す。また、いくつかの代替の実装形態では、図面またはブロックに示される動作は、図に示される順序とは異なる順序で行われてもよく、または、例えば、実際には、含まれる動作に応じて、実質的に同時に、または逆の順序で実行されてもよいことにも留意されたい。また、当業者は、処理を記述する追加のブロックが加えられてもよいことを認識するであろう。
以下の開示を読めば当業者には理解されるように、本明細書で説明される様々な態様は、システム、デバイス、方法、またはコンピュータプログラム製品(例えば、上記の動作またはステップを実行するためのコンピュータ実行可能命令を有する非一時的コンピュータ可読媒体)として実施され得る。したがって、これらの態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態、またはソフトウェアおよびハードウェアの態様を組み合わせた実施形態の形態をとることができる。さらに、このような態様は、記憶媒体内または記憶媒体上に具現化された、コンピュータ読み取り可能なプログラムコードまたは命令を有する1つ以上のコンピュータ読み取り可能な記憶媒体によって記憶されたコンピュータプログラム製品の形態をとることができる。ハードディスク、CD-ROM、光記憶デバイス、磁気記憶デバイス、および/またはそれらの任意の組合せを含む、任意の適切なコンピュータ可読記憶媒体を利用することができる。
本明細書で使用される用語は、特定の実施形態を説明するためだけのものであり、本開示を限定することを意図するものではない。本明細書中で使用されるように、単数形「1つの」は、文脈が明確に示さない限り、複数形も含むことを意図している。本明細書中で使用される場合、用語「含む」は、述べられた特徴、整数、ステップ、操作、要素、および/または構成要素の存在を明記するが、1つまたは複数の他の特徴、整数、ステップ、操作、要素、構成要素、および/またはそれらのグループの存在または追加を排除しないことをさらに理解するであろう。「任意の」または「任意に」とは、続いて記述された事象または状況が発生してもしなくてもよく、記述には事象が発生する例と発生しない例が含まれることを意味する。
本明細書および特許請求の範囲を通して本明細書で使用されているように、近似的な表現は、それが関連する基本的な機能の変化をもたらすことなく許容的に変化し得るあらゆる量的表現を修正するために適用することができる。したがって、「約」、「およそ」、「実質的に」などの用語によって修正された値は、指定された正確な値に限定されるものではない。少なくともいくつかの例では、近似的な表現は、値を測定するための機器の精度に対応することができる。本明細書および特許請求の範囲では、範囲の制限を組み合わせたり、入れ替えたりすることができ、そのような範囲は、文脈または言語が別の方法を示していない限り、特定され、その中に含まれるすべてのサブ範囲を含む。範囲の特定の値に適用される「約」は、両方の値に適用され、値を測定する機器の精度に別段依存しない限り、記載された値の±10%を示すことがある。
特許請求の範囲に記載した機能要素に加え全ての手段またはステップの対応する構造、材料、行為等は、特許請求の範囲に規定された他の構成要件との結合において当該機能を発揮する任意の構造、材料または行為を含むものである。本開示の説明は、例示および説明の目的のために提示されてきたが、網羅的であることも、開示された形式の開示に限定されることも意図されていない。本開示の範囲および思想から逸脱することなく、多くの修正および変形が当業者には明らかであろう。本実施形態は、本開示の原理および実際の適用を最もよく説明するために、また、当業者が、意図される特定の使用に適した様々な修正を伴う様々な実施形態について本開示を理解することを可能にするために、選択され、説明された。