IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ シトリックス・システムズ・インコーポレイテッドの特許一覧

特許7148745仮想アプリケーションの異なるバージョンをプロビジョニングするためのシステムおよび方法
<>
  • 特許-仮想アプリケーションの異なるバージョンをプロビジョニングするためのシステムおよび方法 図1
  • 特許-仮想アプリケーションの異なるバージョンをプロビジョニングするためのシステムおよび方法 図2
  • 特許-仮想アプリケーションの異なるバージョンをプロビジョニングするためのシステムおよび方法 図3
  • 特許-仮想アプリケーションの異なるバージョンをプロビジョニングするためのシステムおよび方法 図4
  • 特許-仮想アプリケーションの異なるバージョンをプロビジョニングするためのシステムおよび方法 図5
  • 特許-仮想アプリケーションの異なるバージョンをプロビジョニングするためのシステムおよび方法 図6
  • 特許-仮想アプリケーションの異なるバージョンをプロビジョニングするためのシステムおよび方法 図7
  • 特許-仮想アプリケーションの異なるバージョンをプロビジョニングするためのシステムおよび方法 図8
  • 特許-仮想アプリケーションの異なるバージョンをプロビジョニングするためのシステムおよび方法 図9
  • 特許-仮想アプリケーションの異なるバージョンをプロビジョニングするためのシステムおよび方法 図10
  • 特許-仮想アプリケーションの異なるバージョンをプロビジョニングするためのシステムおよび方法 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-09-27
(45)【発行日】2022-10-05
(54)【発明の名称】仮想アプリケーションの異なるバージョンをプロビジョニングするためのシステムおよび方法
(51)【国際特許分類】
   G06F 9/455 20060101AFI20220928BHJP
   G06F 8/60 20180101ALI20220928BHJP
