(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-06-10
(54)【発明の名称】統合アプリケーション通知フレームワーク
(51)【国際特許分類】
G06F 9/455 20060101AFI20220603BHJP
G06F 3/0481 20220101ALI20220603BHJP
【FI】
G06F9/455 150
G06F3/0481
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2021557113
(86)(22)【出願日】2019-04-01
(85)【翻訳文提出日】2021-10-27
(86)【国際出願番号】 CN2019080850
(87)【国際公開番号】W WO2020199089
(87)【国際公開日】2020-10-08
(81)【指定国・地域】
(71)【出願人】
【識別番号】397074301
【氏名又は名称】サイトリックス システムズ,インコーポレイテッド
(74)【代理人】
【識別番号】110002310
【氏名又は名称】特許業務法人あい特許事務所
(72)【発明者】
【氏名】レン,ミンミン
(72)【発明者】
【氏名】ヤオ,ユエ
【テーマコード(参考)】
5E555
【Fターム(参考)】
5E555AA57
5E555BA02
5E555BA04
5E555BB02
5E555BB04
5E555BC08
5E555BD01
5E555CB74
5E555DB18
5E555DB41
5E555DB51
5E555DC13
5E555DD08
5E555FA00
(57)【要約】
統合アプリケーション通知フレームワーク向けの方法およびシステム。サーバは、サービスプロバイダから通知を受信する。サービスプロバイダは、仮想マシン上で実行可能なアプリケーションと関連付けられる。仮想マシンは、ユーザインターフェースを含む仮想環境の一部であってもよい。サーバは、受信した通知の識別子を判断し、識別子は、サービスプロバイダと関連付けられた仮想マシン上でアプリケーションを示すことができる。サーバは、受信した通知を、ユーザに表示するためにユーザインターフェースに提供する。受信した通知は、仮想マシン上でアプリケーションを実行せずに表示される。
【選択図】
図5
【特許請求の範囲】
【請求項1】
サーバによって、サービスプロバイダから通知を受信することであって、前記サービスプロバイダは、仮想マシン上で実行可能なアプリケーションと関連付けられており、前記仮想マシンは、ユーザインターフェースを含む仮想環境の一部である、前記受信することと、
前記サーバによって、前記受信した通知の識別子を判断することであって、前記識別子は、前記サービスプロバイダと関連付けられた前記アプリケーションを示す、前記判断することと、
前記サーバによって、前記受信した通知を、ユーザに表示するために前記ユーザインターフェースに提供することであって、前記受信した通知は、前記仮想マシン上で前記アプリケーションを実行せずに表示される、前記提供することと、
を含む方法。
【請求項2】
前記識別子を判断することは、前記サーバによって前記受信した通知から前記識別子を抽出することを含む、請求項1に記載の方法。
【請求項3】
前記サービスプロバイダは、前記アプリケーションにサービスを提供するバックエンドサービスを備える、請求項1に記載の方法。
【請求項4】
前記サービスプロバイダは、ウェブサーバ、メールサーバ、アプリケーションサーバ、メッセージングサーバ、ロケーションサーバ、コンテンツプロバイダ、オンラインストリーミングサービス、ソーシャルメディアサービス、金融機関、電気通信サービス、インターネットサービスプロバイダ、またはSaaS(software-as-a-service)プロバイダのうちの少なくとも1つである、請求項1に記載の方法。
【請求項5】
前記仮想環境により、ユーザがクライアントデバイスから前記仮想マシンにアクセスできるようになる、請求項1に記載の方法。
【請求項6】
前記仮想環境は、ウェブクライアント、アプリケーション、サービス、またはオペレーティングシステムのうちの少なくとも1つを備える、請求項1に記載の方法。
【請求項7】
前記仮想環境は、前記提供された通知を受信した後、ユーザに前記通知を表示する、請求項1に記載の方法。
【請求項8】
前記通知は、テキスト、アイコン、ポップアップ、ダイアログボックス、ステータスバー、トースト、タイル、バッジ、アラート、またはカウンタのうちの少なくとも1つとして表示される、請求項7に記載の方法。
【請求項9】
前記アプリケーションが、前記仮想マシン上で実行中でないと判断することと、
前記サーバが、前記仮想マシン上で前記アプリケーションを実行させることと、
をさらに含む、請求項1に記載の方法。
【請求項10】
前記識別子によって示された前記アプリケーションが前記ユーザインターフェースを通じてアクセス中でないときに、前記ユーザインターフェースは、前記受信した通知を表示する、請求項9に記載の方法。
【請求項11】
前記仮想マシン上で前記アプリケーションを実行させることは、前記アプリケーションを起動するためのコマンドを前記サーバによって前記仮想マシンに伝送することを含む、請求項9に記載の方法。
【請求項12】
前記仮想マシンが動作可能でないと判断することと、
前記仮想マシンを起動するためのコマンドを伝送することにより、前記サーバが前記仮想環境に対して前記仮想マシンを動作可能にすることと、
をさらに含む、請求項1に記載の方法。
【請求項13】
前記通知を受信した後、ファイルのダウンロード、前記アプリケーションの終了、または前記アプリケーションと関連付けられている関連アプリケーションの起動のうちの少なくとも1つを、前記サーバによって前記仮想マシンに実施させること
をさらに含む、請求項1に記載の方法。
【請求項14】
前記受信した通知を特定の時期に前記仮想環境に提供するようスケジューリングすること
をさらに含む、請求項1に記載の方法。
【請求項15】
前記サーバによって、前記サービスプロバイダから第2の通知を受信することと、
前記第2の通知がフィルタリング基準を満たさないと判断することと、
前記仮想環境に前記第2の通知を提供することなく、前記第2の通知を破棄することと、
をさらに含む、請求項1に記載の方法。
【請求項16】
前記フィルタリング基準は、通知タイプ、通信チャネルタイプ、アプリケーションタイプ、時刻、優先度、または重複のうちの少なくとも1つを備える、請求項15に記載の方法。
【請求項17】
メモリと、
前記メモリに連結されており、かつ、
サービスプロバイダから通知を受信することであって、前記サービスプロバイダは、仮想マシン上で実行可能なアプリケーションと関連付けられており、前記仮想マシンは、ユーザインターフェースを含む仮想環境の一部である、前記受信することと、
前記受信した通知の識別子を判断することであって、前記識別子は、前記サービスプロバイダと関連付けられた前記アプリケーションを示す、前記判断することと、
前記受信した通知を、ユーザに表示するために前記ユーザインターフェースに提供することであって、前記受信した通知は、前記仮想マシン上で前記アプリケーションを実行せずに表示される、前記提供することと、
を行うように構成されたプロセッサと、
を備えるシステム。
【請求項18】
前記プロセッサは、
前記アプリケーションが前記仮想マシン上で実行中でないと判断した後に、前記アプリケーションを前記仮想マシン上で実行させるようにさらに構成されている、請求項17に記載のシステム。
【請求項19】
プロセッサによって実行されると、
サービスプロバイダから通知を受信することであって、前記サービスプロバイダは、仮想マシン上で実行可能なアプリケーションと関連付けられており、前記仮想マシンは、ユーザインターフェースを含む仮想環境の一部である、前記受信することと、
前記受信した通知の識別子を判断することであって、前記識別子は、前記サービスプロバイダと関連付けられた前記アプリケーションを示す、前記判断することと、
前記受信した通知を、ユーザに表示するために前記ユーザインターフェースに提供することであって、前記受信した通知は、前記仮想マシン上で前記アプリケーションを実行せずに表示される、前記提供することと、
を前記プロセッサに行わせる命令を記憶する非一時的コンピュータ可読記憶媒体。
【請求項20】
前記命令は、前記プロセッサによって実行されると、
前記アプリケーションが前記仮想マシン上で実行中でないと判断した後に、前記アプリケーションを前記仮想マシン上で実行させること
を前記プロセッサにさらに行わせる、請求項19に記載の非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書に記載の発明の態様は概して、コンピュータネットワーキング、リモートコンピュータアクセス、仮想化、エンタープライズモビリティマネジメント、およびそれらに関連するハードウェアおよびソフトウェアに関する。より具体的には、本明細書に記載の態様は、仮想アプリケーション向けの通知フレームワークに関する。
【背景技術】
【0002】
現在の仮想デスクトップおよびアプリケーション製品は、ユーザが仮想アプリケーションと対話できるフロントエンドと、仮想リソースおよびインスタンスを管理するバックエンドと、からなるのが典型的である。アプリケーションは、バックエンドサービスからメッセージを受信し、ユーザへの通知を生成することができる。
【発明の概要】
【0003】
以下の内容は、本明細書に記載されている様々な発明の態様を簡略化してまとめたものである。この概要は、包括的な概略ではなく、必須または肝要な要素を特定したり、請求項の範囲を明確化したりすることを意図してはいない。以下の概要は、後述の詳細な説明に入る前の導入部として、いくつかの概念を簡略化して提示しているに過ぎない。
【0004】
統合アプリケーション通知フレームワークは、通知アプリケーションプログラミングインターフェース(API)、オペレーティングシステムレベルのインターセプト、およびサービス間通知チャネルを介して、仮想アプリケーションインスタンスと関連付けられた通知を受信し得る。通知は、トリアージおよびフィルタリングされ得る。
【0005】
通知API通知は、統合アプリケーション通知フレームワークのネイティブAPIコールを通じて、仮想アプリケーションインスタンスから受信され得る。オペレーティングシステムレベル通知インターセプトメッセージは、仮想アプリケーションインスタンスが実行中である仮想オペレーティングシステムインスタンスに仮想アプリケーションインスタンスによって送信された仮想通知に基づいて生成され得る。サービス間通知は、仮想アプリケーションインスタンスにサービスを提供するバックエンドサービスによって生成され得る。
【0006】
統合アプリケーション通知フレームワークは、通知をクライアントワークスペースに送信し得る。
【0007】
これらの態様および追加的な態様が、以下でさらに詳述する開示内容により理解されるであろう。
【0008】
本明細書に記載の態様およびそれらの利点は、添付の図面を考慮して以下の説明を参照することにより、より深い理解が得られる。これらの図面において、同様の参照番号は同様の特徴を示している。
【図面の簡単な説明】
【0009】
【
図1】本明細書に記載された1つ以上の例示的な態様に従って使用され得る例示的なコンピュータシステムアーキテクチャを描いている。
【
図2】本明細書に記載された1つ以上の例示的な態様に従って使用され得る例示的なリモートアクセスシステムアーキテクチャを描いている。
【
図3】本明細書に記載された1つ以上の例示的な態様に従って使用され得る例示的な仮想化されたシステムアーキテクチャを描いている。
【
図4】本明細書に記載された1つ以上の例示的な態様に従って使用され得る例示的なクラウドベースのシステムアーキテクチャを描いている。
【
図5】例示的な統合アプリケーション通知フレームワークを描いている。
【
図6】クライアントデバイスの例示的なユーザインターフェースを描いている。
【
図7】統合アプリケーション通知フレームワークを提供するための例示的な方法を描いている。
【
図8】クライアントワークスペースによって通知を受信するための例示的な方法を描いている。
【発明を実施するための形態】
【0010】
様々な発明の実施の形態に関する以降の記述においては、本明細書の一部を形成する前記の添付図面が参照されており、本明細書に記載された態様が実施され得る様々な実施の形態が例として示されている。本明細書に記載された範囲から逸脱しない限り、他の実施の形態を利用したり、構造上および機能上の変更を行ったりし得るものと理解されたい。様々な態様で、他の実施の形態が可能であり、種々の異なる方法で実施または実行することができる。
【0011】
従来のクラウド製品には、バックエンドのアプリケーションインスタンスとフロントエンドのユーザインターフェースとの間に信頼できる通知メカニズムがない。例えば、バックエンドのアプリケーションインスタンスは、仮想Windows(登録商標)デスクトップ環境で稼働するMicrosoft Outlook(登録商標)電子メールクライアントアプリケーションであり得る。フロントエンドのユーザインターフェースは、Citrix Workspace(登録商標)であり得る。バックエンドのアプリケーションインスタンスは、フロントエンドのユーザインターフェースに直接アラートを出す方法を有しないのが典型的であることから、アプリケーションが通知を発行するとき、ユーザが自発的にそのアプリケーションを開くまでユーザに通知されないことがある。例えば、ユーザが、ローカルコンピュータのホストオペレーティングシステム上で稼働している電子メールクライアントを介して電子メールメッセージを受信した場合、電子メールクライアントは、ローカルコンピュータ上で稼働しているホストオペレーティングシステムに通知メッセージを送信し、ユーザはその通知を以て直ちに警告され得る。しかし、電子メールメッセージが、仮想マシン上で稼働する電子メールクライアントの仮想インスタンスに到着した場合、ローカルコンピュータ上で稼働するホストオペレーティングシステムは、新しい電子メールが到着したことを知る方法を有しない場合があり、ユーザは、仮想マシンにアクセスするために仮想デスクトップユーザインターフェースを能動的に起動し、かつ/または電子メールクライアントの仮想インスタンスを起動するまで、新しい電子メールの到着を発見しないことがある。そのため、ユーザエクスペリエンスを高めるためには、仮想化環境における信頼できる通知フレームワークが必要とされる。
【0012】
前記の先行技術の制限を克服し、本明細書を読んで理解すれば明らかとなる他の制限を克服するために、本明細書に記載の態様は、統合アプリケーション通知フレームワークに関する。
【0013】
以下に詳述する主題の総説として、本明細書に記載の態様は、クラウドおよび/または仮想化されたアプリケーション向けの統合通知フレームワークに関する。ユーザは、仮想化またはクラウドアプリケーションを開いて個別に通知を確認しなくても通知を受信し得、ユーザエクスペリエンスおよび顧客満足度を高め得る。より具体的には、本開示により、フロントエンドのユーザインターフェースが、統合アプリケーション通知フレームワークを介して、かつ複数の通信チャネルのうちの1つを通じて、バックエンドのアプリケーションインスタンスに関連する通知メッセージを受信できるようになる。そのため、バックエンドのアプリケーションインスタンスに関する適切な情報がユーザに提供されやすくなることから、ユーザがこの情報を、より迅速かつ効率的に受信し得る。
【0014】
本明細書で使われている表現や用語は説明上のものであり、制限的なものとみなすべきでない。本明細書で使われている句および用語には、むしろ最も広義の解釈および意味が与えられるべきである。「含む」、「備える」、およびこれらの変形が使用されている場合には、以降に列挙された項目およびそれらの均等物、ならびに追加項目およびそれらの均等物を包含するものとする。「接続」、「連結」、「参加」および同様の用語の使用は、直接的および間接的の両方の接続、結合、参加を含むことものと意図される。
【0015】
本明細書で使用され、かつ図面に描かれている「通知」(メッセージまたは通知メッセージとも称される)という用語は、アプリケーションまたはオペレーティングシステムによって生成され、同じまたは他のアプリケーションおよびオペレーティングシステム向けのメッセージを格納する任意のタイプのデータまたは情報を指す。通知のサイズに制限はないが、比較的小さなサイズ(例えば、数バイトから数キロバイト)であることが多い。通知メッセージの送信者および受信者は、メッセージの形式および配信方法について事前に合意する必要があり得る。通知の受信者は、関連情報をユーザに提示することによってその通知をさらに処理し得る。例えば、この通知は、画面上で視覚的に(例えば、テキスト、アイコン、ポップアップ、ダイアログボックス、ステータスバー、トースト、タイル、バッジ、アラート、カウンタなど)、スピーカから聴覚的に(例えば、アラーム、着信音、オーディオアラートなど)、またはその他任意の手段で(例えば、振動や触覚フィードバックなど)ユーザに提示され得る。一例として、電子メールクライアントは、新しい電子メールを受信すると、電子メールクライアントが実行されているオペレーティングシステムに通知を送信することができ、その結果、オペレーティングシステムは、ポップアップダイアログを介して新しい電子メールをユーザに気付かることができる。
【0016】
受信した通知は、ユーザが(例えば、読むなどして)手動で確認すると、「消去」などの形でアプリケーションまたはシステムから削除されるか、通知がユーザに提示された後に自動的に消去され得る。代替として、通知の受信から一定の時間(例えば、1時間、1日、2週間、3か月など)が経過した後にその通知が消去されてもよい。消去された(または期限が切れた)通知は、ユーザに表示されなくなってもよい。
【0017】
コンピューティングアーキテクチャ
コンピュータソフトウェア、ハードウェア、およびネットワークは、特にスタンドアロン、被ネットワーク接続、リモートアクセス(リモートデスクトップとも称される)、被仮想化、および/またはクラウドベースの環境など、種々の異なるシステム環境で利用され得る。
【0018】
図1は、本明細書に記載された1つ以上の例示的な態様を、スタンドアロンおよび/または被ネットワーク接続環境で実装する目的で使用され得るシステムアーキテクチャおよびデータ処理デバイスの一例を表している。様々なネットワークノード103、105、107、および109は、インターネットなどのワイドエリアネットワーク(WAN)101を介して相互接続され得る。追加または代替として、プライベートイントラネット、企業ネットワーク、ローカルエリアネットワーク(LAN)、メトロポリタンエリアネットワーク(MAN)、無線ネットワーク、パーソナルネットワーク(PAN)など、他のネットワークが使用され得る。ネットワーク101は説明用であり、より少数または追加的なコンピュータネットワークに置き換えられ得る。ローカルエリアネットワーク133は、任意の既知のLANトポロジーのうちの1つ以上を有し得、イーサネットなど、様々な異なるプロトコルのうちの1つ以上を使用し得る。デバイス103、105、107および109、ならびに他のデバイス(非図示)は、ツイストペアワイヤ、同軸ケーブル、光ファイバ、電波、または他の通信媒体を介して、ネットワークのうちの1つ以上に接続され得る。
【0019】
本明細書で使用され、図面に描かれている「ネットワーク」という用語は、遠隔の記憶デバイスが1つ以上の通信経路を介して連結されているシステムを表すだけでなく、記憶能力を有するかかるシステムに随時連結され得るスタンドアロンデバイスも表す。したがって、「ネットワーク」という用語は、「物理ネットワーク」だけでなく、すべての物理ネットワークにまたがって所在する単一の実体に帰属するデータで構成される「コンテンツネットワーク」も含む。
【0020】
構成要素としては、データサーバ103、ウェブサーバ105、クライアントコンピュータ107、109が挙げられ得る。データサーバ103は、本明細書に記載された1つ以上の例示的な態様を実施するためのデータベースおよび制御ソフトウェアの全体的なアクセス、制御、および管理を提供する。データサーバ103はウェブサーバ105に接続され得、ユーザはウェブサーバ105を介して、リクエストされたデータと対話し、データを取得する。代替として、データサーバ103は、ウェブサーバそのものとなってインターネットに直接接続され得る。データサーバ103は、ローカルエリアネットワーク133、ワイドエリアネットワーク101(例えば、インターネット)、直接もしくは間接的な接続を介して、または他の何らかのネットワークを介して、ウェブサーバ105に接続され得る。ユーザは、リモートコンピュータ107、109を使用してデータサーバ103と対話し得、例えば、ウェブブラウザを使用して、ウェブサーバ105がホストする1つ以上の外部公開されたウェブサイトを介してデータサーバ103に接続し得る。クライアントコンピュータ107、109は、データサーバ103に記憶されているデータにアクセスするために、データサーバ103と連携して使用され得るか、他の目的で使用され得る。例えば、クライアントデバイス107から、ユーザは、当技術分野で既知のインターネットブラウザを使用して、またはコンピュータネットワーク(インターネットなど)を経由してウェブサーバ105および/もしくはデータサーバ103と通信するソフトウェアアプリケーションを実行することによって、ウェブサーバ105にアクセスし得る。
【0021】
サーバおよびアプリケーションは、同じ物理マシン上で組み合わせられ、別々の仮想アドレスまたは論理アドレスを保持し得るか、別々の物理マシン上に所在し得る。
図1は、使用され得るネットワークアーキテクチャの一例を表しているに過ぎず、当業者であれば、使用される特定のネットワークアーキテクチャおよびデータ処理デバイスが多様であり得、本明細書にさらに記載のとおり、それらが提供する機能に対して二次的であることを理解するであろう。例えば、ウェブサーバ105およびデータサーバ103によって提供されるサービスは、単一サーバ上で組み合わせられ得る。
【0022】
各構成要素103、105、107、109は、任意のタイプの既知のコンピュータ、サーバ、またはデータ処理デバイスであり得る。データサーバ103は、例えば、データサーバ103の動作全体を制御するプロセッサ111を含み得る。データサーバ103は、ランダムアクセスメモリ(RAM)113、読み出し専用メモリ(ROM)115、ネットワークインターフェース117、入出力インターフェース119(例えば、キーボード、マウス、ディスプレイ、プリンタなど)、およびメモリ121をさらに含み得る。入出力(I/O)インターフェース119は、データまたはファイルの読み出し、書き込み、表示、および/または印刷を行うための様々なインターフェースユニットおよびドライブを含み得る。メモリ121は、データ処理デバイス103の動作全体を制御するためのオペレーティングシステムソフトウェア123と、本明細書に記載された態様を実施するようにデータサーバ103に指示するための制御ロジック125と、本明細書に記載された態様と組み合わせて使用してもしなくてもよい二次的な機能、サポート機能、および/または他の機能を提供する他のアプリケーションソフトウェア127と、をさらに記憶し得る。本明細書では、制御ロジック125がデータサーバソフトウェア125とも称され得る。データサーバソフトウェア125の機能とは、制御ロジック125へと符号化された規則に基づいて自動的に行われ、システムに入力を提供するユーザによって手動で行われる動作もしくは決定、および/またはユーザ入力(例えば、クエリやデータアップデートなど)に基づく自動処理の組み合わせのことであり得る。
【0023】
メモリ121は、第1のデータベース129および第2のデータベース131を含む、本明細書に記載された1つ以上の態様の実施に使用されるデータも記憶し得る。いくつかの実施の形態において、第1のデータベース129は、第2のデータベース131を(例えば、別々のテーブルやレポートなどとして)含み得る。つまり、情報は、システム設計に応じて、単一のデータベースに記憶すること、または異なる論理、仮想、もしくは物理データベースへと分けることができる。デバイス105、107、および109は、デバイス103に関して説明したのと同様のアーキテクチャまたは異なるアーキテクチャを有し得る。当業者であれば、例えば、処理負荷を複数のコンピュータに分配したり、地理的な箇所、ユーザのアクセスレベル、サービス品質(QoS)などに基づいてトランザクションを分離したりする目的で、本明細書に記載されているデータ処理デバイス103(またはデバイス105、107、もしくは109)の機能が複数のデータ処理デバイスに分散され得るということを理解するであろう。
【0024】
1つ以上の態様は、本明細書に記載のとおり、1つ以上のプログラムモジュールなど、1つ以上のコンピュータまたは他のデバイスによって実行されるコンピュータ使用可能もしくは可読データおよび/またはコンピュータ実行可能命令で具現化され得る。一般に、プログラムモジュールとしては、コンピュータまたは他のデバイス内のプロセッサによって実行されるときに、特定のタスクを実施したり、特定の抽象データ型を実装したりするルーチン、プログラム、オブジェクト、構成要素、データ構造体などが挙げられる。モジュールは、実行のために後でコンパイルされるソースコードプログラミング言語で記述され得るか、ハイパーテキストマークアップ言語(HTML)または拡張マークアップ言語(XML)(これらに限定されない)などのスクリプト言語で記述され得る。コンピュータ実行可能命令は、不揮発性記憶デバイスなどのコンピュータ可読媒体に記憶され得る。ハードディスク、CD-ROM、光学式記憶デバイス、磁気記憶デバイス、および/またはそれらの任意の組み合わせなど、任意の適切なコンピュータ可読記憶媒体が利用され得る。加えて、本明細書に記載されているデータまたはイベントを表す様々な伝送(非記憶)媒体は、金属線、光ファイバ、および/または無線伝送媒体(例えば、空気および/または空間)などの信号伝導媒体を通過する電磁波という形態で、送信元と送信先との間で転送され得る。本明細書に記載されている様々態様は、方法、データ処理システム、またはコンピュータプログラム製品として具現化され得る。そのため、様々な機能の全体または一部は、ソフトウェア、ファームウェア、および/または、集積回路、フィールドプログラマブルゲートアレイ(FPGA)などのハードウェアもしくはハードウェア等価物で具現化され得る。本明細書に記載されている1つ以上の態様をより効果的に実装する目的で、特定のデータ構造体が使用され得、かかるデータ構造体は、本明細書に記載されているコンピュータ実行可能命令およびコンピュータ使用可能データの範囲内で企図される。
【0025】
図2をさらに参照すると、本明細書に記載されている1つ以上の態様が、リモートアクセス環境で実装される。
図2は、本明細書に記載された1つ以上の例示的な態様に従って使用され得る例示的なコンピューティング環境200内のコンピューティングデバイス201を含むシステムアーキテクチャ例を描いている。コンピューティングデバイス201は、単一サーバまたは複数サーバのデスクトップ仮想化システム(例えば、リモートアクセスまたはクラウドシステム)内のサーバ206aとして使用され得、クライアントアクセスデバイスに仮想マシンを提供するように構成することができる。コンピューティングデバイス201は、デバイス201の動作全体を制御するためのプロセッサ203と、RAM205、ROM207、入出力(I/O)モジュール209、およびメモリ215など、デバイス201の関連構成要素を有し得る。
【0026】
I/Oモジュール209は、コンピューティングデバイス201のユーザが入力を提供する手段であり得るマウス、キーパッド、タッチスクリーン、スキャナ、光学式読取機、および/もしくはスタイラス(または他の入力デバイス(複数可))を含み得ることに加え、音声出力を提供するための1つ以上のスピーカと、テキスト、オーディオビジュアル、および/またはグラフィッカル出力を提供するための1つ以上の映像表示デバイスと、も含み得る。ソフトウェアは、本明細書に記載されているような様々な機能を実施するために、コンピューティングデバイス201を特殊目的のコンピューティングデバイスへと構成するための命令をプロセッサ203に提供する目的で、メモリ215および/または他のストレージ内に記憶され得る。例えば、メモリ215は、オペレーティングシステム217、アプリケーションプログラム219、および関連付けられたデータベース221など、コンピューティングデバイス201で使用されるソフトウェアを記憶し得る。
【0027】
コンピューティングデバイス201は、端末240(クライアントデバイスおよび/またはクライアントマシンとも称される)など、1つ以上のリモートコンピュータへの接続をサポートする被ネットワーク接続環境で動作し得る。端末240は、コンピューティングデバイス103もしくは201に関して上述した要素の多くまたはすべてを含むパーソナルコンピュータ、モバイルデバイス、ラップトップコンピュータ、タブレット、またはサーバであり得る。
図2に描かれているネットワーク接続は、ローカルエリアネットワーク(LAN)225およびワイドエリアネットワーク(WAN)229を含むが、他のネットワークも含み得る。コンピューティングデバイス201は、LANネットワーク接続環境で使用される場合、ネットワークインターフェースまたはアダプタ223を介してLAN225に接続され得る。WANネットワーク接続環境で使用される場合、コンピューティングデバイス201は、コンピュータネットワーク230(例えば、インターネット)などのWAN229を経由した通信を確立するためのモデムまたは他のワイドエリアネットワークインターフェース227を含み得る。図示されたネットワーク接続は例示的なものであり、コンピュータ間の通信リンクを確立する他の手段が使用され得るということは理解されよう。コンピューティングデバイス201および/または端末240は、バッテリ、スピーカ、アンテナ(非図示)など、他の様々な構成要素を含むモバイル端末(例えば、携帯電話、スマートフォン、携帯型情報端末(PDA)、ノートパソコンなど)であってもよい。
【0028】
また、本明細書に記載の態様は、数々の他の汎用または特殊目的のコンピューティングシステム環境または構成でも動作可能であり得る。本明細書に記載の態様で使用するのに適し得る他のコンピューティングシステム、環境、および/または構成の例としては、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラミング可能家電製品、ネットワークパーソナルコンピュータ(PC)、ミニコンピュータ、メインフレームコンピュータ、前記のシステムまたはデバイスのいずれかを含む分散コンピューティング環境などが挙げられるが、これらに限定されない。
【0029】
図2に示すとおり、1つ以上のクライアントデバイス240は、1つ以上のサーバ206a~206n(本明細書では概して「サーバ(複数可)206」と称される)と通信し得る。一つの実施の形態において、コンピューティング環境200は、サーバ(複数可)206とクライアントマシン(複数可)240との間に設置されたネットワーク機器を含み得る。ネットワーク機器は、クライアント/サーバ接続を管理し得、場合によっては、複数のバックエンドサーバ206間でクライアント接続の負荷分散を行うことができる。
【0030】
クライアントマシン(複数可)240は、いくつかの実施の形態において、単一クライアントマシン240または単一群のクライアントマシン240と称され得るのに対し、サーバ(複数可)206は、単一サーバ206または単一群のサーバ206と称され得る。一つの実施の形態においては、単一クライアントマシン240が1つより多くのサーバ206と通信するのに対し、別の実施の形態においては、単一サーバ206が1つより多くのクライアントマシン240と通信する。さらに別の実施の形態においては、単一クライアントマシン240が単一サーバ206と通信する。
【0031】
いくつかの実施の形態においては、クライアントマシン240が、クライアントマシン(複数可)、クライアント(複数可)、クライアントコンピュータ(複数可)、クライアントデバイス(複数可)、クライアントコンピューティングデバイス(複数可)、ローカルマシン、リモートマシン、クライアントノード(複数可)、エンドポイント(複数可)、またはエンドポイントノード(複数可)という非網羅的な用語のうちのいずれか1つによって参照され得る。いくつかの実施の形態においては、サーバ206が、サーバ(複数可)、ローカルマシン、リモートマシン、サーバファーム(複数可)、またはホストコンピューティングデバイス(複数可)という非網羅的な用語のうちのいずれか1つによって参照され得る。
【0032】
一つの実施の形態において、クライアントマシン240は、仮想マシンであり得る。仮想マシンは任意の仮想マシンであり得るのに対し、いくつかの実施の形態においては、仮想マシンが、例えば、シトリックス・システムズ(Citrix Systems)、IBM、VMware、またはその他任意のハイパーバイザによって開発されたハイパーバイザなど、タイプ1またはタイプ2のハイパーバイザによって管理される任意の仮想マシンであり得る。いくつかの態様においては、仮想マシンがハイパーバイザによって管理され得るのに対し、他の態様においては、仮想マシンが、サーバ206上で実行されるハイパーバイザ、またはクライアント240上で実行されるハイパーバイザによって管理され得る。
【0033】
いくつかの実施の形態は、サーバ206または遠隔地に所在する他のマシン上でリモートで実行されるアプリケーションによって生成されたアプリケーション出力を表示するクライアントデバイス240を含む。これらの実施の形態において、クライアントデバイス240は、アプリケーションウィンドウ、ブラウザ、または他の出力ウィンドウに出力を表示するために、仮想マシンレシーバプログラムまたはアプリケーションを実行し得る。一例において、アプリケーションはデスクトップであるのに対し、他の例においては、アプリケーションが、デスクトップを生成または提示するアプリケーションである。デスクトップは、ローカルおよび/またはリモートのアプリケーションを統合できるオペレーティングシステムのインスタンスにユーザインターフェースを提供するグラフィカルシェルを含む。本明細書で使用されているアプリケーションとは、オペレーティングシステムのインスタンスが(および任意選択でデスクトップも)ロードされた後に実行されるプログラムのことである。
【0034】
いくつかの実施の形態において、サーバ206は、リモートプレゼンテーションプロトコルまたは他のプログラムを使用して、クライアント上で実行されるシンクライアントまたはリモートディスプレイアプリケーションにデータを送信し、これによって、サーバ206上で実行されるアプリケーションによって生成された表示出力を提示する。シンクライアントまたはリモートディスプレイプロトコルは、フロリダ州フォートローダーデールにあるシトリックス・システムズ社(Citrix Systems, Inc.)が開発したインディペンデントコンピューティングアーキテクチャ(ICA)プロトコル、またはワシントン州レドモンドにあるマイクロソフト社(Microsoft Corporation)が製造したリモートデスクトッププロトコル(RDP)という非網羅的なプロトコルリスト内のいずれか1つであり得る。
【0035】
リモートコンピューティング環境は、例えばクラウドコンピューティング環境において、論理的にグループ化されてサーバファーム206にまとめられるような1つより多くのサーバ206a~206nを含み得る。サーバファーム206は、論理的にグループ化されつつ地理的に分散したサーバ206、または論理的にグループ化されつつ互いに近接して所在するサーバ206を含み得る。いくつかの実施の形態において、サーバファーム206内で地理的に分散したサーバ206a~206nは、WAN(ワイド)、MAN(メトロポリタン)、またはLAN(ローカル)を使用して通信することができ、これらの実施の形態において、異なる地理的領域は、異なる大陸、異なる大陸領域、異なる国、異なる州、異なる都市、異なるキャンパス、異なる部屋、または前述の地理的位置の任意の組み合わせとして特徴付けることができる。いくつかの実施の形態において、サーバファーム206は単一の実体として管理され得るのに対し、他の実施の形態においては、サーバファーム206が複数のサーバファームを含むことができる。
【0036】
いくつかの実施の形態においては、サーバファームが、略同様のタイプのオペレーティングシステムプラットフォーム(例えば、WINDOWS(登録商標)、UNIX(登録商標)、LINUX(登録商標)、iOS、ANDROID(登録商標)、SYMBIANなど)を実行するサーバ206を含み得る。他の実施の形態においては、サーバファーム206が、第1のタイプのオペレーティングシステムプラットフォームを実行する第1の群の1つ以上のサーバと、第2のタイプのオペレーティングシステムプラットフォームを実行する第2の群の1つ以上のサーバと、を含み得る。
【0037】
サーバ206は、必要に応じて任意のタイプのサーバ、例えば、ファイルサーバ、アプリケーションサーバ、ウェブサーバ、プロキシサーバ、機器、ネットワーク機器、ゲートウェイ、アプリケーションゲートウェイ、ゲートウェイサーバ、仮想化サーバ、展開サーバ、セキュアソケットレイヤ(SSL)VPNサーバ、ファイアウォール、ウェブサーバ、アプリケーションサーバとして構成され得るか、マスターアプリケーションサーバ、アクティブディレクトリを実行するサーバ、もしくはファイアウォール機能、アプリケーション機能、または負荷分散機能を提供するアプリケーション加速プログラムを実行するサーバとして構成され得る。また、他のサーバタイプも使用され得る。
【0038】
いくつかの実施の形態は、クライアントマシン240からリクエストを受信し、リクエストを第2のサーバ206b(非図示)に転送し、第2のサーバ206b(非図示)からの応答を使用してクライアントマシン240によって生成されたリクエストに応答する第1のサーバ206aを含む。第1のサーバ206aは、クライアントマシン240にとって利用可能なアプリケーション一覧と、アプリケーション一覧内で識別されたアプリケーションをホストするアプリケーションサーバ206と関連付けられたアドレス情報と、を取得し得る。第1のサーバ206aはその後、ウェブインターフェースを使用してクライアントのリクエストに対する応答を提示することができ、識別されたアプリケーションへのアクセスをクライアント240に提供するために、クライアント240と直接通信することができる。1つ以上のクライアント240および/または1つ以上のサーバ206は、ネットワーク230、例えばネットワーク101を経由してデータを伝送し得る。
【0039】
図3は、例示的なデスクトップ仮想化システムのハイレベルアーキテクチャを示している。図示のとおり、デスクトップ仮想化システムは、仮想デスクトップおよび/または仮想アプリケーションを1つ以上のクライアントアクセスデバイス240に提供するように構成された少なくとも1つの仮想化サーバ301を含む、単一サーバもしくは複数サーバシステム、またはクラウドシステムであり得る。本明細書において使用されているデスクトップとは、1つ以上のアプリケーションがホストおよび/または実行され得るグラフィカル環境または空間のことである。デスクトップは、ローカルおよび/またはリモートのアプリケーションを統合できるオペレーティングシステムのインスタンスにユーザインターフェースを提供するグラフィカルシェルを含む。アプリケーションは、オペレーティングシステムのインスタンスが(および任意選択でデスクトップも)ロードされた後に実行されるプログラムを含み得る。オペレーティングシステムの各インスタンスは、物理的なもの(例えば、デバイスごとに1つのOS)、または仮想的なもの(例えば、単一デバイス上で稼働する多数のOSインスタンス)であり得る。各アプリケーションは、ローカルデバイス上で実行され得るか、遠隔地にある(例えば、遠隔所在の)デバイス上で実行され得る。
【0040】
コンピュータデバイス301は、仮想化環境、例えば、単一サーバ、複数サーバ、またはクラウドコンピューティング環境における仮想化サーバとして構成され得る。
図3に例示された仮想化サーバ301は、
図2に例示されたサーバ206の1つ以上の実施の形態として展開することができ、かつ/またはこれらの実施の形態もしくは他の既知のコンピューティングデバイスによって実装することができる。仮想化サーバ301には、1つ以上の物理ディスク304と、1つ以上の物理デバイス306と、1つ以上の物理プロセッサ308と、1つ以上の物理メモリ316と、を含むことができるハードウェア層が含まれる。いくつかの実施の形態においては、ファームウェア312を、物理メモリ316内のメモリ要素内に記憶することができ、物理プロセッサ308のうちの1つ以上によって実行することができる。仮想化サーバ301は、物理メモリ316内のメモリ要素に記憶され得、かつ物理プロセッサ308のうちの1つ以上によって実行され得るオペレーティングシステム314をさらに含み得る。さらには、ハイパーバイザ302が、物理メモリ316内のメモリ要素に記憶され得、かつ物理プロセッサ308のうちの1つ以上によって実行することができる。
【0041】
物理プロセッサ308のうちの1つ以上で実行されるのは、1つ以上の仮想マシン332A~C(概して332)であり得る。各仮想マシン332は、仮想ディスク326A~Cと仮想プロセッサ328A~Cとを有し得る。いくつかの実施の形態において、第1の仮想マシン332Aは、仮想プロセッサ328Aを使用して、ツールスタック324を含む制御プログラム320を実行し得る。制御プログラム320は、制御仮想マシン、Dom0、Domain 0、またはシステムの管理および/もしくは制御に使用される他の仮想マシンと称され得る。いくつかの実施の形態において、1つ以上の仮想マシン332B~Cは、仮想プロセッサ328B~Cを使用して、ゲストオペレーティングシステム330A~B(概して330)を実行することができる。
【0042】
仮想化サーバ301は、仮想化サーバ301と通信する1台以上のハードウェアを有するハードウェア層310を含み得る。いくつかの実施の形態において、ハードウェア層310は、1つ以上の物理ディスク304と、1つ以上の物理デバイス306と、1つ以上の物理プロセッサ308と、1つ以上の物理メモリ316と、を含み得る。物理構成要素304、306、308、および316は、例えば、前記の構成要素のうちのいずれかを含み得る。物理デバイス306は、例えば、ネットワークインターフェースカード、ビデオカード、キーボード、マウス、入力デバイス、モニタ、表示デバイス、スピーカ、光学ドライブ、記憶デバイス、ユニバーサルシリアルバス接続、プリンタ、スキャナ、ネットワーク要素(例えば、ルータ、ファイアウォール、ネットワークアドレス変換器、ロードバランサ、仮想プライベートネットワーク(VPN)ゲートウェイ、動的ホスト構成プロトコル(DHCP)ルータなど)、または、仮想化サーバ301に接続されるか仮想化サーバ301と通信する任意のデバイスを含み得る。ハードウェア層310における物理メモリ316は、任意のタイプのメモリを含み得る。物理メモリ316は、データを記憶し得、いくつかの実施の形態においては、1つ以上のプログラム、または1組以上の実行可能命令を記憶し得る。
【0043】
図3は、ファームウェア312が仮想化サーバ301の物理メモリ316内に記憶されている実施の形態を表している。物理メモリ316に記憶されたプログラムまたは実行可能命令は、仮想化サーバ301の1つ以上のプロセッサ308によって実行することができる。
【0044】
仮想化サーバ301は、ハイパーバイザ302も含み得る。いくつかの実施の形態において、ハイパーバイザ302は、任意の数の仮想マシン332を作成および管理するために仮想化サーバ301上のプロセッサ308によって実行されるプログラムであり得る。ハイパーバイザ302は、仮想マシンモニタ、またはプラットフォーム仮想化ソフトウェアと称され得る。いくつかの実施の形態において、ハイパーバイザ302は、コンピューティングマシン上で実行される仮想マシンを監視するハードウェア、および/または実行可能命令の任意の組み合わせとすることができる。ハイパーバイザ302は、仮想化サーバ301上で実行されるオペレーティングシステム314内でハイパーバイザが実行される、タイプ2のハイパーバイザであり得る。その後、仮想マシンが、ハイパーバイザ302よりも上位のレベルで実行され得る。いくつかの実施の形態において、タイプ2のハイパーバイザは、タイプ2のハイパーバイザがユーザのオペレーティングシステムと対話するように、ユーザのオペレーティングシステムのコンテキスト内で実行され得る。他の実施の形態においては、仮想化環境内にある1つ以上の仮想化サーバ301が、代わりにタイプ1のハイパーバイザ(非図示)を含み得る。タイプ1のハイパーバイザは、ハードウェア層310内のハードウェアおよびリソースに直接アクセスすることにより、仮想化サーバ301上で実行され得る。すなわち、図示のとおり、タイプ2のハイパーバイザ302がホストオペレーティングシステム314を通じてシステムリソースにアクセスするのに対し、タイプ1のハイパーバイザは、ホストオペレーティングシステム314を通じないですべてのシステムリソースに直接アクセスし得る。タイプ1のハイパーバイザは、仮想化サーバ301の1つ以上の物理プロセッサ308上で直接実行され得、物理メモリ316に記憶されたプログラムデータを含み得る。
【0045】
ハイパーバイザ302は、いくつかの実施の形態において、オペレーティングシステム330または制御プログラム320がシステムリソースに直接アクセスするのをシミュレートする任意の方法で、仮想マシン332上で実行されるオペレーティングシステム330または制御プログラム320に仮想リソースを提供することができる。システムリソースとしては、物理デバイス306、物理ディスク304、物理プロセッサ308、物理メモリ316、および、仮想化サーバ301のハードウェア層310に含まれるその他任意の構成要素が挙げられるが、これらに限定されない。ハイパーバイザ302は、仮想ハードウェアのエミュレーション、物理ハードウェアのパーティショニング、物理ハードウェアの仮想化、および/またはコンピューティング環境へのアクセスを提供する仮想マシンの実行に使用され得る。さらに他の実施の形態においては、ハイパーバイザ302が、仮想化サーバ301上で実行される仮想マシン332のプロセッサスケジューリングおよびメモリパーティショニングを制御し得る。ハイパーバイザ302としては、カリフォルニア州パロアルトにあるVMWare社製のもの、オープンソースのXenProject.orgコミュニティが開発を統括するオープンソース製品であるXENPROJECTハイパーバイザ、マイクロソフト(Microsoft)が提供するHyperV、VirtualServer、仮想PCハイパーバイザなどが挙げられる。いくつかの実施の形態において、仮想化サーバ301は、ゲストオペレーティングシステムが実行され得る仮想マシンプラットフォームを作成するハイパーバイザ302を実行し得る。これらの実施の形態において、仮想化サーバ301は、ホストサーバと称され得る。かかる仮想化サーバの一例は、フロリダ州フォートローダーデールにあるシトリックス・システムズ社が提供しているCitrix Hypervisorである。
【0046】
ハイパーバイザ302は、ゲストオペレーティングシステム330が実行される1つ以上の仮想マシン332B~C(概して332)を作成し得る。いくつかの実施の形態において、ハイパーバイザ302は、仮想マシン332を作成するために、仮想マシンイメージをロードし得る。他の実施の形態において、ハイパーバイザ302は、仮想マシン332内でゲストオペレーティングシステム330を実行し得る。さらに他の実施の形態において、仮想マシン332は、ゲストオペレーティングシステム330を実行し得る。
【0047】
ハイパーバイザ302は、仮想マシン332を作成することに加え、少なくとも1つの仮想マシン332の実行を制御し得る。他の実施の形態において、ハイパーバイザ302は、仮想化サーバ301が提供する少なくとも1つのハードウェアリソース(例えば、ハードウェア層310内で利用可能な任意のハードウェアリソース)を抽象化したものを、少なくとも1つの仮想マシン332に提示し得る。他の実施の形態において、ハイパーバイザ302は、仮想マシン332が仮想化サーバ301で利用可能な物理プロセッサ308にアクセスする方法を制御し得る。物理プロセッサ308へのアクセスを制御することは、仮想マシン332がプロセッサ308にアクセスすべきかどうか、および物理プロセッサの能力が仮想マシン332にどのように提示されるかを判断することを含み得る。
【0048】
図3に示すとおり、仮想化サーバ301は、1つ以上の仮想マシン332をホストまたは実行し得る。仮想マシン332は、1組の実行可能命令であり、1組の実行可能命令は、プロセッサ308によって実行されると、仮想マシン332が物理コンピューティングデバイスとよく似たプログラムおよびプロセスを実行できるように物理コンピュータの動作を模倣し得る。
図3は、仮想化サーバ301が3つの仮想マシン332をホストする実施の形態を表しているが、他の実施の形態においては、仮想化サーバ301が任意の数の仮想マシン332をホストすることができる。ハイパーバイザ302は、いくつかの実施の形態において、仮想マシン332にとって利用可能な物理ハードウェア、メモリ、プロセッサ、および他のシステムリソースを表示する一意の仮想ビューを各仮想マシン332に提供し得る。いくつかの実施の形態において、一意の仮想ビューは、仮想マシンの許可、1つ以上の仮想マシン識別子へのポリシーエンジンの適用、仮想マシンにアクセスするユーザ、仮想マシン上で実行されるアプリケーション、仮想マシンによってアクセスされるネットワーク、またはその他任意の所望の基準のうちの1つ以上に基づき得る。例えば、ハイパーバイザ302は、1つ以上の安全でない仮想マシン332と、1つ以上の安全な仮想マシン332と、を作成し得る。安全でない仮想マシン332は、安全な仮想マシン332であればアクセスを許可され得るリソース、ハードウェア、メモリロケーションおよびプログラムにアクセスすることができない。他の実施の形態においては、ハイパーバイザ302が、仮想マシン332にとって利用可能な物理ハードウェア、メモリ、プロセッサ、および他のシステムリソースを表示する略同様の仮想ビューを各仮想マシン332に提供し得る。
【0049】
各仮想マシン332は、仮想ディスク326A~C(概して326)と、仮想プロセッサ328A~C(概して328)と、を含み得る。仮想ディスク326は、いくつかの実施の形態において、仮想化サーバ301の1つ以上の物理ディスク304を示す被仮想化ビュー、または仮想化サーバ301の1つ以上の物理ディスク304の一部分である。物理ディスク304を示す被仮想化ビューは、ハイパーバイザ302によって生成、提供、および管理することができる。いくつかの実施の形態においては、ハイパーバイザ302が、物理ディスク304を示す一意のビューを各仮想マシン332に提供する。そのため、これらの実施の形態においては、各仮想マシン332に含まれる特定の仮想ディスク326が、他の仮想ディスク326と比較したときに一意となり得る。
【0050】
仮想プロセッサ328は、仮想化サーバ301の1つ以上の物理プロセッサ308を示す被仮想化ビューであり得る。いくつかの実施の形態において、物理プロセッサ308を示す被仮想化ビューは、ハイパーバイザ302によって生成、提供、および管理することができる。いくつかの実施の形態において、仮想プロセッサ328は、少なくとも1つの物理プロセッサ308の同じ特性を略すべて有する。他の実施の形態においては、仮想プロセッサ308が、仮想プロセッサ328の特性の少なくとも一部が、対応する物理プロセッサ308の特性と異なるように、物理プロセッサ308を示す被修正ビューを提供する。
【0051】
図4をさらに参照すると、本明細書に記載されているいくつかの態様が、クラウドベースの環境で実装され得る。
図4は、クラウドコンピューティング環境(またはクラウドシステム)400の一例を表している。
図4で確認されるとおり、クライアントコンピュータ411~414は、クラウドシステムのコンピューティングリソース(例えば、ホストサーバ403a~403b(本明細書では概して「ホストサーバ403」と称される)、ストレージリソース404a~404b(本明細書では概して「ストレージリソース404」と称される)、およびネットワーク要素405a~405b(本明細書では概して「ネットワークリソース405」と称される))にアクセスするために、クラウド管理サーバ410と通信し得る。
【0052】
管理サーバ410は、1つ以上の物理サーバ上で実装され得る。管理サーバ410は、例えば、フロリダ州フォートローダーデールにあるシトリックス・システムズ社により、Citrix WorkspaceまたはOpenStackを特に稼働し得る。管理サーバ410は、例えば、ホストコンピュータ403、データ記憶デバイス404、およびネットワーク接続デバイス405など、クラウドのハードウェアおよびソフトウェアリソースを含む様々なコンピューティングリソースを管理し得る。クラウドのハードウェアおよびソフトウェアリソースは、プライベートかつ/またはパブリックな構成要素を含み得る。例えば、クラウドは、1つ以上の特定の顧客またはクライアントコンピュータ411~414によって、かつ/またはプライベートネットワークを経由して使用されるプライベートクラウドとして構成され得る。他の実施の形態においては、パブリッククラウド、またはパブリックとプライベートのハイブリッドクラウドが、オープンネットワークまたはハイブリッドネットワークを経由して他の顧客によって使用され得る。
【0053】
管理サーバ410は、クラウド事業者およびクラウド顧客がクラウドシステム400と対話し得るユーザインターフェースを提供するように構成され得る。例えば、管理サーバ410は、クラウド事業者がクラウドリソースの管理、仮想化層の設定、顧客アカウントの管理、および他のクラウド管理タスクの実施を可能にするために、1組のアプリケーションプログラミングインターフェース(API)および/またはユーザインターフェースを備えた1つ以上のクラウド事業者コンソールアプリケーション(例えば、ウェブベースまたはスタンドアロンのアプリケーション)を提供し得る。管理サーバ410は、例えば、クラウド内で仮想マシンを作成、変更、または破壊するリクエストなどのクラウドコンピューティングリクエストをクライアントコンピュータ411~414を介してエンドユーザから受信するように構成されたユーザインターフェースを備えた1組のAPIおよび/または1つ以上の顧客コンソールアプリケーションを含み得る。クライアントコンピュータ411~414は、インターネットまたは他の何らかの通信ネットワークを介して管理サーバ410に接続し得、管理サーバ410によって管理されるコンピューティングリソースのうちの1つ以上へのアクセスをリクエストし得る。クライアントのリクエストを受け、管理サーバ410は、クライアントのリクエストに基づき、クラウドシステムのハードウェア層内の物理リソースを選択してプロビジョニングするように構成されたリソースマネージャを含み得る。例えば、管理サーバ410および追加的なクラウドシステム構成要素は、ネットワーク(例えば、インターネット)を経由して、仮想マシンおよびそれらの動作環境(例えば、ハイパーバイザ、ストレージリソース、ネットワーク要素によって提供されるサービスなど)をクライアントコンピュータ411~414の顧客のためにプロビジョニング、作成、および管理するように構成され得、計算リソース、データ記憶サービス、ネットワーク接続能力、ならびにコンピュータプラットフォームおよびアプリケーションサポートを顧客に提供し得る。クラウドシステムは、セキュリティシステム、開発環境、ユーザインターフェースなど、種々の特定のサービスを提供するようにも構成され得る。
【0054】
特定のクライアント411~414は、例えば、同じエンドユーザに代わって仮想マシンを作成する異なるクライアントコンピュータ、または同じ会社や組織に属する異なるユーザなどに関連し得る。他の例においては、特定のクライアント411~414が、異なる会社や組織に属するユーザなどと無関係であり得る。無関係のクライアントの場合には、ある任意のユーザの仮想マシンまたはストレージに関する情報が、他のユーザから隠され得る。
【0055】
ここで、クラウドコンピューティング環境の物理ハードウェア層を参照すると、可用性ゾーン401~402(またはゾーン)とは、一まとまりの物理コンピューティングリソースのことであり得る。ゾーンは、コンピューティングリソースのクラウド全体の中で、他のゾーンから地理的に切り離され得る。例えば、ゾーン401は、カリフォルニア州に所在する第1のクラウドデータセンタであり得、ゾーン402は、フロリダ州に所在する第2のクラウドデータセンタであり得る。管理サーバ410は、可用性ゾーンのうちの1つ、または別の箇所に所在し得る。各ゾーンは、管理サーバ410など、ゾーンの外にあるデバイスとゲートウェイを通じてインターフェースする内部ネットワークを含み得る。クラウドのエンドユーザ(例えば、クライアント411~414)は、ゾーン間の区別を認識する場合としない場合がある。例えば、エンドユーザは、指定された量のメモリ、処理能力、ネットワーク能力を有する仮想マシンの作成をリクエストし得る。管理サーバ410は、ユーザのリクエストを受けて、仮想マシンがゾーン401からのリソースを使用して作成されたのか、ゾーン402からのリソースを使用して作成されたのかをユーザが知ることなく、仮想マシンを作成するためのリソースを割り当て得る。他の例においては、クラウドシステムが、特定のゾーンで、またはゾーン内の特定のリソース403~405上で仮想マシン(または他のクラウドリソース)が割り当てられるようにエンドユーザがリクエストできるようにし得る。
【0056】
この例においては、各ゾーン401~402が、例えば、物理ホスティングリソース(または処理リソース)、物理ネットワークリソース、物理ストレージリソース、スイッチ、およびクラウドコンピューティングサービスを顧客に提供する目的で使用され得る追加的なハードウェアリソースなど、様々な物理ハードウェア構成要素(またはコンピューティングリソース)403~405の配置構成を含み得る。クラウドゾーン401~402における物理ホスティングリソースは、仮想マシンインスタンスを作成およびホストするように構成され得る前記の仮想化サーバ301など、1つ以上のコンピュータサーバ403を含み得る。クラウドゾーン401または402における物理ネットワークリソースは、ファイアウォール、ネットワークアドレス変換器、ロードバランサ、仮想プライベートネットワーク(VPN)ゲートウェイ、動的ホスト構成プロトコル(DHCP)ルータなど、クラウド顧客にネットワークサービスを提供するように構成されたハードウェアおよび/またはソフトウェアを備える1つ以上のネットワーク要素405(例えば、ネットワークサービスプロバイダ)を含み得る。クラウドゾーン401~402におけるストレージリソースは、記憶ディスク(例えば、ソリッドステートドライブ(SSD)、磁気ハードディスクなど)と他の記憶デバイスとを含み得る。
【0057】
図4に示すクラウドコンピューティング環境例は、仮想マシンを作成および管理し、クラウド内の物理リソースを使用する顧客に他のサービスを提供するように構成された追加的なハードウェアおよび/またはソフトウェアリソースを有する(例えば、
図1~
図3に示すような)仮想化層も含み得る。仮想化層は、先に
図3に記載したとおり、ハイパーバイザを含み得ることに加え、ネットワークの仮想化、ストレージの仮想化などを提供するための他の構成要素も含み得る。仮想化層は、物理リソース層とは別の層であり得るか、物理リソース層を有する同じハードウェアおよび/またはソフトウェアリソースの一部または全部を共有し得る。例えば、仮想化層は、物理コンピューティングリソースを有する仮想化サーバ403のそれぞれにインストールされたハイパーバイザを含み得る。例えば、WINDOWS(登録商標) AZURE(ワシントン州レドモンドにあるマイクロソフト社)、AMAZON EC2(ワシントン州シアトルにあるアマゾンドットコム社(Amazon.com Inc.))、IBM BLUE CLOUD(ニューヨーク州アーモンクにあるIBM社)など、既知のクラウドシステムが代替として使用され得る。
【0058】
統合通知フレームワーク
図5は、例示的な統合アプリケーション通知フレームワークを描いている。いくつかの実施の形態において、統合アプリケーション通知環境500は、仮想マシン502からの通知を収集し、通知のすべてまたは一部をクライアントデバイス503に中継する統合アプリケーション通知フレームワーク501を含み得る。具体的には、通知は、仮想マシン502上で実行されるアプリケーション504によって発行され得、クライアントデバイス503のワークスペースに転送されてクライアントデバイス503のユーザ506に通知され得る。仮想マシン502は、例えば、
図3の仮想マシン332のうちの1つであり得る。クライアントデバイス503は、
図1のネットワークノード103、105、107、109または
図2の端末240のうちの1つであり得る。クライアントデバイス503は、ユーザ506が仮想マシン502、オペレーティングシステム505、および/またはアプリケーション504にアクセスできるワークスペース環境(ワークスペースまたは仮想環境とも称される)を有し得る。本開示を通じて、クライアントデバイス503は、ハードウェア(例えば、デスクトップコンピュータやモバイルデバイスなどの物理デバイスなど)および/またはハードウェア上で稼働する任意のソフトウェア(例えば、ワークスペース環境)を指し得る。ワークスペースは、ウェブインターフェース、デスクトップアプリケーション、モバイルアプリケーションなどであり得る。仮想マシン502上で稼働するアプリケーション504および/またはオペレーティングシステム505は、クライアントデバイス503がオンラインであり、仮想マシン502に接続されている(例えば、リモートセッションに参加している)と、クライアントデバイス503に通知を直接送信でき得るが、クライアントデバイス503が、オフラインであるなどの理由でアプリケーション504またはオペレーティングシステム505との通信に利用できないと、アプリケーション504およびオペレーティングシステム505は、かかる直接通知配信ができない場合がある。このような場合、統合アプリケーション通知フレームワーク501は、アプリケーション504と関連付けられた通知を受信またはインターセプトし得、それらのメッセージをリアルタイムまたは後でクライアントデバイス503に転送し得る。
【0059】
統合アプリケーション通知フレームワーク501は、クライアントデバイス503がアプリケーション504および/または仮想マシン502と能動的に通信していなくても、クライアントデバイス503がアプリケーション504と関連付けられた通知を受信できるようにするソフトウェアおよび/またはハードウェア構成要素の集合であり得る。例えば、統合アプリケーション通知フレームワーク501の全部または一部は、
図2のサーバ(複数可)206またはクライアントマシン(複数可)240で稼働中であり得る。
図5は、説明を単純化するために、統合アプリケーション通知フレームワーク501を、単一の仮想インスタンスから通知を受信し、単一のクライアントデバイス503に通知を転送するものとして表しているが、統合アプリケーション通知フレームワーク501は、複数の仮想マシンから通知を受信し得、対応する複数のクライアントデバイスに通知を転送し得る。説明を明確にするために、本開示では、統合アプリケーション通知フレームワーク501が
図3のハイパーバイザ302に含まれるものと想定される。ただし、いくつかの実施の形態において、統合アプリケーション通知フレームワーク501の全部または一部は、
図3のハイパーバイザ302、オペレーティングシステム314、制御プログラム320、および/またはゲストオペレーティングシステム330に含まれ得る。他の実施の形態において、統合アプリケーション通知フレームワーク501は、クライアントマシン(複数可)240、サーバ(複数可)206、および仮想化サーバ301から論理的および/または物理的に分かれている実体(例えば、サーバ)の一部であり得る。例えば、統合アプリケーション通知フレームワーク501は、管理サーバ410または他のデバイスに所在し得る。
【0060】
統合アプリケーション通知フレームワーク501は、仮想マシン502からの通知を受信する少なくとも3つの通信チャネル(通知チャネルとも称される)を有し得る。これらの通信チャネルは、通知API507、オペレーティングシステムレベル通知インターセプト508、およびサービス間通知509を含み得る。これらは独立した通知チャネルであり得、それによって様々なタイプの通知が取得および収集され得る。配信のためにどの通信チャネルまたは経路が使用されるかに関係なく、通知は、ネットワーク512(例えば、インターネット)を介して統合アプリケーション通知フレームワーク501に配信され得る。例えば、アプリケーション504は、ネイティブ通知APIコール(すなわち、通知API507)を実施し得、インターネット、無線ブロードバンド通信ネットワーク、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、仮想ネットワークなどを経て通知を送信し得る。いくつかの実施の形態において、例えば、仮想マシン502および統合アプリケーション通知フレームワーク501が同じ物理サーバ内に所在すれば、通信チャネル507、508、509のうちの1つ以上は、ネットワーク512を横断する必要がないかもしれない。
【0061】
統合アプリケーション通知フレームワーク501は、受信した通知をクライアントデバイス503に転送する前にさらに処理する通知フィルタリング・スケジューリングモジュール510をさらに含み得る。特に、通知フィルタリング・スケジューリングモジュール510は、ポリシーまたは基本設定に従ってメッセージをトリアージおよびフィルタリングし得る。ポリシーまたは基本設定は、(例えば、管理者やユーザによって)事前に決められ得るか、動的に更新され得る。例えば、フィルタリングポリシーは、冗長または反復的なメッセージが破棄され、クライアントデバイス503に転送されないように規定し得る。フィルタリングポリシーは、例えば、メッセージ履歴(例えば、特定のタイプの繰り返されたメッセージをブロックすること)、またはユーザ設定(例えば、特定のアプリケーションから発信されるすべてのメッセージをホワイトリストに登録すること)に従って更新され得る。通知フィルタリング・スケジューリングモジュール510は、通知が統合アプリケーション通知フレームワーク501で受信される時刻よりも後に、1つ以上の通知をクライアントデバイス503に転送することも決定し得る。言い換えれば、統合アプリケーション通知フレームワーク501は、ポリシーまたは設定に従って、クライアントデバイス503への通知の配信をスケジューリングまたは再スケジューリングし得る。例えば、ユーザ506が通知を参照できないときに通知が統合アプリケーション通知フレームワーク501に到着すると、通知フィルタリング・スケジューリングモジュール510は、メッセージの配信を、ユーザ506が通知を参照できるようになる将来時間にスケジューリングし得る。別の例として、クライアントデバイス503が電源オフやオフラインなどの理由で通知を受信できないと(例えば、統合通知フレームワーク501がクライアントデバイス503からの通知受信承認メッセージを受信しないと)、統合アプリケーション通知フレームワーク501は、配信を将来時間に再スケジューリングして再試行し得る。
【0062】
いくつかの通知は、通知API507を介して受信され得る。通知API通知チャネル507は、統合アプリケーション通知フレームワーク501のネイティブAPIに基づき得るため、ネイティブ通知APIとも称され得る。APIとは、アプリケーション、オペレーティングシステム、サービスなどが、同じまたは他のアプリケーション、オペレーティングシステム、サービスなどの機能またはデータにアクセスできるように設計された関数、メソッド、プロシージャ、サブルーチン、定義、プロトコル、および/またはデータのセットを指す。統合アプリケーション通知フレームワーク501のネイティブAPI(独自APIとも称される)は、統合アプリケーション通知フレームワーク501の機能にアクセスするためだけに記述または設計されたAPIであり得る。このネイティブAPIを利用するように設計されているアプリケーション504(例えば、APIは、アプリケーション504に統合されている)は、通知を発行するための適切なAPIコール(例えば、SendNotif( ))を実施して、通知メッセージを統合アプリケーション通知フレームワーク501に直接送信し得る。
【0063】
他の通知は、オペレーティングシステムレベル通知インターセプト508を介して受信し得る。オペレーティングシステムレベル通知インターセプト508は、オペレーティングシステム505に統合されている通知APIに依存して、アプリケーション504からオペレーティングシステム505に送信される任意のオペレーティングシステムレベルの通知をインターセプトし得る。オペレーティングシステム505は、
図3のゲストオペレーティングシステム330などの仮想オペレーティングシステムインスタンスであり得る。オペレーティングシステム505に統合された通知API(OSレベル通知APIとも称される)は、オペレーティングシステム505によって提供されるAPIの一部であって、オペレーティングシステム505上で稼働するアプリケーションがコールを開始し、オペレーティングシステム505に通知を送信できるようにするものであり得る。例えば、カレンダーアプリケーションが、カレンダーイベントが差し迫っていることをオペレーティングシステム505に通知し得るか、インスタントメッセージング(IM)アプリケーションが、別のユーザからのIMリクエストの着信をオペレーティングシステム505に通知し得る。別の例においては、ナビゲーションアプリケーションが、全地球測位システム(GPS)信号を受信することをオペレーティングシステム505に通知し、許可を求め得る。オペレーティングシステムレベル通知APIの例としては、ワシントン州レドモンドにあるマイクロソフト社が製造したWindows(登録商標)オペレーティングシステムのトースト/タイル/バッジ通知API、およびLinux(登録商標)オペレーティングシステムのlibnotifyライブラリなどがある。
【0064】
オペレーティングシステムレベルの通知は、通知インターセプト層513によってインターセプトされ得る。通知インターセプト層513は、オペレーティングシステム505上で稼働するアプリケーションによって実施されるあらゆるOS APIコールの有無を監視し、さらなる処理のためにそれらのAPIコールをインターセプトまたは覗き見る(peek)ことを任うアプリケーション、プログラム、サービス、バックグラウンドプロセス、および/またはフォアグラウンドプロセスであり得る。APIコールを処理することは、アプリケーションによって実施された元のAPIコールのシャドウ通知を作成すること、および/またはその元をオペレーティングシステム505に転送することを含み得る。通知インターセプト層513は、アプリケーション504とオペレーティングシステム505との間の仮想マシン502(例えば、OS通知API)に実装され得る。代替として、通知インターセプト層513は、オペレーティングシステム505の一部であり得る。他のいくつかの実施の形態において、通知インターセプト層513は、統合アプリケーション通知フレームワーク501に含まれ得る。アプリケーション504によって通知APIが呼び出されるたびに、元の通知コールと内容が同一または略同様のシャドウ通知は、通知インターセプト層513によって生成され得、統合アプリケーション通知フレームワーク501に送信され得る。シャドウ通知は、ネイティブ通知API通知チャネル507に言及しながら上述したとおり、統合アプリケーション通知フレームワーク501のネイティブ通知API(オペレーティングシステム505のOSレベル通知APIとは別個であり得る)に準拠し得る。例えば、シャドウ通知は、元の通知コールの複製であり得るか、元の通知コールに含まれる情報の一部のみを格納し得る。通知インターセプト層513は、インターセプトされたOSレベルAPIコールの全部または一部のみを対象とするシャドウ通知を作成し得る。例えば、通知インターセプト層513は、一定期間内の重複コールや繰り返しコールなど、一部のAPIコールを無視または除外するようにプログラムされ得る。他のAPIコールは、それらのタイプ、優先度、サイズなどに基づいて無視または除外され得る。代替として、通知インターセプト層513は、シャドウ通知を生成して統合アプリケーション通知フレームワーク501に送信する代わりに、アプリケーション504からの元のAPIコールをインターセプトして、元のAPIコールを統合アプリケーション通知フレームワーク501に転送し得る。
【0065】
さらに他の通知は、サービス間通知チャネル509を介して受信され得る。サービス間通知チャネル509とは、あるサービス(例えば、バックエンドサービス)から別のサービス(例えば、統合アプリケーション通知フレームワーク501)に通知メッセージを配信するための通信チャネルを指す。サービス間通知509は、統合アプリケーション通知フレームワーク501に直接通知を送信するのに、バックエンドサービス511(バッキングサービスとも称される)に依存し得る。特に、アプリケーション通知は、アプリケーションと関連付けられた1つ以上のバックエンドサービスによって生成およびプッシュされ得る。例えば、バックエンドサービス511は、メッセージまたは通知をアプリケーション504(例えば、電子メールクライアント)にプッシュするメールサーバであり得、アプリケーション504はその後、独自の通知メッセージをオペレーティングシステム505に送信する。ただし、統合アプリケーション通知フレームワーク501は、バックエンドサービス511が統合アプリケーション通知フレームワーク501に直接通知を送信できるように、そのインターフェース(例えば、サービス間通知チャネル509)をバックエンドサービス511に対して露出し得る。バックエンドサービス511は、クライアントデバイス503、アプリケーション504、オペレーティングシステム505、および/または仮想マシン502にサービスを提供するサービスプロバイダ(例えば、サードパーティのサーバ)であり得る。そのため、バックエンドサービス511は、様々なハードウェアおよび/またはソフトウェア構成要素で構成され得、例えば、アプリケーション504にサービスを提供するウェブサーバ、メールサーバ、アプリケーションサーバ、メッセージングサーバ、ロケーションサーバ、コンテンツプロバイダ、オンラインストリーミングサービス、ソーシャルメディアサービス、金融機関、電気通信サービス、インターネットサービスプロバイダ(ISP)、Software-as-a-Service(SaaS)プロバイダなどを含み得る。バックエンドサービス511は、アプリケーション504および統合アプリケーション通知フレームワーク501の両方に、別々の通知および重複の可能性がある通知を、同時または連続で送出し得る。代替として、バックエンドサービス511が通知メッセージを統合アプリケーション通知フレームワーク501に直接送信する代わりに、仮想マシン502が、バックエンドサービス511によって送信された任意の通知メッセージを、統合アプリケーション通知フレームワーク501に転送し得る。サービス間通知メッセージは、インターネットなどのネットワーク512を介して送信され得る。バックエンドサービス511は、仮想マシン502の一部ではないので、仮想マシン502がオフラインなどで通信できない状態であっても、バックエンドサービス511から発信された通知は、統合アプリケーション通知フレームワーク501によって受信され得る。例えば、統合アプリケーション通知フレームワーク501のネイティブAPIを統合したソーシャルメディアサービスなどのバックエンドサービス511は、仮想マシン502がオフラインまたはサービス停止中であっても、統合アプリケーション通知フレームワーク501に友達リクエスト通知を送信し得る。他の例において、サービス間通知メッセージは、電子メールサーバからの新しい電子メールアラート、インスタントメッセージングサーバからの新しいインスタントメッセージアラート、ファイル転送プロトコル(FTP)サーバからのダウンロード完了メッセージ、オンライン販売業者からの取引アラートなどであり得る。その後、統合アプリケーション通知フレームワーク501は、友達リクエスト通知をクライアントデバイス503に転送し得る。統合アプリケーション通知フレームワーク501はまた、アプリケーションがすべてのユーザまたはユーザのグループに簡単に通知を送信できるように、通知のマルチキャストをサポートし得る。例えば、サービス間通知チャネル509を通る通知メッセージは、アプリケーション504のバックエンドサービス511によって提供されるAPIを介して、複数のユーザに送出され得る。
【0066】
3つの通信チャネル(すなわち、通知API507、オペレーティングシステムレベル通知インターセプト508、およびサービス間通知509)は、別々または同時に用いられ得る。本明細書に例示された3つの通信チャネルは、論理的には互いに別個であっても、これらの通信チャネルのうちの2つ以上は、物理的に1つの通信チャネルに組み合わせられ得る。例えば、通知APIコール507およびOSレベルインターセプト508は、仮想マシン502と統合アプリケーション通知フレームワーク501との間で同じ物理通信チャネルを共有し得る。通知API507およびサービス間通知509の通信チャネルは、サードパーティ(例えば、アプリケーション開発者やバックエンドサービスプロバイダなど)が特定のコードまたは命令(例えば、統合アプリケーション通知フレームワーク501のネイティブAPI)を統合することを必須とし得るのに対し、オペレーティングシステムレベル通知インターセプト508は、かかる要件を課さない場合がある。加えて、通知API507およびオペレーティングシステムレベル通知インターセプト508の通信チャネルが、アプリケーション504が(例えば、バックグラウンドで)稼働されていることを必須とし得るのに対し、サービス間通知509の通信チャネルは、サービス間通知509が、仮想マシン502から独立して動作するのが典型的であるバックエンドサービス511から発信されるため、アプリケーション504および/または仮想マシン502がシャットダウンされていても動作可能であり得る。例えば、電子メールサーバなどのバックエンドサービス511がユーザ506向けの新しい電子メールを受信すると、電子メールサーバは、仮想マシン502がオフラインまたは動作不能であっても、サービス間通知チャネル509を通じて統合アプリケーション通知フレームワーク501に直接新しい電子メールアラートメッセージを送信し、最終的にはクライアントデバイス503に送信し得る。さらに、アプリケーション504と関連付けられた通知がサービス間通知チャネル509を介してバックエンドサービス511から受信されても、アプリケーション504が仮想マシン502上で現在稼働していない場合には、統合アプリケーション通知フレームワーク501は、ユーザアクセスを高速化するために、アプリケーション504を仮想マシン502(例えば、バックグラウンドプロセスとして稼働している)上で稼働させ得る(例えば、アプリケーション504を起動するためにメッセージまたはコマンドを仮想マシン502に送信する)。例えば、ユーザ506が、統合アプリケーション通知フレームワーク501(すなわち、サービス間通知509)を介してバックエンドサービス511からクライアントデバイス503で新しい電子メールアラートメッセージを受信すると、統合アプリケーション通知フレームワーク501は、仮想マシン502内でアプリケーション504を事前に起動して、ユーザ506がクライアントデバイス503内のワークスペースを介して仮想マシン504にアクセスする際に、ユーザ506がアプリケーション504を手動で起動するのではなく、アプリケーション504が仮想マシン502内で既に稼働しており、新しい電子メールを表示する準備ができているようにし得る。同様に、統合アプリケーション通知フレームワーク501はまた、アプリケーション504と関連付けられた通知を、サービス間通知チャネル509を介してバックエンドサービス511から受信したことを受けて、オペレーティングシステム505および/または仮想マシン502がまだ稼働していなければ、それらを稼働させ得る。特に、統合アプリケーション通知フレームワーク501はまず、オペレーティングシステム505および/または仮想マシン502が現在動作可能(例えば、稼働中、オンライン、電源オンなど)であるかどうかを判断し、動作可能でなければ、オペレーティングシステム505および/または仮想マシン502を動作可能にし得る。これは、オペレーティングシステム505および/または仮想マシン502の起動をトリガする特定のメッセージまたはコマンド(例えば、データパケット)を、仮想マシン502または仮想マシン502と関連付けられたハイパーバイザに伝送することによって達成され得る。かかるメッセージまたはコマンドは、先述の3つの通信チャネルのうちの1つを介して、または先述の通信チャネルとは別の通信チャネルを介して送信され得る。
【0067】
図6は、本明細書に記載されている1つ以上の態様に従って通知を受信するクライアントデバイスの例示的なユーザインターフェース(UI)を描いている。クライアントデバイスは、例えば、
図5のクライアントデバイス503であり得る。クライアントデバイスのユーザは、
図5の仮想マシン502など1つ以上の仮想マシンにアクセスするために、クライアントデバイス上のワークスペース環境600(クライアントワークスペースまたは仮想環境とも称される)などのユーザインターフェースにアクセスし得る。クライアントワークスペースは、ユーザが仮想アプリケーションと対話できるフロントエンドであり得る。ワークスペース環境600は、例えば、ウェブブラウザに描画されたウェブインターフェース、モバイルデバイス上で稼働するモバイルアプリ、PC上で稼働するデスクトップアプリケーション、クライアントデバイスのオペレーティングシステムに統合された(例えば、Windows(登録商標) File ExplorerまたはmacOS Finderに統合された)モジュールであり得る。ワークスペース環境600は、スタンドアロンのアプリケーションの一部、またはサーバと通信するクライアントアプリケーションであり得る。具体的には、ワークスペース環境600は、
図4の管理サーバ410などのサーバによってクライアントデバイスに提供され得る。
【0068】
クライアントデバイスのユーザは、リモートデスクトップ(例えば、オペレーティングシステム505)、仮想アプリケーション(例えば、アプリケーション504)などにアクセスするために、ワークスペース環境600と対話し得る。
【0069】
図6に示す例示的な実施の形態においては、ワークスペース環境600により、ユーザ(例えば、「John Smith」)がサインインし、仮想デスクトップ環境601A、601B、601C(概して601)を表すUI要素(例えば、アイコン)のうちの1つにアクセスすることができ得る。例えば、仮想デスクトップ601Aは、Windows(登録商標) 10オペレーティングシステムの仮想インスタンスであり得、仮想デスクトップ601Bは、macOSオペレーティングシステムの仮想インスタンスであり得、仮想デスクトップ601Cは、Linux(登録商標)オペレーティングシステムの仮想インスタンスであり得る。そのため、ユーザがワークスペース環境600上で、例えば仮想デスクトップ601Aを選択すると、遠隔地に所在するコンピューティングデバイス上で稼働しているWindows(登録商標) 10オペレーティングシステムの仮想インスタンスのリモートデスクトップグラフィカルユーザインターフェース(GUI)が起動し得、クライアントデバイス上に表示され得る。
【0070】
加えて、ワークスペース環境600は、仮想アプリケーション602A、602B(概して602)を表すUI要素(例えば、アイコン)も含み得る。例えば、仮想アプリケーション602Aは、遠隔地に所在するコンピューティングデバイス(例えば、サーバ206)によって提供される仮想マシン(例えば、仮想マシン502)上で稼働している電子メールアプリケーションであり得る。他の例において、仮想アプリケーション602Bは、カレンダーアプリケーションであり得る。仮想アプリケーション602Aおよび仮想アプリケーション602Bは、同じ仮想マシン上または別々の仮想マシン上で稼働中であり得る。そのため、ユーザがワークスペース環境600上で、例えば仮想アプリケーション602Aを選択すると、クライアントデバイスは、遠隔地に所在するコンピューティングデバイス(例えば、サーバ206)上で実行中の電子メールアプリケーションの対応仮想インスタンスによって生成された出力を表示し得る。
【0071】
ワークスペース環境600は、
図1の統合アプリケーション通知フレームワーク501などの統合アプリケーション通知フレームワークから通知を受信し得る。通知は、前記3つの通信チャネルのどれが通知の配信に使用されたかに応じて、アプリケーション、オペレーティングシステムインスタンス、またはバックエンドサービスから発信されたものであり得る。ワークスペース環境600は、通知を受信すると、通知をユーザに提示し得る。例えば、通知は視覚的に表示されたり(例えば、テキスト、アイコン、ポップアップ、ダイアログボックス、ステータスバー、トースト、タイル、バッジ、アラート、カウンタなど)、聴覚的に再生されたり(例えば、アラーム、着信音、オーディオアラートなど)し得る。
図6に示す例示的な実施の形態において、通知は、バッジ603A、603B、603C、603D(概して603)およびステータスバー604として提示されている。
【0072】
バッジ603A、603B、603C、603Dは、それぞれの仮想デスクトップおよび仮想アプリケーションから受信はしたが消去されてはいない通知の数をそれぞれ示し得る。そのため、例えば、バッジ603Aは、仮想デスクトップ601Aからの保留中の通知が現在2件あることを示し得る。これらの通知は、仮想デスクトップ601A(すなわち、オペレーティングシステムの仮想インスタンス)自体から、または仮想デスクトップ601A上で稼働しているアプリケーションのうちのいずれか1つから発信されたものであり得る。別の例において、バッジ603Bは、仮想アプリケーション602Aからの保留中の(すなわち、消去されていない)通知が現在29件あることを示し得る。具体的には、これらの通知は、29件の新しい未読電子メールメッセージを表し得る。さらに、仮想デスクトップ601Bと関連付けられた通知バッジがないということは、仮想デスクトップ601Bと関連付いた受信通知がないということ、またはその通知がすべて消去されたことを示し得る。最後に、ワークスペース環境600は、ステータスバー604などにより、グローバルな通知メッセージを表示し得る。
【0073】
図6に表す例示的な実施の形態においてはバッジ603が使用されているが、他の方法が使用されて、仮想デスクトップ環境601および/または仮想アプリケーション602に関する通知の有無を示し得る。例えば、仮想デスクトップ環境601および/または仮想アプリケーション602を表すアイコンは、保留中の(すなわち、消去されていない)通知の有無を示すために、強調、色付け、陰影付け、アニメーション、拡大、縮小などが行われ得る。アイコンは、通知の数および/または通知の優先度に応じて、種々の方法で視覚的に変更され得る。例えば、通常の優先度の通知を有するアイコンは、緑色のバッジで表示され得、優先度の高い通知を有する別のアイコンは、赤色のバッジで表示され得る。バッジ603は、アイコンの上、下、左、右など、またはアイコンの上を覆って位置し得る。加えて、アイコンは、通知に基づいて自動的に再配置され得る。例えば、通知回数が最多のアイコンは、最初のページの左上位置など、ユーザにとって最も目につきやすい位置に配置され得、残りのアイコンは降順に配置され得る。いくつかの例示的な実施の形態においては、通知を有するアイコンをユーザが選択すると、通知メッセージの内容が画面に表示され得る。いくつかの例示的な実施の形態においては、通知を有するアイコンの上にマウスポインタが来るか、アイコンの上でロングタッチ入力(すなわち、タッチ&ホールド)を受けると、通知メッセージのプレビュー(例えば、部分的なメッセージ)が表示され得る。
【0074】
いくつかの基本的なシステム構成要素および概念を開示したところで、本開示は、
図7および
図8に示す例示的な方法の実施の形態に移る。明確化のために、本方法は、本方法を実施するように構成された、
図5に示すような統合アプリケーション通知環境500の観点から説明される。ただし、コンピューティング環境200、仮想化サーバ301、クラウドコンピューティング環境400など、上述した他のデバイスまたはシステムのいずれもが、本明細書に開示されたどのステップをも実施し得る。本明細書に概説されているステップは例示的なものであり、特定のステップを除外、追加、または改変する組み合わせを含め、任意の組み合わせで実装することができる。例えば、
図7の動作701、702、703は、任意の順序で実施され得るか、動作701、702、703のうちの2つ以上が同時に実施され得る。
【0075】
図7は、統合アプリケーション通知フレームワークを提供するための例示的な方法を描いている。
図7の方法例は、統合アプリケーション通知フレームワーク501などの統合アプリケーション通知フレームワークによって実施され得る。まず、統合アプリケーション通知フレームワークは、利用可能な通信チャネルのうちの1つを介して受信する通知があるかどうかを確認し得る。通知の確認および受信は、同期的にも非同期的にも実施され得る。統合アプリケーション通知フレームワークは、保留中の通知があるかどうかを周期的に(例えば、1秒、10秒、1分、5分、1時間ごとなどに)ポーリングし得るか、通知は、統合アプリケーション通知フレームワークにプッシュされ得る。
【0076】
統合アプリケーション通知フレームワークは、通知APIチャネルを介して受信する通知があるかどうかを判断し得る(701)。受信する通知が1件以上ある場合、方法は動作704へと進む。受信する通知がない場合、統合アプリケーション通知フレームワークは、オペレーティングシステムレベルインターセプトチャネルを介して受信する通知があるかどうかを判断し得る(702)。受信する通知が1件以上ある場合、方法は動作704へと進む。受信する通知がない場合、統合アプリケーション通知フレームワークは、サービス間通知チャネルを介して受信する通知があるかどうかを判断し得る(703)。受信する通知が1件以上ある場合、方法は動作701に戻り、統合アプリケーション通知フレームワークが、保留中の通知の有無を引き続き監視する。
【0077】
動作704において、統合アプリケーション通知フレームワークは、複数の通信チャネルのうちの1つを介して、仮想アプリケーションと関連付けられた通知を受信し得る。複数の通信チャネルは、ネイティブ通知APIチャネル、オペレーティングシステムレベル通知インターセプトチャネル、および/またはサービス間通知チャネルを含み得る。
【0078】
統合アプリケーション通知フレームワークがネイティブ通知APIチャネルを介して通知を受信するためには、仮想アプリケーションがAPIコールをリクエストする必要があり得る。例えば、アプリケーションは、特定のイベント(例えば、新しい電子メールの受信、新しいインスタントメッセージの受信、ダウンロードの完了、重大なエラーなど)に遭遇すると、統合アプリケーション通知フレームワークによって提供される提供するAPIに従ってコール(例えば、SendNotif( ))を実施し得る。その後、適切な通知メッセージ(例えば、データパケット)が、APIに従ってアプリケーションから統合アプリケーション通知フレームワークに伝送され得る。通知メッセージは、インターネットなどのネットワークを介して伝送され得る。
【0079】
オペレーティングシステムレベル通知インターセプトチャネルを介して通知が受信されるとき、通知は、仮想アプリケーションが実行されている仮想オペレーティングシステムから受信される。通知は、仮想アプリケーションが仮想オペレーティングシステムに送信する仮想通知に基づいて生成され得る。仮想通知とは、仮想アプリケーションが仮想オペレーティングシステムに対して生成するオペレーティングシステムレベルの通知メッセージ(例えば、Windows(登録商標)のトースト/タイル/バッジAPIやLinux(登録商標)のlibnotifyライブラリ)のことを指す。通知(例えば、シャドウ通知)は、仮想通知をインターセプトした後、通知インターセプト層(例えば、仮想オペレーティングシステムおよび/または仮想マシン上で実行中のアプリケーション、サービス、および/またはプロセス)によって生成され得る。
【0080】
通知がサービス間通知チャネルを介して受信されるとき、通知は、仮想アプリケーションにサービスを提供するバックエンドサービス(例えば、ウェブサーバ、電子メールサーバ、コンテンツサーバなどの、サードパーティのサーバ)から受信され得る。
【0081】
統合アプリケーション通知フレームワークは、受信した通知の識別子(ID)を判断し得る。識別子は、通知と関連付けられた仮想アプリケーションおよび/またはバックエンドサービスを示し得る。例えば、識別子は、特定の名前空間内でアプリケーションを一意に識別する英数字の文字列であり得る。識別子は、送信者(例えば、アプリケーション、通知インターセプト層、バックエンドサービスなど)によって通知に挿入され得、統合アプリケーション通知フレームワークによって抽出され得る。統合アプリケーション通知フレームワークは、受信した識別子を、識別子とアプリケーションとの間の関連付け記憶するデータベースに記憶し得る。データベースは後に、例えば、同じアプリケーションから発信された重複通知を特定する目的で使用され得る。
【0082】
統合アプリケーション通知フレームワークは、受信した通知をフィルタリングし得る(705)。言い換えれば、受信した通知がトリアージされ、特定の条件または閾値を満たさない通知が除外され得る。例えば、仮想アプリケーションと関連付けられた通知が、複数の通信チャネルのうちの1つを介して受信された後、統合アプリケーション通知フレームワークは、通知がフィルタリング基準を満たすかどうかを判断し得る。フィルタリング基準は、通知タイプ(例えば、トースト、バッジ、ポップアップなど)、通信チャネルタイプ(例えば、通知API、オペレーティングシステムレベルのインターセプト、サービス間通知など)、アプリケーションタイプ(例えば、電子メールクライアント、インスタントメッセンジャー、カレンダーアプリなど)、時刻(例えば、受信時刻)、優先度(例えば、高優先度、通常の優先度、低優先度など)、および/または重複(例えば、重複または同様の通知が、既に最近受信されたかどうか)を含み得る。通知がフィルタリング基準を満たさないと、通知は破棄されるため、クライアントワークスペースに送信されないことがある。フィルタリングプロセスは、受信した通知に含まれる識別子に基づいて実施され得る。
【0083】
その後、統合アプリケーション通知フレームワークは、受信した通知をクライアントワークスペースに送信し得る(706)。クライアントワークスペースは、ウェブクライアント、アプリケーション、サービス、および/またはオペレーティングシステムであり得る。統合アプリケーション通知フレームワークは、仮想アプリケーションに対応するアプリケーション識別子(ID)、通知タイプ(例えば、トースト、バッジ、ポップアップなど)、タイムスタンプ、通知優先度情報など、その他の関連情報も送信し得る。通知を受信した通信チャネルタイプに基づいて、送信される追加情報が決定され得る。統合アプリケーション通知フレームワークは、通知を直ちにクライアントワークスペースに送信することの代替として、特定の時期(例えば、月曜日の午前6時や12時間後など)にクライアントワークスペースに通知を送信するようにスケジューリングし得る。クライアントワークスペースで通知が受信されると、ワークスペースは通知を表示し得る(707)。例えば、通知は、テキスト、ポップアップ、ダイアログボックス、ステータスバー更新、バッジ、トースト、アイコン、タイル、アラート、カウンタなとして表示され得る。通知は、部分的に(例えば要約として)表示され得るか、完全に表示され得る。
【0084】
通知がサービス間通知チャネルを介して受信された場合(708)、統合アプリケーション通知フレームワークは、仮想アプリケーションを起動し得る(709)。言い換えれば、統合アプリケーション通知フレームワークは、仮想アプリケーションがまだ稼働していなければ、アプリケーションのユーザアクセスを高速化するために、仮想アプリケーションをフォアグラウンドプロセスまたはバックグラウンドプロセスとして実行させ得る。統合アプリケーション通知フレームワークはまず、仮想アプリケーションが仮想マシン上で既に実行中であるかどうかを判断し、仮想アプリケーションが実行中でない場合に限り、仮想アプリケーションを起動させ得る。加えて、サービス間通知メッセージが受信されると、ファイルのダウンロード、アプリケーションの終了、関連アプリケーションの起動など、仮想マシン、オペレーティングシステム、および/またはアプリケーションによる他の適切なアクションが統合アプリケーション通知フレームワークによってトリガされ得る。例えば、デスクトップアプリケーションの新しいアップデートがファイルサーバから入手可能になると、サーバは、統合アプリケーション通知フレームワークを介してクライアントデバイスにサービス間通知を送信し得る。このとき、統合アプリケーションフレームワークは、ユーザが通知に反応する前でもアプリケーションのアップデートをダウンロードおよび/またはインストールできるように、仮想マシン上でデスクトップアプリケーションも起動させ得る。通知がサービス間通知チャネルを介して受信されなかった場合、方法は動作710へと進む。
【0085】
統合アプリケーション通知フレームワークは、送信された通知を受けて、クライアントワークスペースが受信承認を送信したかどうかを判断し得る(710)。クライアントワークスペースへの通知の送信が失敗した場合(例えば、受信承認が閾値時間制限内に受信されなかった場合)には、通知が(例えば、統合アプリケーション通知フレームワークに)保存され、再試行メカニズムが適用され得る。例えば、通知は、直ちに再送され得る(706)か、後でクライアントワークスペースに再送されるようにスケジュールされ得る。ただし、閾値時間制限内にクライアントワークスペースから受信承認を受け取った場合、統合アプリケーション通知フレームワークは、通知を消去済みとしてマークし得るとともに、統合アプリケーション通知フレームワークから通知を削除し得る。代替として、通知が消去済みとしてマークされ得、クライアントワークスペースのユーザが通知を承認した後でようやく削除され得る。
【0086】
図8は、クライアントワークスペースによって通知を受信するための例示的な方法を描いている。
図8の方法例は、クライアントデバイス503などのクライアントワークスペースによって実施され得る。クライアントワークスペースは、
図5の統合アプリケーション通知フレームワーク501などの統合アプリケーション通知フレームワークから通知を受信し得る(801)。クライアントワークスペースは、受信承認を統合アプリケーション通知フレームワークに送信し得る。クライアントワークスペースは、通知に含まれるアプリケーションIDを抽出して(802)、アプリケーションIDが、クライアントワークスペースと関連付けられているアプリケーションのうちの1つと一致するかどうかを確認し得る。アプリケーションIDが一致しない場合、クライアントワークスペースは、通知をさらに処理することなく破棄し得る。そのため、方法は、動作801に戻って他の通知の有無を監視し得る。
【0087】
アプリケーションIDと一致するものが見つかれば、クライアントワークスペースは、ユーザに通知を提示し得る(803)。例えば、クライアントワークスペースは、上述のとおり、通知メッセージを表示し、かつ/またはアラート音を再生し得る。任意選択で、通知メッセージは、セキュリティ向上のために、統合アプリケーション通知フレームワークによって暗号化され得、クライアントワークスペースによって復号され得る。特に、暗号化/復号は、対称暗号または非対称暗号によって実施され得る。例えば、統合アプリケーションは、伝送前にクライアントの公開鍵で通知メッセージを暗号化し得、クライアントは、受信した通知メッセージをその秘密鍵で復号し得る。その後、動作804で、クライアントワークスペースは、通知がユーザによって(例えば、閾値時間制限内に)承認されたかどうかを判断し得る。ユーザは、例えば、表示された通知メッセージをクリックして閉じ、かつ/または通知と関連付けられた仮想アプリケーションにアクセスしたりすることによって、通知を承認し得る。代替として、通知は、ユーザが介入せずに自動的に承認され得る。通知がユーザによって承認されなければ、クライアントワークスペースは、承認されるのを引き続き待機し得る。ただし、通知が正常に承認されれば、通知は、クライアントワークスペースから消去され得る(805)。クライアントワークスペースは、仮想オペレーティングシステムのオペレーティングシステム通知APIを呼び出すこと、統合アプリケーション通知フレームワークのネイティブ通知APIを呼び出すこと、および/または、バックエンドサービスに通知すること(このバックエンドサービスはその後、ネイティブ通知APIを呼び出す)によって、通知を消去し得る。統合アプリケーション通知フレームワークはその後、通知を消去済みとしてマークし得る。メッセージが消去されると、統合アプリケーション通知フレームワークは、クライアントワークスペースに対するメッセージの配信または再配信を試行しなくなる。
【0088】
主題は、構造的な特徴および/または方法論的な行為に特有の言語で記載したものの、添付の請求項において定義される主題は、前記の特定の特徴または行為に必ずしも制限されるものではないことを理解すべきである。むしろ、前記の特定の特徴および行為は、以下の請求項の実施例として記載されている。
【国際調査報告】