【FI】
G06F9/455 150
G06F8/60
【請求項の数】 20
(21)【出願番号】P 2021574874
(86)(22)【出願日】2020-08-17
(65)【公表番号】
(43)【公表日】2022-07-20
(86)【国際出願番号】 US2020046603
(87)【国際公開番号】W WO2021061299
(87)【国際公開日】2021-04-01
【審査請求日】2021-12-15
(31)【優先権主張番号】16/585,173
(32)【優先日】2019-09-27
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】508045099
【氏名又は名称】シトリックス・システムズ・インコーポレイテッド
【氏名又は名称原語表記】Citrix Systems,Inc.
(74)【代理人】
【識別番号】110001243
【氏名又は名称】弁理士法人谷・阿部特許事務所
(72)【発明者】
【氏名】ナビール ヨウアキム
(72)【発明者】
【氏名】ピー.ジェイ.ハフ
【審査官】杉浦 孝光
(56)【参考文献】
【文献】特表2017-534107(JP,A)
【文献】特開2013-084235(JP,A)
【文献】米国特許出願公開第2017/0090960(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/00 - 8/38
G06F 8/60 - 8/77
G06F 9/44 - 9/445
G06F 9/451
G06F 9/455- 9/54
G06F15/00
(57)【特許請求の範囲】
【請求項1】
メモリと、前記メモリと協働するプロセッサであって、
クライアントデバイスに応答する仮想マシン内に、第1のアプリケーション層を提供し、前記第1のアプリケーション層は第1の仮想アプリケーションの第1のバージョンおよび前記第1の仮想アプリケーションの前記第1のバージョンと互換性のある少なくとも1つの第2の仮想アプリケーションとを含み、
前記クライアントデバイスに応答する前記仮想マシン内に、第2のアプリケーション層を提供し、前記第2のアプリケーション層は前記第1の仮想アプリケーションの第2のバージョンを含み、前記第2のバージョンが前記第1のアプリケーション層における前記第1のバージョンとは異なるように構成されたプロセッサと、
を備えるコンピューティングデバイスであって、
前記第1の仮想アプリケーションの前記第2のバージョンは、前記少なくとも1つの第2の仮想アプリケーションと互換性がない
コンピューティングデバイス。
【請求項2】
前記第1の仮想アプリケーションの前記第2のバージョンは、前記第1の仮想アプリケーションの前記第1のバージョンよりも新しい請求項1に記載のコンピューティングデバイス。
【請求項3】
前記メモリおよびプロセッサがマクロ設定に基づいてログオン時に前記クライアントデバイスに前記第1または第2のアプリケーション層を最初に提供するように構成されている請求項1に記載のコンピューティングデバイス。
【請求項4】
前記第1および第2のアプリケーション層がコンテナ化されている請求項1に記載のコンピューティングデバイス。
【請求項5】
前記メモリおよびプロセッサが前記クライアントデバイスに前記第1および第2のアプリケーション層を同時に提供するよう構成されている請求項1に記載のコンピューティングデバイス。
【請求項6】
前記第1のアプリケーション層は、それの更新を防ぐためにロックされている請求項1に記載のコンピューティングデバイス。
【請求項7】
前記少なくとも1つの第2の仮想アプリケーションは、少なくとも1つのマクロを含む請求項1に記載のコンピューティングデバイス。
【請求項8】
クライアントデバイスに応答する仮想マシン内に、第1のアプリケーション層を提供することであって、前記第1のアプリケーション層は第1の仮想アプリケーションの第1のバージョンおよび前記第1の仮想アプリケーションの前記第1のバージョンと互換性のある少なくとも1つの第2の仮想アプリケーションとを含むことと、
前記クライアントデバイスに応答する前記仮想マシン内に、第2のアプリケーション層を提供することであって、前記第2のアプリケーション層は前記第1の仮想アプリケーションの第2のバージョンを含み、前記第2のバージョンが前記第1のアプリケーション層における前記第1のバージョンとは異なることと、
を含む方法であって、
前記第1の仮想アプリケーションの前記第2のバージョンは、前記少なくとも1つの第2の仮想アプリケーションと互換性がない
方法。
【請求項9】
前記第1の仮想アプリケーションの前記第2のバージョンは、前記第1の仮想アプリケーションの前記第1のバージョンよりも新しい請求項8に記載の方法。
【請求項10】
サーバがマクロ設定に基づいてログオン時に前記クライアントデバイスに前記第1または第2のアプリケーション層を最初に提供するように構成されている請求項8に記載の方法。
【請求項11】
前記第1および第2のアプリケーション層がコンテナ化されている請求項8に記載の方法。
【請求項12】
サーバが前記クライアントデバイスに前記第1および第2のアプリケーション層を同時に提供するよう構成されている請求項8に記載の方法。
【請求項13】
前記第1のアプリケーション層は、それの更新を防ぐためにロックされている請求項8に記載の方法。
【請求項14】
前記少なくとも1つの第2の仮想アプリケーションは、少なくとも1つのマクロを含む請求項8に記載の方法。
【請求項15】
仮想アプリケーションにアクセスするように構成されたクライアントデバイスと、
メモリとプロセッサとを含むサーバであって、前記クライアントデバイスに応答する仮想マシン内に、第1のアプリケーション層を提供し、前記第1のアプリケーション層は第1の仮想アプリケーションの第1のバージョンおよび前記第1の仮想アプリケーションの前記第1のバージョンと互換性のある少なくとも1つの第2の仮想アプリケーションとを含み、
前記クライアントデバイスに応答する前記仮想マシン内に、第2のアプリケーション層を提供し、前記第2のアプリケーション層は前記第1の仮想アプリケーションの第2のバージョンを含み、前記第2のバージョンが前記第1のアプリケーション層における前記第1のバージョンとは異なるように構成されたサーバと、
を備えるコンピューティングシステムであって、
前記第1の仮想アプリケーションの前記第2のバージョンは、前記少なくとも1つの第2の仮想アプリケーションと互換性がない
コンピューティングシステム。
【請求項16】
前記第1の仮想アプリケーションの前記第2のバージョンは、前記第1の仮想アプリケーションの前記第1のバージョンよりも新しい請求項15に記載のコンピューティングシステム。
【請求項17】
前記サーバがマクロ設定に基づいてログオン時に前記クライアントデバイスに前記第1または第2のアプリケーション層を最初に提供するように構成されている請求項15に記載のコンピューティングシステム。
【請求項18】
前記第1および第2のアプリケーション層がコンテナ化されている請求項15に記載のコンピューティングシステム。
【請求項19】
前記サーバが前記クライアントデバイスに前記第1および第2のアプリケーション層を同時に提供するよう構成されている請求項15に記載のコンピューティングシステム。
【請求項20】
前記第1のアプリケーション層は、それの更新を防ぐためにロックされている請求項15に記載のコンピューティングシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、デスクトップ仮想化に関し、より詳細には、仮想アプリケーションの異なるバージョンをプロビジョニングするためのシステムおよび方法に関する。
【背景技術】
【0002】
多くの団体は、現在、アプリケーションおよび/またはデスクトップ仮想化を用いて、それらのユーザの多様なニーズに対応するより柔軟なオプションを提供している。デスクトップ仮想化において、ユーザのコンピューティング環境(例えば、オペレーティングシステム、アプリケーション、および/またはユーザ設定)は、ユーザの物理的なコンピューティングデバイス(例えば、スマートフォン、ラップトップ、デスクトップコンピューター)から切り離され得る。クライアントサーバ技術を用いることで、「仮想化されたデスクトップ」は、クライアントのコンピューティングデバイスのローカルストレージの中ではなく、リモートサーバの中に格納され得、リモートサーバによって管理され得る。
【0003】
いくつかの異なるタイプのデスクトップ仮想化システムがある。例示として、仮想デスクトップインフラストラクチャ(VDI)は、サーバ上に存在する仮想マシンの中でユーザデスクトップおよび/またはアプリケーションを実行するプロセスを指す。仮想化システムは、また、仮想デスクトップをプロビジョンするため、および/または共有アプリケーションへのアクセスを提供するために使用され得るコンピューティングリソース(デスクトップ仮想化サーバなど)、ストレージディスク、ネットワークハードウェア、およびその他の物理リソースのプールを含むクラウドコンピューティング環境またはクラウドシステムに実装され得る。
【発明の概要】
【0004】
コンピューティングデバイスは、メモリと、メモリと協働し、クライアントデバイスに応答する仮想マシン内に第1のアプリケーション層を提供するように構成されたプロセッサとを含み得、第1のアプリケーション層は、第1の仮想アプリケーションの第1のバージョンおよび第1の仮想アプリケーションの第1のバージョンと互換性のある少なくとも1つの第2の仮想アプリケーションを含む。プロセッサは、さらに、クライアントデバイスに応答する仮想マシン内に第2のアプリケーション層を提供するように構成され得、第2のアプリケーション層は、第1の仮想アプリケーションの第2のバージョンを含み、第2のバージョンは第1のアプリケーション層における第1のバージョンとは異なる。さらに、第1の仮想アプリケーションの第2のバージョンは、少なくとも1つの第2の仮想アプリケーションと互換性がない。
【0005】
実装例では、仮想アプリケーションの第2のバージョンは、仮想アプリケーションの第1のバージョンよりも新しいものであり得る。サーバは、マクロ設定に基づいて、ログオン時にクライアントデバイスに第1または第2のバージョンのアプリケーション層を最初に提供するように構成され得る。例示的な実施形態では、第1および第2のアプリケーション層は、コンテナ化され得る。
【0006】
さらに、サーバは、クライアントデバイスに第1および第2のアプリケーション層を同時に提供するように構成され得る。さらに、第1のアプリケーション層は、それに対する更新を防ぐためにロックされ得る。例として、少なくとも1つの第2の仮想アプリケーションは、少なくとも1つのマクロを含み得る。
【0007】
関連する方法は、クライアントデバイスに応答するサーバの仮想マシン内に第1のアプリケーション層を提供することを含み得、第1のアプリケーション層は、第1の仮想アプリケーションの第1のバージョンおよび第1の仮想アプリケーションの第1のバージョンと互換性のある少なくとも1つの第2の仮想アプリケーションを含む。方法は、さらに、クライアントデバイスに応答するサーバの仮想マシン内に第2のアプリケーション層を提供することを含み得、第2のアプリケーション層は、第1の仮想アプリケーションの第2のバージョンを含み、第2のバージョンは、第1のアプリケーション層における第1のバージョンとは異なる。仮想アプリケーションの第2のバージョンは、少なくとも1つの第2の仮想アプリケーションと互換性がない。
【0008】
関連するコンピューティングシステムは、仮想アプリケーションにアクセスするように構成されたクライアントデバイス、およびクライアントデバイスに応答する仮想マシン内に第1のアプリケーション層を提供するように構成されたサーバを含み得る。第1のアプリケーション層は、第1の仮想アプリケーションの第1のバージョンと、第1の仮想アプリケーションの第1のバージョンと互換性のある少なくとも1つの第2の仮想アプリケーションとを含み得る。サーバは、また、クライアントデバイスに応答する仮想マシン内に第2のアプリケーション層を提供するように構成され得、第2のアプリケーション層は、第1の仮想アプリケーションの第2のバージョンを含み、第2のバージョンは、第1のアプリケーション層における第1のバージョンとは異なる。仮想アプリケーションの第2のバージョンは、少なくとも1つの第2の仮想アプリケーションと互換性がない。
【図面の簡単な説明】
【0009】
図1】本開示の様々な態様が実装され得るコンピューティングデバイスのネットワーク環境の概略ブロック図である。
図2図1に示したクライアントマシンまたはリモートマシンの一実施形態を実施するために有用なコンピューティングデバイスの概略ブロック図である。
図3】本開示の様々な態様が実装され得るクラウドコンピューティング環境の概略ブロック図である。
図4】本開示の様々な態様が実装され得るワークスペースアプリを動作させるデスクトップ、モバイル、およびウェブベースのデバイスの概略ブロック図である。
図5】本開示の様々な態様が実装され得るコンピューティングデバイスのワークスペースネットワーク環境の概略ブロック図である。
図6】異なるアプリケーション層の仮想マシン内で実行される同じアプリケーションの異なるバージョンを提供するコンピューティングシステムの概略ブロック図である。
図7図6のシステムの仮想化サーバの例示的な実装の概略ブロック図である。
図8】例示的な実装の動作を示す、図6のシステムのクライアントデバイスに関連する画面表示の図である。
図9】例示的な実装の動作を示す、図6のシステムのクライアントデバイスに関連する画面表示の図である。
図10】例示的な実装の動作を示す、図6のシステムのクライアントデバイスに関連する画面表示の図である。
図11図6のシステムに対応する方法の態様を示すフロー図である。
【発明を実施するための形態】
【0010】
仮想コンピューティングシステムでは、アプリケーションは、それぞれのアプリケーションが、適切なファイル、システムオブジェクト、およびその特定の層に関連するレジストリエントリを含む異なる層に分割されている仮想マシン内で実行し得る。それぞれのアプリケーション層は、それぞれの仮想ディスクとして保存され得、アプリケーション層はオペレーティングシステム(OS)層の上で実行される。このアプローチは、環境を簡素化し、アプリケーションの更新などに関連する管理の時間/複雑さを軽減するのに役立つが、潜在的な問題も引き起こし得る。時間の経過とともに、マクロ命令プログラム(マクロとも呼ばれる)が、たとえば、一般的なタスクや動作を自動化するために、特定のアプリケーション用に作成され得る。しかしながら、多くの場合、そのようなマクロは同じアプリケーションの後の(新しい)バージョンと互換性がなく、マクロの損失、およびまたは「破損」、ならびにそのようなマクロに依存するユーザのユーザエクスペリエンス(UX)の低下につながる。
【0011】
本明細書に記載の構成は、一緒に動作することが知られている同じアプリケーション層内の必要なアプリケーションおよびマクロコンポーネントを含む「ゴールデン」イメージの作成を可能にすることによって、これらの技術的課題を有利に克服し、これにより実証済みのワーキングフォームファクタで保存される。さらに、アプリケーションの他の(たとえば、より新しい)バージョンも、別々のそれぞれのアプリケーション層内に提供され得、これにより、そうでなければ従来のデスクトップコンピューティング構成では不可能であった、アプリケーションの両方のバージョンが同じ仮想マシン内で共存し、同時に実行することさえも可能にする。
【0012】
最初に図1を参照すると、本開示の様々な態様が実装され得る非限定的なネットワーク環境10は、コンピューティング環境10内に設置される1つまたは複数のクライアントマシン12A~12Nと、1つまたは複数のリモートマシン16A~16Nと、1つまたは複数のネットワーク14、14’と、コンピューティング環境10にインストールされた1つまたは複数の機器18とを含む。クライアントマシン12A~12Nは、ネットワーク14、14‘を介してリモートマシン16A~16Nと通信する。
【0013】
いくつかの実施形態では、クライアントマシン12A~12Nは、中間機器18を介してリモートマシン16A~16Nと通信する。図示された機器18は、ネットワーク1とネットワーク14’との間に配置され、ネットワークインターフェースまたはゲートウェイと呼ばれることもある。いくつかの実施形態では、機器18は、データセンター中に展開されるか、クラウドで展開されるか、もしくはクライアントデバイスの範囲にわたってサービスとしてのソフトウェア(SaaS)として配信されるビジネスアプリケーションおよび他のデータへのアクセスをクライアントに与えるためにアプリケーション配信コントローラ(ADC)として動作し、ならびに/または負荷分散などの他の機能を与え得る。いくつかの実施形態では、複数の機器18が使用され得、機器18は、ネットワーク14および/または14’の一部として展開され得る。
【0014】
クライアントマシン12A~12Nは、一般に、クライアントマシン12、ローカルマシン12、クライアント12、クライアントノード12、クライアントコンピュータ12、クライアントデバイス12、コンピューティングデバイス12、エンドポイント12、またはエンドポイントノード12と呼ばれ得る。リモートマシン16A~16Nは、一般に、サーバ16またはサーバファーム16と呼ばれ得る。いくつかの実施形態では、クライアントデバイス12は、サーバ16によって提供されるリソースへのアクセスを求めるクライアントノードと他のクライアントデバイス12A~12Nのためにホストされたリソースへのアクセスを提供するサーバ16との両方として機能する能力を有し得る。ネットワーク14、14’は、一般に、ネットワーク14として参照され得る。ネットワーク14は、有線および無線ネットワークの任意の組み合わせで構成され得る。
【0015】
サーバ16は、例えば、ファイルサーバ、アプリケーションサーバ、ウェブサーバ、プロキシサーバ、機器、ネットワーク機器、ゲートウェイ、アプリケーションゲートウェイ、ゲートウェイサーバ、仮想サーバ、デプロイメントサーバ、Secure Sockets Layerバーチャルプライベートネットワーク(SSL VPN)サーバ、ファイアウォール、ウェブサーバ、アクティブディレクトリを実行するサーバ、クラウドサーバ、または、ファイアウォール機能、アプリケーション機能、または負荷分散機能を提供するアプリケーションアクセラレーションプログラムを実行するサーバなどの任意のサーバタイプであり得る。
【0016】
サーバ16は、ソフトウェア、プログラム、実行可能命令、仮想マシン、ハイパーバイザ、ウェブブラウザ、ウェブベースのクライアント、クライアントサーバアプリケーション、シンクライアントコンピューティングクライアント、ActiveXコントロール、Javaアプレット、ソフトIP電話のようなボイスオーバーインターネットプロトコル(VoIP)通信に関係するソフトウェア、ストリーミングビデオおよび/もしくはオーディオのためのアプリケーション、リアルタイムデータ通信を容易にするためのアプリケーション、HTTPクライアント、FTPクライアント、Oscarクライアント、Telnetクライアント、または実行可能命令の任意の他のセットのうちのいずれか1つであり得るアプリケーションを実行、動作させ、またはそうでなければ提供し得る。
【0017】
いくつかの実施形態では、サーバ16は、サーバ16上で実行されるアプリケーションによって生成された表示出力をキャプチャし、クライアントデバイス12にアプリケーションの表示出力を送信するためにシンクライアントまたはリモートディスプレイプロトコルを使用するリモート提示サービスプログラムまたは他のプログラムを実行し得る。
【0018】
また、他の実施形態では、サーバ16は、クライアントデバイス12のユーザに、コンピューティング環境へのアクセスを提供する仮想マシンを実行し得る。クライアントデバイス12は、仮想マシンであり得る。例えば、仮想マシンは、ハイパーバイザ、仮想マシンマネージャー(VMM)、またはサーバ16内の任意の他のハードウェア仮想化技法によって管理され得る。
【0019】
いくつかの実施形態では、ネットワーク14は、メトロポリタンエリアネットワーク(MAN)、ワイドエリアネットワーク(WAN)、1次パブリックネットワーク14、および1次プライベートネットワーク14であり得る。追加の実施形態は、モバイルデバイスの間で通信するために様々なプロトコルを使用する携帯電話のネットワーク14を含み得る。ワイヤレスローカルエリアネットワーク(WLAN)内の短距離通信のために、プロトコルは、802.11と、Bluetooth(登録商標)と、近距離通信(NFC)とを含み得る。
【0020】
図2は、クライアントデバイス12、機器18および/またはサーバ16の実施形態を実施するのに有用なコンピューティングデバイス20のブロック図を示す。コンピューティングデバイス20は 、1つまたは複数のプロセッサ22と、揮発性メモリ24(例えば、ランダムアクセスメモリ(RAM))と、不揮発性メモリ30と、ユーザインターフェース(UI)38と、1つまたは複数の通信インターフェース26と、通信バス48とを含む。
【0021】
不揮発性メモリ30は、1つもしくは複数のハードディスクドライブ(HDD)または他の磁気もしくは光学記憶媒体、フラッシュドライブもしくは他の固体記憶媒体などの1つもしくは複数のソリッドステートドライブ(SSD)、1つもしくは複数のハイブリッド磁気およびソリッドステートドライブ、ならびに/またはクラウドストレージなどの1つもしくは複数の仮想ストレージボリューム、またはそのような物理ストレージボリュームと仮想ストレージボリュームもしくはそれのアレイとの組合せを含み得る。
【0022】
ユーザインターフェース38は、グラフィカルユーザインターフェース(GUI)40(たとえば、タッチスクリーン、ディスプレイなど)と、1つまたは複数の入出力(I/O)デバイス42(たとえば、マウス、キーボード、マイクロフォン、1つまたは複数のスピーカ、1つまたは複数のカメラ、1つまたは複数の生体スキャナ、1つまたは複数の環境センサ、および1つまたは複数の加速度計など)とを含み得る。
【0023】
不揮発性メモリ30は、オペレーティングシステム32と、1つまたは複数のアプリケーション34と、データ36とを記憶し、したがって、たとえば、オペレーティングシステム32および/またはアプリケーション34のコンピュータ命令は、揮発性メモリ24の外でプロセッサ22によって実行される。いくつかの実施形態では、揮発性メモリ24は、1つもしくは複数のタイプのRAMおよび/またはメインメモリよりも速い応答時間を提供し得るキャッシュメモリを含み得る。データは、GUI40の入力デバイスを使用して入力されるか、またはI/Oデバイス42から受信され得る。コンピュータ20の様々な要素は、通信バス48を介して通信し得る。
【0024】
図示された コンピューティングデバイス20は、単に例示的なクライアントデバイスまたはサーバとして示されており、本明細書で説明されるように動作することが可能な好適なハードウェアおよび/またはソフトウェアを有し得る任意のタイプのマシンまたはマシンのセットをもつ任意の計算または処理環境によって実装され得る。
【0025】
プロセッサ22は、システムの機能を実行するためにコンピュータプログラムなどの1つまたは複数の実行可能命令を実行するための1つまたは複数のプログラマブルプロセッサによって実装され得る。本明細書で使用する「プロセッサ」という用語は、機能、動作、または一連の動作を実行する回路を表す。機能、動作、または一連の動作は、回路にハードコードされるか、またはメモリデバイス中に保持され、回路によって実行される命令としてソフトコードされ得る。プロセッサは、デジタル値を使用しておよび/またはアナログ信号を使用して機能、動作、または一連の動作を実行し得る。
【0026】
いくつかの実施形態では、プロセッサは、1つもしくは複数の特定用途向け集積回路(ASIC)、マイクロプロセッサ、デジタル信号プロセッサ(DSP)、グラフィックス処理ユニット(GPU)、マイクロコントローラ、フィールドプログラマブルゲートアレイ(FPGA)、プログラム可能論理アレイ(PLA)、マルチコアプロセッサ、または関連メモリをもつ汎用コンピュータで具体化され得る。
【0027】
プロセッサ22は、アナログ、デジタルまたは混合信号であり得る。いくつかの実施形態では、プロセッサ22は、1つもしくは複数の物理プロセッサ、または1つもしくは複数の仮想(たとえば、遠隔に位置するもしくはクラウド)プロセッサであり得る。複数のプロセッサコアを含むプロセッサおよび/または複数のプロセッサは、命令の並列、同時実行のための機能、または2つ以上のデータに対する1つの命令の並列、同時実行のための機能を提供し得る。
【0028】
通信インターフェース26は、コンピューティングデバイス20がセルラー接続を含む様々な有線および/または無線接続を通してローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、パーソナルエリアネットワーク(PAN)、またはインターネットなどのコンピュータネットワークにアクセスすることを可能にするために1つまたは複数のインターフェースを含み得る。
【0029】
説明される実施形態では、コンピューティングデバイス20は、クライアントデバイスのユーザに代わってアプリケーションを実行し得る。例えば、コンピューティングデバイス20は、ハイパーバイザによって管理される1つまたは複数の仮想マシンを実行し得る。各仮想マシンは、ホストされたデスクトップセッションなど、アプリケーションがユーザまたはクライアントデバイスに代わって実行する実行セッションを提供し得る。コンピューティングデバイス20はまた、ホストされたデスクトップ環境を提供するために端末サービスセッションを実行し得る。コンピューティングデバイス20は、1つまたは複数のアプリケーションと、1つまたは複数のデスクトップアプリケーションと、1つまたは複数のアプリケーションが実行し得る1つまたは複数のデスクトップセッションとを含むリモートコンピューティング環境へのアクセスを提供し得る。
【0030】
例示的な仮想化サーバ16は、フロリダ州フォートローダーデールのCitrix Systems,Inc.(「Citrix Systems」)によって提供されるCitrix Hypervisorを使用して実装され得る。仮想アプリおよびデスクトップセッションは、さらに、同じくCitrix SystemsからのCitrix Virtual Apps and Desktops(CVAD)によって提供され得る。Citrix Virtual Apps and Desktopsは、スケーラブルなVDI解決策を実装するオプションに加えて、任意のデバイスからの仮想アプリ、デスクトップ、およびデータセッションを含む仮想セッションへのユニバーサルアクセスを用いて生産性を向上させるアプリケーション仮想化解決策である。仮想セッションは、たとえば、サービスとしてのソフトウェア(SaaS)セッションとサービスとしてのデスクトップ(DaaS)セッションとをさらに含み得る。
【0031】
図3を参照すると、クラウド環境、クラウドコンピューティングまたはクラウドネットワークと呼ばれることもあるクラウドコンピューティング環境50が示されている。クラウドコンピューティング環境50は、複数のユーザまたはテナントに共有コンピューティングサービスおよび/またはリソースの配信を提供することができる。例えば、共用リソースおよびサービスは、限定はしないが、ネットワークと、ネットワーク帯域幅と、サーバと、処理と、メモリと、ストレージと、アプリケーションと、仮想マシンと、データベースと、ソフトウェアと、ハードウェアと、分析と、インテリジェンスとを含むことができる。
【0032】
クラウドコンピューティング環境50では、1つまたは複数のクライアント52A~52C(上記のものなど)がクラウドネットワーク54と通信している。クラウドネットワーク54は、バックエンドプラットフォーム、たとえば、サーバ、ストレージ、サーバファームまたはデータセンターを含み得る。ユーザまたはクライアント52A~52Cは、単一の団体/テナントまたは複数の団体/テナントに対応することができる。より詳細には、例示的な一実装形態では、クラウドコンピューティング環境50は、単一の団体をサービスするプライベートクラウド(たとえば、企業クラウド)を提供し得る。別の例では、クラウドコンピューティング環境50は、複数の団体/テナントをサービスするコミュニティまたはパブリッククラウドを提供し得る。またさらなる実施形態では、クラウドコンピューティング環境50は、パブリッククラウドとプライベートクラウドとの組合せであるハイブリッドクラウドを提供し得る。パブリッククラウドは、クライアント52A~52Cまたは企業/テナントに対してサードパーティによって維持されるパブリックサーバを含み得る。サーバは、遠く離れた地理的ロケーションなどに離れて位置し得る。
【0033】
クラウドコンピューティング環境50は、異なる物理および仮想リソースがそれぞれの環境内での異なる需要に応答して動的に割り当てられ、再び割り当てられる状態でマルチテナント環境またはマルチテナントモデルを通してクライアント52A~52Cを介して複数のユーザをサービスするためにリソースプーリングを提供することができる。マルチテナント環境は、複数のユーザにサービスを提供するために、ソフトウェアの単一のインスタンス、アプリケーション、またはソフトウェアアプリケーションを提供することができるシステムまたはアーキテクチャを含むことができる。いくつかの実施形態では、クラウドコンピューティング環境50は、複数のクライアント52A~52Cのためのネットワークにわたって計算能力(たとえば、サーバ時間、ネットワークストレージ)を単方向にプロビジョニングするためにオンデマンドのセルフサービスを提供することができる。クラウドコンピューティング環境50は、1つまたは複数のクライアント52からの異なる需要に応答して動的にスケールアウト、またはスケールインする弾性を提供することができる。いくつかの実施形態では、コンピューティング環境50は、提供された共有サービスおよびリソースに対応する報告を監視、制御、および/または生成するために、監視サービスを含むか、または提供することができる。
【0034】
いくつかの実施形態では、クラウドコンピューティング環境50は、たとえば、サービスとしてのソフトウェア(SaaS)56、サービスとしてのプラットフォーム(PaaS)58、サービスとしてのインフラストラクチャ(IaaS)60、およびサービスとしてのデスクトップ(DaaS)62などの異なるタイプのクラウドコンピューティングサービスのクラウドベースの配信を提供し得る。IaaSは、指定された時間期間中に必要とされるインフラストラクチャリソースの使用をユーザがレンタルすることを指すことがある。IaaSプロバイダは、大きいプールからストレージ、ネットワーキング、サーバ、または仮想化リソースを提供し、必要に応じてより多くのリソースにアクセスすることによって、ユーザが迅速にスケールアップすることを可能にし得る。IaaSの例は、ワシントン州シアトルのAmazon.com,Inc.によって提供されるAMAZON WEB SERVICES、テキサス州サンアントニオのRackspace US,Inc.によって提供されるRACKSPACE CLOUD、カリフォルニア州マウンテンビューのGoogle Inc.によって提供されるGoogle Compute Engine、またはカリフォルニア州サンタバーバラのRightScale,Inc.によって提供されるRIGHTSCALEを含む。
【0035】
PaaSプロバイダは、たとえば、ストレージ、ネットワーキング、サーバまたは仮想化を含むIaaSによって提供される機能に加え、たとえば、オペレーティングシステム、ミドルウェア、またはランタイムリソースなどの追加のリソースを提供し得る。PaaSの例は、ワシントン州レドモンドのMicrosoft Corporationによって提供されるWINDOWS AZUREと、Google Inc.によって提供されるGoogle App Engineと、カリフォルニア州サンフランシスコのHeroku,Inc.によって提供されるHEROKUとを含む。
【0036】
SaaSプロバイダは、ストレージ、ネットワーキング、サーバ、仮想化、オペレーティングシステム、ミドルウェア、またはランタイムリソースを含むPaaSが提供するリソースを提供し得る。いくつかの実施形態では、SaaSプロバイダは、たとえば、データおよびアプリケーションリソースを含む追加のリソースを提供し得る。SaaSの例は、Google Inc.によって提供されるGOOGLE APPS、カリフォルニア州サンフランシスコのSalesforce.com Inc.によって提供されるSALESFORCE、またはMicrosoft Corporationによって提供されるOFFICE365(登録商標)を含む。SaaSの例はまた、データストレージプロバイダ、たとえばカリフォルニア州サンフランシスコのDropbox,Inc.によって提供されるDROPBOX(登録商標)、Microsoft Corporationによって提供されるMicrosoft SKYDRIVE、Google Inc.によって提供されるGoogle Drive、またはカリフォルニア州クパチーノのApple Inc.によって提供されるApple ICLOUDを含み得る。
【0037】
SaaSと同様に、(ホストされたデスクトップサービスとしても知られる)DaaSは、仮想デスクトップセッションが仮想デスクトップ上で使用されるアプリとともにクラウドサービスとして一般に配信される仮想デスクトップインフラストラクチャ(VDI)の形態である。Citrix Cloudは、DaaS配信プラットフォームの一例である。DaaS配信プラットフォームは、たとえば、ワシントン州レドモンドのMicrosoft CorporationからのAZURE CLOUD(本明細書では「Azure」)、またはワシントン州シアトルのAmazon.com,Inc.によって提供されるAMAZON WEB SERVICES(本明細書では「AWS」)などのパブリッククラウドコンピューティングインフラストラクチャ上でホストされ得る。Citrix Cloudの場合、Citrix Workspaceアプリは、統一エクスペリエンスを配信するために(構内上にあるのかまたはクラウド中にあるのかにかかわらず)アプリ、ファイルおよびデスクトップを一緒にするための単一のエントリポイントとして使用され得る。
【0038】
次に、Citrix Workspaceアプリによって提供される統一エクスペリエンスについて、図4を参照しながらより詳細に説明する。本明細書では、Citrix Workspaceアプリを概してワークスペースアプリ70と呼ぶことにする。ワークスペースアプリ70は、ユーザがそれらのワークスペースリソースにどのようにアクセスするのかであり、それの1つのカテゴリはアプリケーションである。これらのアプリケーションは、SaaSアプリ、ウェブアプリまたは仮想アプリであることができる。ワークスペースアプリ70はまた、ローカルデスクトップまたは仮想デスクトップであり得るそれらのデスクトップへのユーザアクセスを与える。さらに、ワークスペースアプリ70は、多数のリポジトリ中に記憶され得るそれらのファイルおよびデータへのユーザアクセスを与える。ファイルおよびデータは、Citrix ShareFile上にホストされるか、オンプレミスネットワークファイルサーバ上にホストされるか、または、たとえば、Microsoft OneDrive(登録商標)もしくはGoogle Drive Boxなどの何らかの他のクラウドストレージプロバイダ中にホストされ得る。
【0039】
統一エクスペリエンスを提供するために、ユーザが要求するリソースのすべては、ワークスペースアプリ70に位置し、それからアクセス可能であり得る。ワークスペースアプリ70は、さまざまなバージョンで提供される。ワークスペースアプリ70の1つのバージョンは、Windows(登録商標)、MacまたはLinux(登録商標)プラットフォームに基づき得るデスクトップ72のためのインストールされたアプリケーションである。ワークスペースアプリ70の第2のバージョンは、iOS(登録商標)またはAndroid(登録商標)プラットフォームに基づき得るモバイルデバイス74のためのインストールされたアプリケーションである。ワークスペースアプリ70の第3のバージョンは、それらのワークスペース環境へのユーザアクセスを提供するためにハイパーテキストマークアップ言語(HTML)ブラウザを使用する。ワークスペースアプリ70のウェブバージョンは、ユーザがワークスペースアプリをインストールしたいと望まないか、または公衆ブース76を動作させるときなど、ワークスペースアプリをインストールする権利を有しないときに使用される。
【0040】
ワークスペースアプリ70のこれらの異なるバージョンの各々は、有利には、同じユーザエクスペリエンスを提供し得る。これは有利に、ユーザが異なるプラットフォームのクライアントデバイス72からクライアントデバイス74に、次いで、クライアントデバイス76に移動し、依然としてそれらのワークスペースのために同じユーザエクスペリエンスを受けることを可能にする。クライアントデバイス72、74、および76は、エンドポイントと呼ばれる。
【0041】
上記のように、ワークスペースアプリ70は、Windows(登録商標)、Mac、Linux(登録商標)、iOS(登録商標)、およびAndroid(登録商標)プラットフォームならびにHTMLブラウザ(HTML5)を用いるプラットフォームをサポートする。ワークスペースアプリ70は、多数のタイプのアプリおよびデータリソースへのユーザアクセスを可能にする複数のエンジン80~90を組み込む。各エンジン80~90は、特定のリソースのユーザエクスペリエンスを最適化する。各エンジン80~90は、また、団体または企業にユーザアクティビティと潜在的なセキュリティ脅威に関する洞察を提供する。
【0042】
埋め込まれたブラウザエンジン80は、局所的にインストールされ、管理されていないブラウザ上でそれらを起動する代わりにSaaSおよびウェブアプリをワークスペースアプリ70内に含まれた状態にしておく。埋め込まれたブラウザを用いて、ワークスペースアプリ70は、SaaSおよびウェブアプリ中のユーザ選択されたハイパーリンクをインターセプトし、アクセスを承認、拒否、または隔離する前にリスク分析を要求することが可能である。
【0043】
高品位エクスペリエンス(HDX)エンジン82は、Windows(登録商標)またはLinux(登録商標)オペレーティングシステムのいずれかの上で実行する仮想ブラウザ、仮想アプリおよびデスクトップセッションへの接続を確立する。HDXエンジン82を用いて、Windows(登録商標)およびLinux(登録商標)のリソースは、ディスプレイはローカルのまま、エンドポイント上でリモートで実行する。考えられる最高のユーザエクスペリエンスを提供するために、HDXエンジン82は、変化するネットワーク状態およびアプリケーション要件に適応するために異なる仮想チャネルを利用する。高いレイテンシまたは高いパケットロスのネットワークを克服するために、HDXエンジン82は、最適化されたトランスポートプロトコルおよびより優れた圧縮アルゴリズムを自動的に実装する。各アルゴリズムは、ビデオ、画像またはテキストなどのあるタイプの表示のために最適化されている。HDXエンジン82は、アプリケーション中のこれらのタイプのリソースを識別し、スクリーンのそのセクションに最も適切なアルゴリズムを適用する。
【0044】
多くのユーザにとって、ワークスペースはデータに重点が置かれる。コンテンツコラボレーションエンジン84は、そのデータがオンプレミスにあるのかまたはクラウドにあるのかにかかわらず、ユーザがすべてのデータをワークスペースに統合することを可能にする。コンテンツコラボレーションエンジン84は、管理者およびユーザが、企業およびユーザに固有のデータ記憶ロケーションへのコネクタのセットを作成することを可能にする。これは、たとえば、OneDrive(登録商標)、Dropbox(登録商標)、およびオンプレミスのネットワークファイル共有を含むことができる。ユーザは、複数のリポジトリ中にファイルを維持し、ワークスペースアプリ70が単一の個人用のライブラリにそれらを統合することができる。
【0045】
ネットワーキングエンジン86は、エンドポイントまたはエンドポイント上のアプリがセキュアなバックエンドリソースへのネットワーク接続を必要とするのか否かを識別する。ネットワーキングエンジン86は、エンドポイントデバイス全体の十分なVPNトンネルを自動的に確立することができるか、またはそれは、アプリ固有のμ-VPN接続を作成することができる。μ-VPNは、アプリケーションおよびエンドポイントデバイスが何のバックエンドリソースにアクセスすることができるのかを定義し、このようにして、バックエンドインフラストラクチャを保護する。多くの場合、いくつかのユーザアクティビティは、一意のネットワークベースの最適化から恩恵を受ける。ユーザがファイルコピーを要求する場合、ワークスペースアプリ70は、アクティビティをより高速に完了するために同時に複数のネットワーク接続を自動的に利用することができる。ユーザがVoIP通話を開始した場合、ワークスペースアプリ70は、複数のネットワーク接続にわたって通話を複製することによってそれの品質を改善する。ネットワークエンジン86は、最初に到着するパケットのみを使用する。
【0046】
分析エンジン88は、ユーザのデバイス上で、ロケーションおよび挙動を報告し、ここで、クラウドベースのサービスは、盗まれたデバイス、ハッキングされた識別情報または会社を辞める準備をしているユーザの結果である可能性がある任意の潜在的な異常を識別する。分析エンジン88によって収集された情報は、対策を自動的に実装することによって会社の資産を保護する。
【0047】
管理エンジン90は、ワークスペースアプリ70を最新の状態に保つ。これは、最新の能力をユーザに提供するだけでなく、追加のセキュリティ拡張機能をも含む。ワークスペースアプリ70は、カスタマイズ可能なポリシーに基づいて更新を定期的にチェックし、自動的にデプロイする自動更新サービスを含む。
【0048】
つぎに図5を参照して、ワークスペースアプリ70に基づいてユーザに統一エクスペリエンスを提供するワークスペースネットワーク環境100について説明する。デスクトップ、モバイル、およびウェブバージョンのワークスペースアプリ70はすべて、クラウド104内で実行されているワークスペースエクスペリエンスサービス102と通信する。ワークスペースエクスペリエンスサービス102は、次いで、リソースフィードマイクロサービス108を介してすべての異なるリソースフィード106を引き込む。すなわち、クラウド104中で実行される他のサービスからの異なるすべてのリソースは、リソースフィードマイクロサービス108によって引き込まれる。異なるサービスは、仮想アプリおよびデスクトップサービス110、セキュアなブラウザサービス112、エンドポイント管理サービス114、コンテンツコラボレーションサービス116、ならびにアクセス制御サービス118を含み得る。団体または企業がサブスクライブする任意のサービスは、ワークスペースエクスペリエンスサービス102に自動的に引き込まれ、ユーザのワークスペースアプリ70に配信される。
【0049】
クラウドフィード120に加えて、リソースフィードマイクロサービス108は、オンプレミスフィード122を引き込むことができる。クラウドコネクタ124は、オンプレミスのデータセンター中で実行している仮想アプリおよびデスクトップデプロイメントを提供するために使用される。デスクトップ仮想化は、たとえば、Citrix仮想アプリおよびデスクトップ126、Microsoft RDS128、またはVMwareHorizon130によって提供される。クラウドフィード120およびオンプレミスフィード122に加えて、例えば、モノのインターネット(IoT)デバイス134からのデバイスフィード132が、リソースフィードマイクロサービス108によって引き込まれ得る。サイトアグリゲーションは、異なるリソースをユーザの全体的なワークスペースエクスペリエンスに結びつけるために使用される。
【0050】
クラウドフィード120と、オンプレミスフィード122と、デバイスフィード132との各々は、異なる一意のタイプのアプリケーションをユーザのワークスペースエクスペリエンスに提供する。ワークスペースエクスペリエンスは、ローカルアプリ、SaaSアプリ、仮想アプリ、およびデスクトップブラウザアプリ、ならびにストレージアプリをサポートすることができる。フィードは増加し、拡張し続けるので、ワークスペースエクスペリエンスは、ユーザの全体的なワークスペース中に追加のリソースを含めることが可能である。これは、ユーザが、それらがアクセスする必要があるすべてのアプリケーションに達することが可能になることを意味する。
【0051】
ワークスペースネットワーク環境20をさらに参照して、一連のイベントについて統一エクスペリエンスがユーザにどのように提供されるかに関して説明する。統一エクスペリエンスは、クラウド104内で実行されるワークスペースエクスペリエンスサービス102に接続するためにユーザがワークスペースアプリ70を使用し、それらの識別情報を提示することで開始する(イベント1)。識別情報は、例えば、ユーザ名とパスワードとを含む。
【0052】
ワークスペースエクスペリエンスサービス102は、クラウド104内の識別情報マイクロサービス140にユーザの識別情報を転送する(イベント2)。識別情報マイクロサービス140は、団体のワークスペース構成に基づいて正しいアイデンティティプロバイダ142にユーザを認証する(イベント3)。認証は、クラウドコネクタ146のデプロイメントを必要とするオンプレミスアクティブディレクトリ144に基づき得る。認証はまた、Azure Active Directory148、さらには、たとえば、Citrix ADCまたはOktaなどのサードパーティのアイデンティティプロバイダ150に基づき得る。
【0053】
認証されると、ワークスペースエクスペリエンスサービス102は、リソースフィードマイクロサービス108に認可されたリソースのリストを要求する(イベント4)。構成されたリソースフィード106ごとに、リソースフィードマイクロサービス108は、シングルサインオンマイクロサービス152に識別情報トークンを要求する(イベント5)。
【0054】
リソースフィード固有の識別情報トークンは、各リソースの認証のポイントにパスされる(イベント6)。オンプレミスリソース122は、クラウドコネクタ124を通して接触される。各リソースフィード106は、それぞれの識別情報のために認証されたリソースのリストで返答する(イベント7)。
【0055】
リソースフィードマイクロサービス108は、異なるリソースフィード106からのすべてのアイテムをアグリゲートし、ワークスペースエクスペリエンスサービス102に転送する(イベント8)。ユーザは、ワークスペースエクスペリエンスサービス102からリソースを選択する(イベント9)。
【0056】
ワークスペースエクスペリエンスサービス102は、リソースフィードマイクロサービス108に要求を転送する(イベント10)。リソースフィードマイクロサービス108は、シングルサインオンマイクロサービス152に識別情報トークンを要求する(イベント11)。ユーザの識別情報トークンは、ワークスペースエクスペリエンスサービス102(イベント12)に送られ、ここで起動チケットが生成され、ユーザに送られる。
【0057】
ユーザは、ゲートウェイサービス160へのセキュアなセッションを開始し、起動チケットを提示する(イベント13)。ゲートウェイサービス160は、適切なリソースフィード106へのセキュアなセッションを開始し、ユーザをシームレスに認証するために識別情報トークンを提示する(イベント14)。セッションが初期化すると、ユーザはリソースを利用することが可能になる(イベント15)。単一のアクセスポイントまたはアプリケーションを通してワークスペース全体を配信させることは、有利には、ユーザのための生産性を改善し、共通のワークフローを合理化する。
【0058】
図6図7に目を向けると、最初に、上記したものと同様であり得るクライアントコンピューティングデバイス201を例示的に含み、ネットワーク210(例えば、インターネット)を介してコンピューティングデバイス202から仮想アプリケーションにアクセスするように構成されるコンピューティングシステム200が説明される。さらに、上記のものと同様であり得るコンピューティングデバイス(例えば、仮想化サーバ)202は、例示的に、ハードウェア層209にメモリ203およびプロセッサ204を含む。プロセッサ204は、メモリ203と協働し、クライアントデバイス201に応答するオペレーティングシステム(OS)層208(例えば、Windows(登録商標)、LINUX(登録商標)など)とともに、仮想マシン207内に第1のアプリケーション層205を提供するように構成される。サーバ202はまた、クライアントデバイス201によるその選択に応答して、OS層208の上に仮想マシン206内の第2のアプリケーション層206を提供するように構成される。
【0059】
より具体的には、第1のアプリケーション層205は、第1の仮想アプリケーションの第1のバージョンと、第1の仮想アプリケーションの第1のバージョンと互換性のある第2の仮想アプリケーションとを含む。さらに、第2のアプリケーション層206は、第1のアプリケーション層内の第1の仮想アプリケーションの第2のバージョンを含むが、第2のバージョンは、第1のバージョンとは異なる(例えば、より新しい)(言い換えれば、それらは同じ仮想アプリケーションの異なるバージョンである。)。さらに、第1の仮想アプリケーションの第2のバージョンは、第1のアプリケーション層205の第2の仮想アプリケーションと互換性がない。図7に示す例では、第2のアプリケーション層206内の第1の仮想アプリケーションの第2のバージョンは、第1のアプリケーション層205内の第1の仮想アプリケーションのバージョンよりも新しいバージョンである。
【0060】
図7に示した例では、第2の仮想アプリケーションはマクロであり、これは、別のプログラムと組み合わせて、またはその上で使用される比較的短いプログラムまたはサブルーチンである。しかしながら、以下でさらに説明するように、第1のアプリケーション層内の第2の仮想アプリケーションは、第1の仮想アプリケーションとは独立して実行することができるいくつかの実施形態におけるスタンドアロンプログラムであり得る。上述したように、この例の場合のように古いバージョンの仮想アプリケーション用に作成されたマクロは、新しいバージョンのアプリケーションでは正しく動作し得ないか、互換性がない。例として、MICROSOFT ACCESSなどのデータベースプログラムは、ユーザにACCESSプラットフォームまたはフレームワークで実行されるマクロを作成することを可能にする。しかしながら、ACCESSのバージョンが変更されると、このバージョンで構築されたデータベースマクロは、正しく機能し得ない。更新時にマクロが正しく動作し得ないアプリケーションの他の例には、SAPアプリケーション、スプレッドシート(MICROSOFT EXCELなど)、ワードプロセッサ(MICROSOFT WORD)などが含まれ得る。
【0061】
一緒に機能することがわかっている指定されたアプリケーションファイルおよび関連するマクロは、それ以降の更新からロックされる「ゴールデンイメージ」に結合され得る。ゴールデンイメージは、仮想マシン、仮想デスクトップ、またはこの場合は仮想アプリケーション用にあらかじめ構成されたテンプレートであり、特定のユーザまたはユーザグループに適したリソースが含まれる。例示的な実施形態では、アプリケーションファイル/マクロは、ゴールデンイメージ内のアプリケーション層内にコンテナ化され得るが、コンテナ化は、すべての実施形態で利用される必要はない。コンテナには、仮想マシン全体を起動せずにアプリケーションをデプロイできるようにする適切なランタイムコンポーネント(例えば、ファイル、環境変数、ライブラリなど)が含まれ得る。アプリケーションの新しいバージョンまたはアップグレードされたバージョンをロールアウトする場合、第1および第2のアプリケーション層が同じファイル、ライブラリなどに依存しないという点で、第1のアプリケーション層205から独立して実行されるように同様にデプロイされる。つまり、第1および第2の仮想アプリケーションは、それらの間で競合が発生し得る共通のファイルまたはライブラリを共有しておらず、したがって、それらは、自己完結型である。それでも、仮想アプリケーションの古いバージョンは、第2のアプリケーション層206と同じ仮想マシン208内で、さらには同時に、ゴールデンイメージ内の関連するアプリケーション/マクロと共に実行され得る。それらは別々のアプリケーション層で実行されているため、分離されており、互いに競合しない。
【0062】
対照的に、ローカルデスクトップ環境内で同じプログラムの異なるバージョンを実行することは、特にそれらを同時に実行する場合、通常は不可能である。たとえば、アプリケーションの両方のバージョンが共通のファイルやライブラリなどにアクセスしようとすると、競合やその他の非互換性の問題を引き起こし得る。それでも、第1および第2のアプリケーション層は自己完結型(およびオプションでコンテナ化される)であるので、それらは別々にまたは同じ仮想マシン207内で同時に実行され得、高められた利便性、生産性、および/またはユーザエクスペリエンスを提供する。
【0063】
実装の一例によれば、仮想化サーバ202は、Citrix APP Layeringなどのアプリケーションレイヤリングソリューションを使用して、第1および第2のアプリケーション層205、206を提供し得る。Citrix App Layeringの基盤となる技術は、仮想マシンのコンポーネントを独立して割り当て、パッチを適用し、更新することを可能にする。これには、OS、アプリケーション、ならびにユーザの設定およびデータが含まれる。Citrix App Layeringは、情報技術(IT)担当者に、ローカルにインストールされているかのように見え、動作し、感じる仮想マシン/ゴールデンイメージを介してアプリケーションを配信することを可能にするが、これらのアプリケーションは実際には、それら自身の仮想ディスク内の個別の管理可能なオブジェクトとして別の場所に保存される。Citrix App Layeringを用いて、アプリケーションは、OSから分離されることができ、IT部門は、マシン構成(プール、サイロ、配信グループなど)の数に関係なく、単一のOS層の管理に集中することを可能とする。Citrix App Layeringでは、層は、その層に一意のファイルシステムオブジェクトおよびレジストリエントリのコンテナである。例として、「アプリケーション層」は、オペレーティングシステムへのアプリケーションのインストール中に追加、変更、または削除されたファイルとレジストリエントリとを含む。しかしながら、Citrix App Layering以外の他の適切なアプリケーションレイヤリングおよび/またはコンテナ化アプローチを、異なる実施形態で使用できることが理解されよう。
【0064】
さらに、図8~10を参照すると、この例では、仮想マシン207が、スプレッドシートプログラム、ワードプロセッシングプログラム、関連するマクロを備えたデータベースプログラムの第1のバージョン(v1.0)、および同じデータベースプログラムの第2のバージョン(v2.0)であり、クライアントデバイス201のディスプレイ215に表示されるアイコン211~214によってそれぞれ表現されている4個の別々のアプリケーションへのアクセスを提供することが示される。アイコン213のデータベースシンボルに加えて、このアイコンは、所与のバージョンのデータベースアプリケーション(v1.0)およびその関連マクロがアプリケーション層においてロックダウンされており、したがってユーザによって追加またはその他の方法で変更し得ない(ただし、IT管理者による変更は許可され得る)ゴールデンイメージであることを示すための錠シンボル219も例示的に含む。これは、一貫して運用されるバージョンのデータベースアプリケーションとそれに関連する互換性のあるマクロが常に利用可能であることを保証するのに有利に役立つ。
【0065】
図8に示される例では、アイコン213は、クライアントデバイス201のユーザインターフェース(UI)を介して選択されており、仮想データベースアプリケーションの古い(v1.0)バージョンが実行されているウインドウ216が開いている。さらに、このウインドウでは、ゴールデンイメージでデータベースv1.0アプリケーションとロックされている複数の異なるデータベースマクロ(マクロABC、マクロBCD、マクロCDE、マクロDEF、およびマクロEFG)にアクセスするためのそれぞれのタブまたはボタン217が提供される。図9の例では、アイコン210が選択されており、ウインドウ218内で、データベースアプリケーションの新しいバージョン(v2.0)が起動され、実行されている。言い換えると、図8は、仮想データベースアプリケーションの古いバージョン(v1.0)のみが実行されている例を示し、図9は、データベースアプリケーションの新しいバージョン(v2.0)のみが実行されている例を示している。図10の例では、アイコン213、214の両方が選択されており、両方のデータベースアプリケーション層(v1.0およびv2.0用)が、それぞれ、ウインドウ216、218で両方同時に実行されている。上記のように、これは、クライアントコンピューティングデバイスにローカルにインストールされた同じアプリケーションの異なるバージョンでは通常不可能である。
【0066】
例示的な一実装形態では、IT担当者は、ゴールデンイメージ(ここでは第1のアプリケーション層205および関連するマクロ)を作成し、すべてのプログラムが同じアプリケーション層内で正しく一緒に動作することを確認し、それから上述のように、このアプリケーション層を変更できないようにロックダウンし得る。これにより、一緒に動作することが証明され、ITの介入なしに変更できないアプリケーションバージョンとマクロが可能になる。またこれにより、ユーザが所有し得る他のバージョンのアプリケーションとは別に、離れて設定された期間、またはスタンドアロンの仮想ソフトウェアパッケージとして、ゴールデンイメージ(例えば、サブスクリプションもしくはライセンスを介して)にアクセスすることを可能とする。これに関して、いくつかの実施形態では、必要に応じて、1以上の仮想アプリケーションをゴールデンイメージにバンドルし得ることに留意すべきである。たとえば、これにより、App X(v1)およびApp Y(v2)を含む第1のアプリケーション層、並びにApp Y(v2)を含む第2のアプリケーション層などの2つの異なるアプリケーションが同時使用できるようにし得る。AppX(v1)およびAppY(v2)は同時使用できないものであり得るとしても、それでもAppY(v1)を動作させるときにAppX(v1)にアクセスでき、AppXと同時使用しないときにAppY(v2)にもアクセスできることは、ユーザの関心を引き得る。繰り返しになるが、目標は、互換性が実証され、ユーザに対し「アウトオブザボックスで」正しく機能する互換性のあるアプリケーションおよび/またはマクロを同じゴールデンイメージアプリケーション層に組み込むことである。
【0067】
図7の例では、メモリ203はまた、サーバ202がマクロプリファレンスに基づいて、仮想マシンのログオン時にクライアントデバイス201に対して仮想アプリケーションの第1または第2のバージョンを最初に提供することを可能とするログオンマクロプリファレンスを記憶している。例えば、第2のアプリケーション層206に含まれるアプリケーションの新しいビューは、スタートアップメニューおよび/もしくはクイックアクセスバーにリストされたデフォルトバージョンになり得、または、必要に応じて、サーバ202は、ログオン時に第2のアプリケーション層を自動起動することさえし得る。
【0068】
図11のフロー図230をさらに参照すると、関連する方法は、ブロック232において、クライアントデバイス201に応答するサーバ202で仮想マシン207内に第1のアプリケーション層205を提供することを含み得、上記のように、第1のアプリケーション層は、第1の仮想アプリケーションの第1のバージョンと、第1の仮想アプリケーションの第1のバージョンと互換性のある1つまたは複数の第2の仮想アプリケーション(例えば、マクロなど)とを含み得る。方法は、さらに、ブロック233において、クライアントデバイス201に応答するサーバ202において仮想マシン207内に第2のアプリケーション層206を提供することを例示的に含み、第2のアプリケーション層は、第1の仮想アプリケーションの第2のバージョンを含み、第2のバージョンは、第1のアプリケーション層における第1のバージョンとは異なる。上記のように、仮想アプリケーションの第2のバージョンは第2の仮想アプリケーションと互換性がない。図11の方法は、例示的に、ブロック234で終了する。上記のように、層が生成された後の特定の層からの仮想アプリケーションの選択、ユーザ入力デバイスからの選択に応答するあるアプリケーションバージョンから別のバージョンへの変更などの他のステップが含まれ得る。
【0069】
前述の開示を読んだ当業者なら理解するように、本明細書で説明されるさまざまな態様は、デバイス、方法、またはコンピュータプログラム製品(例えば、言及される動作またはステップを実行するためのコンピュータ実行可能命令を有する非一時的なコンピュータ可読媒体)として実施され得る。相応して、それらの態様は、完全なハードウェア実施形態、完全なソフトウェア実施形態、またはソフトウェアおよびハードウェア態様を組み合わせた実施形態の形態をとり得る。
【0070】
さらに、そのような態様は、記憶媒体中にまたはそれの上に組み込まれたコンピュータ可読プログラムコードまたは命令を有する1つまたは複数のコンピュータ可読記憶媒体によって記憶されたコンピュータプログラム製品の形態をとり得る。ハードディスク、CD-ROM、光ストレージデバイス、磁気ストレージデバイス、および/またはそれらの任意の組み合わせを含む任意の好適なコンピュータ可読記憶媒体が利用され得る。
【0071】
上記の説明および関連する図面で提示する教示の利益を有する当業者は、多くの変更および他の実施形態を思い浮かぶであろう。したがって、上記は、例示的な実施形態に限定されるものではなく、変更および他の実施形態が、添付の特許請求の範囲に含まれることを理解されたい。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11