JP6092381B2 - ウェブクライアントを介したリモートアプリケーションへのアクセスを提供する方法、システム、及びコンピュータ読取可能記憶媒体 - Google Patents

ウェブクライアントを介したリモートアプリケーションへのアクセスを提供する方法、システム、及びコンピュータ読取可能記憶媒体 Download PDF

Info

Publication number
JP6092381B2
JP6092381B2 JP2015520243A JP2015520243A JP6092381B2 JP 6092381 B2 JP6092381 B2 JP 6092381B2 JP 2015520243 A JP2015520243 A JP 2015520243A JP 2015520243 A JP2015520243 A JP 2015520243A JP 6092381 B2 JP6092381 B2 JP 6092381B2
Authority
JP
Japan
Prior art keywords
application
computing system
web client
host computing
window
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015520243A
Other languages
English (en)
Other versions
JP2015529878A (ja
Inventor
キンプトン、アンドリュー
クラーク、ジョナサン
コバス ユースタ、サレル
コバス ユースタ、サレル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
VMware LLC
Original Assignee
VMware LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by VMware LLC filed Critical VMware LLC
Publication of JP2015529878A publication Critical patent/JP2015529878A/ja
Application granted granted Critical
Publication of JP6092381B2 publication Critical patent/JP6092381B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • User Interface Of Digital Computer (AREA)
  • Digital Computer Display Output (AREA)
  • Stored Programmes (AREA)

Description

本開示は、デスクトップアプリケーションへのリモートアクセスのための方法、技術およびシステムに関し、より具体的には、ウェブクライアントを介してリモートコンピューティングシステム上で実行されるアプリケーションへのアクセスを提供する方法、技術およびシステムに関する。
アプリケーションへのリモートアクセスを提供する様々な手法がある。Xウィンドウ(X Windows)を用いるある手法では、第1コンピューティングシステム上でランしているアプリケーションが第2コンピューティングシステムにグラフィカルウィンドウを表示することができる。第2コンピューティングシステムのユーザによってなされるマウスのクリック、キー打ち、および他の入力イベントは第1コンピューティングシステムに転送される。第1コンピューティングシステム上で実行中のアプリケーションは、第2コンピューティングシステムのディスプレイをそのディスプレイとして使用する。つまり、第1コンピューティングシステムにそのウィンドウを表示しない。
このXウィンドウの手法は、第2コンピューティングシステムが比較的複雑でしばしば構成するのが難しいソフトウェアであるXサーバを含むという要件を含めて、多数の欠点がある。さらに、プログラムの実行の開始は通常多段階の手動プロセスである。第2コンピューティングシステムのユーザはまず手動で第1コンピューティングシステムにログオンし(例えばTELNETまたはSSHを介して)、第2コンピューティングシステムをディスプレイ装置として使用するように第1コンピューティングシステムを構成する。それから、ユーザは第1コンピューティングシステムがディスプレイとして第2コンピューティングシステムを使用できるように第2コンピューティングシステムを構成する。次に、ユーザは第1コンピューティングシステムに戻って、所望のアプリケーションを実行すると、このアプリケーションが第2コンピューティングシステムにそのウィンドウを提示する。
別の手法では、第1コンピューティングシステム上で実行するサーバであるVNC(仮想ネットワークコンピューティング)が、画像データを表示するために第1コンピューティングシステムのフレームバッファから第2(クライアント)コンピューティングシステムに伝送する。VNCは、専用クライアントアプリケーションを第2コンピューティングシステムにインストールするための要件を含めて多数の欠点がある。さらに、VNCは第1コンピューティングシステムの画面全体を表示することに限定されており、これは通常、オペレーティングシステムのユーザインターフェース全体(例えばデスクトップ)である。VNCは異なるアプリケーションウィンドウを区別し、または個別に提示しもしくは管理することができない。さらに、第1コンピューティングシステムにおいてアプリケーションを起動するには多段階の手動プロセスを必要とし、その多段階の手動プロセスは、第2コンピューティングシステムのユーザが第1コンピューティングシステムの名称または識別子を呼び出し、第1コンピューティングシステムのデスクトップを第2コンピューティングシステムに表示するために第1コンピューティングシステムへの接続(例えばセッション)を確立し、さらに表示された第1コンピューティングシステムのデスクトップを介してアプリケーションの実行を手動で開始するプロセスを含む。
ここに説明する実施形態は、デスクトップアプリケーションへのリモートアクセスのため、より具体的には、ウェブクライアント(例えばスタンドアローン型ウェブブラウザ、より大きなアプリケーションのウェブ対応コンポーネントなど)を介してリモートコンピューティングシステム上で実行されるアプリケーションへのアクセスを提供するための改良されたコンピュータベースおよびネットワークベースの方法、技術およびシステムを提供する。
例示的な実施形態は、説明される技術の少なくとも一部を行うリモートアプリケーションプレゼンテーションシステム(RAPS)を提供する。いくつかの実施形態では、RAPSはサーバまたはホスト側コンポーネントおよびクライアント側コンポーネントを含み、ここではそれぞれリモートプレゼンテーションサービスおよびリモートプレゼンテーションクライアントという。
リモートプレゼンテーションサービス(RPS)はホストコンピューティングシステム上で実行してホストコンピューティングシステム上のアプリケーションへのリモートアクセスを促進する。通常、RPSは、ホストコンピューティングシステム上のアプリケーションを識別する統一資源識別子(URI)を介してホストコンピューティングシステム上のアプリケーションへのアクセスを提供する。初めに、RPSはリモートウェブクライアントからアプリケーションにアクセスするためのURIに基づく要求を受信する。この要求は、例えば、アプリケーションの識別を含め、URIからのデータを含むHTTP要求とすることができる。次に、RPSはリモートウェブクライアントに、ホストコンピューティングシステムで実行されるアプリケーションのウィンドウからまたはホストコンピューティングシステムで実行されるアプリケーションのウィンドウを表す画像データを表示させる。例えば、RPSは画像データのコピーをウィンドウからリモートウェブクライアントに伝送し、そこで対応するディスプレイ装置に表示される。さらに、RPSはリモートウェブクライアントから、表示されたアプリケーションの画像データに対してユーザによってなされる入力の指示を受信し、さらにそれがホストコンピューティングシステム上で実行されるアプリケーションによって処理される。
様々な種類または形態のホストコンピューティングシステムを採用することができる。ある実施形態では、ホストコンピューティングシステムはユーザの自宅または職場のパーソナルコンピュータ(例えばデスクトップシステム)とすることができ、ユーザはそれにインストールされたアプリケーションにリモートでアクセスすることができる。別の実施形態では、ホストコンピューティングシステムは、複数の個別のクライアントによってアクセスするために1つ以上のアプリケーションをホストするように構成されているサーバシステムとすることができる。このような実施形態は、複数のユーザ間で、高価かつ需要が限られたソフトウェアアプリケーションまたはスーツ、あるいは高価かもしくは需要が限られたソフトウェアアプリケーションまたはスーツの共有を促進することができる(例えば法人環境において)。別の実施形態では、ホストシステムは仮想マシンモニタ、ハイパーバイザおよび他のメカニズム、あるいは仮想マシンモニタ、ハイパーバイザまたは他のメカニズムによって、例えば複数の他の仮想マシンとともに管理される仮想コンピューティングシステム(例えば仮想マシン)である。このような実施形態は、複数の個別の主体または組織へのオンデマンドのコンピューティング資源およびアプリケーションの割当および分配を促進することができる。
説明する技術は異種システムおよび機器間のリモートアクセスを促進することにも留意する。特に、実行可能なアプリケーションがクライアント機器でランしていない(例えばクライアント機器のオペレーティングシステム、マシンアーキテクチャおよび命令セット、あるいはオペレーティングシステム、マシンアーキテクチャまたは命令セットがホストシステムのものと異なる)ため、クライアント機器が十分な資源をもっていない(例えばクライアント機器はアプリケーションもしくはそのデータを格納するための十分なディスクスペースがない)など、ユーザは、クライアント機器でネイティブに(もしくはその他)実行されないアプリケーションと対話するためにクライアント機器を使用することができる。さらに、専用ソフトウェアをインストールすること、またはホストシステムにクライアント機器をディスプレイとして利用する権限を与えることなどにより、通常、クライアント機器を手動で構成する必要はない。
例示的な実施形態によるホストコンピューティングシステム上で実行中のアプリケーションへのリモートアクセスを示す例示的なブロック図である。 例示的な実施形態によるホストコンピューティングシステム上で実行中のアプリケーションへのリモートアクセスを示す例示的なブロック図である。 例示的な実施形態によるホストコンピューティングシステム上で実行中のアプリケーションへのリモートアクセスを示す例示的なブロック図である。 例示的な実施形態による画像データとユーザインターフェースイベントの伝送および処理を示す例示的なブロック図である。 例示的な実施形態による画像データとユーザインターフェースイベントの伝送および処理を示す例示的なブロック図である。 例示的な実施形態により実施されるリモートアクセスプロセスの例示的なフロー図である。 例示的な実施形態により実施されるリモートアクセスプロセスの例示的なフロー図である。 例示的な実施形態によるリモートアプリケーションプレゼンテーションシステムのコンポーネントを実装するための例示的なコンピューティングシステムの例示的なブロック図である。
システムの概要と動作の実施例
図1A〜図1Cは、例示的な実施形態によるホストコンピューティングシステム上で実行中のアプリケーションへのリモートアクセスを示す例示的なブロック図である。特に、図1A〜図1Cは、クライアント機器120上で実行中のウェブブラウザ110を介して、ホストコンピューティングシステム(ホストシステム)122上で実行中のアプリケーション123へのリモートアクセスを示す。ホストシステム122はリモートプレゼンテーションサービス(RPS)100を含む。ホストシステム122はデスクトップコンピュータ、サーバシステム、仮想化システムなどとすることができる。
クライアント機器120でウェブブラウザ110を操作するユーザは、統一資源識別子(Uniform Resource Identifier:URI)105を介してアプリケーション123へのアクセスを開始する。URI105は、ウェブブラウザ110のテキスト入力フィールドによるなど、手動で入力することができる。他の実施例では、URIは、リンク、ボタン、ショートカット、ブックマーク、アイコンなどによるなど、何か他のユーザインターフェース要素または制御を介してアクセスすることができる。いくつかの実施形態では、URI105の一般的な形式は、http://host−system−id/application−id?argsであり、ここでhost−system−idはホストシステム122を特定し、application−idはアプリケーション123を特定し、argsがアプリケーションおよびRPS100、あるいはアプリケーションまたはRPS100の引数またはパラメータを特定する。URI105に基づき、ウェブブラウザ110はアプリケーション123へのアクセス要求を形成して、ホストシステム122上のRPS100に伝送する。要求はホストシステム122の識別子、アプリケーション123、および1つ以上の引数、パラメータ、または他のデータのうちの1つ以上を含むことができ、その全部もしくは一部をURI105から取得することができる。
アプリケーション123へのアクセス要求の受信に応答して、RPS100はアプリケーション123へのアクセスを促進する。まず、RPS100は、まだランしていなければアプリケーション123の実行を開始することができる。アプリケーション123はアプリケーションウィンドウ124を生成し、これは通常、アプリケーション123のグラフィカルユーザインターフェースを提示し、提供し、またはその他表す。ウィンドウ124は必ずしもホストシステム122によって表示する必要はない。例えば、ウィンドウ124はホストシステム122のディスプレイバッファ(例えばフレームバッファ、ビデオメモリ)または他のメモリ(例えばシステムメモリ、永続性記憶装置)に格納することができる。以下の図4に関して例示的なディスプレイバッファ407を説明する。いくつかの実施形態では、ホストシステム122がデータセンターの一部であるときなど、ホストシステム122はローカルディスプレイ装置を含まない。
RPS100はアプリケーションウィンドウ124へのアクセスを取得し、これはウィンドウ更新の通知の受信と、アプリケーション123および/またはウィンドウ124への/からのユーザ入力イベントおよび/または他の入力の提供との両方を含むことができる。ウィンドウ更新は、ウィンドウ124に表示される画像データが変わるとき、ウィンドウ124が移動、サイズ変更、最小化するときなどを含め、多様な条件またはイベントのためにRPS100に配信することができる。ユーザ入力イベントはキー打ち、ポインタイベント(例えばマウスのクリック、移動、ドラッグ)、音声入力などを含むことができる。
アプリケーションウィンドウ124から受信したウィンドウ更新に応答して、RPS100はウィンドウ画像データをウェブブラウザ110に伝送し、そこでリモートアプリケーションウィンドウ125として表示される。このように、ウェブブラウザ110のユーザはリモートアプリケーションウィンドウ125と対話(例えば、クリック、タイプ)することができる。応答して、ウェブブラウザ110はユーザ入力イベントの指示をRPS100に転送する。さらに、RPS100は受信したユーザ入力イベントをアプリケーション123に配信し、それによってアプリケーション123の状態が変更される。アプリケーション123の状態が変更すると、ウィンドウ124が更新され、それに対応してリモートアプリケーションウィンドウ125が更新されることになる。
ウィンドウ125はウィンドウ124の同一コピーでなくてもよいことに留意する。一実施例として、RPS100によって伝送される画像データは移送中に失われることがあり(例えば破棄されたパケット)、その結果ウィンドウ124と125とに相違が生じることになる。別の例では、非可逆圧縮技術を使用して画像データを伝送することがあり、これもウィンドウ124と125とに違いが生じることになる。また、携帯機器の小さな画面に合わせるためにウィンドウ125のサイズを縮小するダウンスケーリングを行うときなど、クライアント機器120でスケーリングを行うこともある。
図1Bは、クライアント機器120上で実行中のリモートプレゼンテーションクライアントの動作を記述している。図1Bでは、ウェブブラウザ110はURI105に基づくアプリケーション要求をRPS100に伝送する。述べたように、いくつかの実施形態はhttp://host−system−id/application−id?argsの形式を有するURIを使用する。したがって、URI用語を使用して、ホストシステム122はURIのオーソリティ/ホスト部分(例えばhost−system−id)により特定され、アプリケーションはURI105のパス部分(例えば/application−id)によって特定され、引数はURI105のクエリ部分(例えばargs)によって指定される。特に、http://myhost.com/myapps/app.exe?file=file1.txt&dim=800x600の例示的なURIと仮定すると、ホストシステム122はmyhost.comとして特定され、アプリケーションは/myapps/app.exeとして特定され、パラメータまたは引数はfile=file1.txt(例えばアプリケーションでファイルfile1.txtを開く)およびdim=800x600(例えばウィンドウサイズを800×600画素に設定する)である。
いくつかの実施形態では、アプリケーション123はそのファイルシステムの位置(例えば/myapps/app.exe)を使用してURI105内で直接特定することができるが、他の実施形態は追加の間接レベルを提供することができる。特に、いくつかの実施形態はRPS100が実行またはアクセスするべきアプリケーションを判断するために調べるキーまたは他の識別子を使用することができる。このような実施形態では、URI105の例は、http://myhost.com/launch?appid=12345&arg1=val1&arg2=val2&ws=closedとすることができる。この例では、アプリケーション123はクエリパラメータ(例えばappid=12345)として特定されることに留意する。受信時、RPS100は識別子12345を調べて、アクセスするべきアプリケーションを判断する。
いくつかの実施形態では、ユーザ識別子もURI105の一部として表すことができる。特に、複数のユーザがホストシステム122を共有している、またはホストシステム122にアクセスしている場合、URI105はユーザの識別子および他のユーザ固有データ、あるいはユーザの識別子または他のユーザ固有データ(例えばユーザ環境識別子、ユーザデスクトップ位置、ホームディレクトリ)を含むことができる。このような環境では、URI105の一般的な形式は、http://host−system−id/user−part/application−id?argsとすることができ、ここでユーザ部分はユーザおよびユーザ固有データ、あるいはユーザまたはユーザ固有データを特定する。URI105のクエリ部分の一部としてユーザ固有情報を提供するなど、他の構造または表現も考えられる。他の実施形態では、URI105のhost−system−id部分は代わりに、要求を調べて、適したホスト(例えば十分なコンピューティング資源をもつホストまたは要求されるアプリケーションがインストールされているホスト)にディスパッチ(例えばリダイレクト)するように構成されているディレクトリサービスを参照またはその他特定することができる。
アプリケーション要求に応答して、RPS100はクライアントロジックをウェブブラウザ110に伝送し、そこでリモートプレゼンテーションクライアント(RPC)102として実行される。RPC102はJavaScriptで、Javaアプレット、ActiveXコントロールとして、または一般にウェブブラウザ110もしくはクライアント機器120の状況内でコードを実行するのに適した他の技術を使用して実装することができる。いくつかの実施形態では、RPC102はここで図示するウェブブラウザ110の一部として(例えばプラグインとして、および/または同じメモリアドレス空間内でおよび/またはアプリケーションの状況内で)実行することができる。他の実施形態では、RPC102はウェブブラウザ110とは独立した個別プロセスとして実行し、プロセス間通信技術(例えばパイプ、信号、メッセージ)を使用してウェブブラウザ110と通信することができる。クライアントロジックをウェブブラウザ110に伝送することにより、ウェブブラウザ110のユーザはクライアント機器120にクライアントソフトウェアを手動で構成またはインストールしなくても、アプリケーション123にアクセスすることができる。
RPC102がアクティブになれば、RPS100は、リモートアプリケーションウィンドウ125として表示するために、アプリケーションウィンドウ124を表す画像データを伝送する。通常、RPS100は最初にリモートアプリケーションウィンドウ125として表示するために、アプリケーションウィンドウ124全体の正確なもしくは実質的なコピーまたは表現をRPC102に伝送する。このように、RPC102は最初に完全なウィンドウをユーザに提示する。画像データはビット単位で(例えば1ビット単位のコピー)、または可逆(例えばエントロピー符号化、ランレングス符号化)および非可逆圧縮(例えば色空間縮小、変換符号化、ベクトル量子化)のうち少なくとも一方を含む1つ以上の圧縮技術を使用して、RPS100からROC102に伝送することができる。いくつかの実施形態では、圧縮の種類および量、あるいは圧縮の種類または量は、利用できる通信帯域幅、クライアント機器120のディスプレイ装置の特性など、1つ以上の要因に基づくことができる。圧縮レベルは同様にまたは代わりに、利用できるネットワーク帯域幅の量など、変化する状況に応じてリアルタイムで交渉または変化することができる。
RPC102は、リモートアプリケーションウィンドウ125に関して、クライアント機器120が収集したユーザ入力イベントに関する情報の伝送も担う。いくつかの実施形態は、ユーザ入力イベントを表すまたは示すために、プロトコル、メッセージセット、クラス階層などを提供する。例えば、RPC102はウェブブラウザ110から受信したJavaScriptベースのイベントを、RPC100に伝送するために別のフォーマット(例えばシステム独立フォーマットまたはシステム従属フォーマット)に変換することができる。
RPS100は、RPC102から受信するユーザ入力イベントに関する情報の受信および処理を担う。イベントの処理は、イベントを生成するおよびイベントを特定のプロセスまたはウィンドウに配信する、あるいはイベントを生成するかまたはイベントを特定のプロセスまたはウィンドウに配信するオペレーティングシステムの機能の起動によるなど、ユーザ入力イベントのアプリケーション123およびアプリケーションウィンドウ124、あるいはアプリケーション123またはアプリケーションウィンドウ124への転送を含むことができる。イベントの処理は、それをアプリケーションウィンドウ124に転送する前に、ユーザ入力イベントの翻訳、フォーマット変更またはその他修正も含むことができる。例えば、RPS100がシステム独立フォーマットで表されるユーザ入力イベントを受信すると、RPS100はホストシステム122上で実行される特定のオペレーティングシステムに合わせたシステム従属フォーマットでイベントを生成することができる(例えばウィンドウズイベント)。別の例として、RPS100は、マウスクリックの座標をクライアント機器120(例えばリモートアプリケーションウィンドウ125、ウェブブラウザ、またはデスクトップ)の座標系からホストシステム122の座標系に変換するなどの位置変換演算を行うことができる。ある場合には、RPS100は、リモートアプリケーションウィンドウ125が小さな携帯機器の画面に合うように縮小されたときなど、入力イベントをスケーリングすることができる。
RPS100は更新後の画像データをアプリケーションウィンドウ124からRPC102に伝送することもさらに担う。特に、アプリケーション123に配信される入力イベントおよび他の入力イベントのうち少なくとも一方または状態変化に応答して、アプリケーション123はアプリケーションウィンドウ124を経時的に変更させる。RPS100は、アプリケーションウィンドウ124の変更部分または更新部分(例えばブロック)を特定するなど、アプリケーションウィンドウ124の変更を特定する。更新されたウィンドウ部分が1つ以上あれば、RPS100はRPC102にその更新されたウィンドウ部分を表す画像データを伝送する。通常、伝送される画像データは、RPC102がリモートアプリケーションウィンドウ125のどの部分を更新するべきかを判断できるように、位置情報を含む。
RPS100は他のデータおよびメッセージ、あるいは他のデータまたはメッセージをRPC102に伝送することができる。例えば、RPS100は、ホストシステム122を介してランしているまたは利用できるプロセスのリストなどのプロセス管理情報を伝送することができる。同様に、RPS100は、プロセス終了/一時停止、ウィンドウ最小化または最大化など、RPC102から受信するプロセス制御メッセージまたはコマンドに応答することができる。別の例として、RPS100は、新しいウィンドウが生成されたことおよび開いたことのうち少なくとも一方、ウィンドウが指定位置に移動したこと、ウィンドウがサイズ変更されたこと、ウィンドウが閉じたことなど、アプリケーション123およびウィンドウ124、あるいはアプリケーション123またはウィンドウ124に対するイベント情報を伝送することができる。
図1Cは、仮想化環境で動作する実施形態を示す。図1Cでは、ホストシステム122は、プロセッサ、メモリ、永続性記憶装置、ネットワーク機器、ディスプレイ装置など、物理的なハードウェアを有するホストハードウェア133を含む。ホストシステム122は複数の仮想マシン131a〜131nの実行のために仮想オペレーティングプラットフォームを提供するように構成されている仮想化インフラストラクチャ132(例えば仮想マシンモニタ、ハイパーバイザ)も含む。
図示する例では、仮想マシン131aおよび131bはそれぞれ、クライアント機器120a〜120dのうちの1つ以上によってリモートアクセスを促進するRPS100を含む。1台のRPS100(例えばRPS100a)は複数のクライアント機器による1つ以上のアプリケーションへのアクセスを促進することができる。いくつかの仮想マシン(例えば仮想マシン131n)はRPS100を含まなくてもよく、リモートでアクセスされないアプリケーションまたは作業負荷を実行していてもよいことに留意する。また、ホストシステム122はここでは複数の仮想マシン131a〜131n(そのいくつかはリモートプレゼンテーションサービスを含む)をホストするように示されているが、ホストシステム122は代わりに仮想マシン131a〜131nのうちの1つであってもよい。
図2Aおよび図2Bは、例示的な実施形態による画像データおよびユーザインターフェースイベントの伝送と処理を示す例示的なブロック図である。特に、図2AはRPS100とRPC102との間のユーザ入力および画像ブロックの流れを示す。図2Aでは、RPC102はユーザ入力イベント200および202のストリームをRPS100に伝送し、そこでそれはアプリケーションウィンドウ124に転送される。さらに、RPS100は画像ブロック210〜212のストリームをRPC102に伝送し、そこでそれはリモートアプリケーションウィンドウ125上にまたはその一部として提示される。上記述べたように、他のデータおよび制御メッセージ、あるいは他のデータまたは制御メッセージをRPS100とRPC102との間で伝送することができる。
図2Bは、例示的なリモートプレゼンテーションクライアントが受信する画像ブロックの処理の例を示す。より具体的には、図2Bは、図2Aの4つの画像ブロック210〜212が受信されるときに、計算機アプリケーションのリモートアプリケーションウィンドウ125が経時的にどのように変化するかを示す。リモートアプリケーションウィンドウ125は4つの時点で描かれており、参照番号125a〜125dで示される。
初めに、リモートアプリケーションウィンドウ125は、リモートアプリケーションウィンドウ125aで示されるように空である。次に、画像ブロック210を受信する。画像ブロック210はアプリケーションウィンドウ124全体の「キーフレーム」またはコピーである。当該キーフレームはセッション開始時点(例えばアプリケーションがスタートするとき)およびアプリケーションウィンドウが最小化された状態に置かれた後で最大化されるときなどの他の時点のうちの少なくとも一方で送信することができる。画像ブロック210はリモートアプリケーションウィンドウ125aに組み込まれて(例えば合成または「追加」されて)、リモートアプリケーションウィンドウ125bを生じる。
次に、画像ブロック211を受信する。画像ブロック211は、数字4を入力するキー打ちまたはマウスのクリックとすることのできるユーザ入力イベント200を処理する基本の計算機アプリケーションから得られる数字表示エリアの変化に対応する。画像ブロック211はさらにリモートアプリケーションウィンドウ125bに追加されて、リモートアプリケーションウィンドウ125cを生じる。リモートアプリケーションウィンドウ125cはその数字表示エリアに数字4(ウィンドウ125bのように0ではなく)を表示する。
次に、画像ブロック212を受信する。画像ブロック212は、数字2を入力するキー打ちまたはマウスのクリックとすることのできるユーザ入力イベント202を処理する計算機アプリケーションから得られる数字表示エリアの変化に対応し、過去に表示した数字4を数字42に更新させる。画像ブロック212はさらにリモートアプリケーションウィンドウ125cに追加されて、リモートアプリケーションウィンドウ125dを生じる。リモートアプリケーションウィンドウ125dは数字42(ウィンドウ125cの4ではなく)を表示する。
図2Bに図示する実施形態は、2つの時点間で更新されたウィンドウ部分のみを伝送することにより、ネットワーク帯域幅を節約する。いくつかの実施形態では、変更または更新後の画像ブロックの送信などの最適化は採用しなくてもよく、代わりに、各ウィンドウの更新のためにキーフレームを送信できることに留意する。他の例では、図示するもの以外の画像ブロック(例えば異なるサイズ)も伝送することができる。
以下の表1は、クライアント機器120上で実行するために、リモートプレゼンテーションクライアントのJavaScriptベースの実装により使用できるであろうHTMLおよびJavaScript疑似コードの一覧を含む。
表1のリストは、HTML CANVAS要素(4行目)を定義し特定する。さらに、6〜45行目は、例示的なリモートプレゼンテーションクライアント102の少なくとも一部を実装するJavaScript疑似コードを含むSCRIPT要素を定義する。いくつかの実施形態では、図示するロジックは、ウェブブラウザ110がリモートプレゼンテーションサービス100に行うURIベースの要求に応答して、リモートプレゼンテーションサービスから受信する。他の実施形態では、図示するロジックは、キャッシュ内または予めインストールされているソフトウェアとしてなど、クライアント機器120に予め存在することができる。
12〜22行目はユーザ入力イベントを処理する手法を示す。特に、イベントハンドラ(「mouseEvtHandler」と呼ばれる)が定義されて(12〜15行目)、登録される(17〜22行目)。イベントハンドラは受信したイベントをリモートプレゼンテーションサービス100に伝送するために非同期的に動作する。
25〜39行目は、リモートプレゼンテーションサービス100から受信したメッセージを処理する手法を示す。特に、名付けられた関数(「handleMessages」)は、リモートプレゼンテーションサービス100からメッセージを繰り返し受信して処理するメッセージハンドリングループを実行する。29〜31行目で、関数は受信した画像ブロックを、そのブロックをCANVAS要素に引き込んでディスプレイ装置に提示させることによってハンドリングする。32〜37行目に示すように、他の種類のメッセージも受信して、処理することができる。
表1に関して説明する手法はHTML CANVAS要素を利用するが、他の実施形態は異なる技術を使用することができる。特に、いくつかの実施形態は、CANVAS要素を提供していないバージョンのHTMLをサポートするおよび他の限定的なレンダリング環境(例えばフレームバッファなし)のうちの少なくとも一方を有する。当該技術は、2012年4月17日に出願されたPresenting Dynamically Changing Images in a Limited Rendering Environmentという発明の名称の米国特許出願第13/449076号(代理人整理番号第A667号)にさらに詳細に記述されている。
例示的な実施形態を示すためにウェブブラウザを介したリモートアクセスを使用しているが、リモートアクセスは他の実施形態では異なる種類のクライアントを介して提供することができる。例えば、携帯機器、アプリ、デスクトップソフトウェアスイート、キオスクシステムなど、別のアプリケーションまたはシステム内に埋め込まれているウェブ対応コンポーネントを介してリモートアクセスを提供することができる。また、異なるウェブまたはネットワークプロトコルが考えられ、技術はHTTPの使用にのみ限定されない。特に、HTTPS、FTPなどを含め、他のスキームもサポートおよび利用、あるいはサポートまたは利用することができる。また、REMOTEAPP(例えばremoteapp://myhost.com/path/to/app?arg1=val1)などのカスタムスキームおよびスキーム名も提供できる。
また、説明する技術を実装または遂行するために異なる種類の機器またはシステムを使用することもできる。例えば、クライアント機器120は、携帯機器(例えばスマートフォン)、タブレットシステム、キオスクシステム、埋め込みシステム(例えば車内)などを含め、リモートプレゼンテーションクライアントまたは同様なロジックを実行するための十分な処理能力を有するあらゆるコンピューティング機器とすることができ、またはそれを含むことができる。さらに、ホストシステム122は物理的なシステムである必要はなく、むしろ物理的なハードウェアにホストされ、ハイパーバイザ、仮想マシンモニタ、または同様なメカニズムにより管理される仮想マシンとすることができる。
また、ここでは主に一定の用語を使用しているが、同等の実施形態および実施例を得るために他の用語を互換可能に使用することができるであろう。例えば、リモートアクセスのフィールドまたは同様なもしくは関連フィールドの同等の用語は、「ホストシステム」、「クライアント機器」、「ウェブクライアント」などの用語に置換できることはよく知られている。特に、「ホストシステム」という用語は「ホスト」、「ホストコンピュータ」、「アプリケーションホーム」、「サーバ」または同様な用語と互換可能に使用することができる。同様に、「ウェブクライアント」という用語は「HTTPクライアント」、「ネットワーククライアント」、「ネットワークアクセスクライアント」または同様な用語と互換可能に使用することができる。さらに、用語は明示的に述べることも述べないこともある代替スペルを有することもでき、当該用語のすべてのバリエーションが含まれることが意図される。
ここに説明する例示的な実施形態は、ウェブクライアントを介してリモートアプリケーションのアクセスを提供するために使用されるリモートアプリケーションプレゼンテーションシステムを実装するアプリケーション、ツール、データ構造および他のサポートを提供する。説明する技術の他の実施形態は、一般に「細い」ネットワーククライアントを開発し、提供するためおよびゼロコンフィギュレーションアプリケーションインフラストラクチャを実装するための少なくとも一方の目的を含め、他の目的のために使用することができる。以下の説明では、説明する技術の完全な理解を与えるため、データフォーマットやコードシーケンスなど、多数の特定の明細を記載している。説明する実施形態はここで説明する特定の明細のいくつかがなくても、またはロジックの順序に関する変更、異なるロジックなど、他の特定の明細とともに実施することができる。したがって、説明する技術および機能、あるいは説明する技術または機能の範囲は、特定のルーチン、モジュール、コンポーネントなどに関して説明する態様の特定の順序、選択、または分解によって制限されるものではない。
例示的なプロセス
図3Aおよび図3Bは、例示的な実施形態によって行われるリモートアクセスプロセスの例示的なフロー図である。
図3Aは、ある実施形態により行われるリモートプレゼンテーションサービスプロセス300の例示的なフロー図である。図示するプロセスは、例えば、上記説明したホストコンピューティングシステム122上で実行されるリモートプレゼンテーションサービス100によって行うことができる。
ブロック301で、プロセス300はリモートウェブクライアントから、ホストコンピューティングシステム上のアプリケーションへのアクセス要求を受信する。いくつかの実施形態では、受信する要求は、パス(例えばアプリケーションを特定する)と何らかのクエリ引数(例えばURIで「?」の後に出現する名前と値の組)など、ホストコンピューティングシステムおよびアプリケーションを(直接もしくは間接的に)特定するURIの少なくとも一部を含むHTTP要求である。
ブロック302で、プロセス300は、ウェブクライアントに、ホストコンピューティングシステム上に格納されているアプリケーションのウィンドウを表す画像データを表示させる。ウェブクライアントに画像データを表示させることは、ウェブクライアント(またはそれによってもしくはそこで実行されるあるモジュール)に、ホストコンピューティングシステム上に格納されているウィンドウの全部または一部の表現(もしくは一般にグラフィカルユーザインターフェース)を伝送することを含むことができる。このように、プロセス300は、ウェブクライアントに、ホストコンピューティングシステムのウィンドウの少なくとも実質的なコピーであるウィンドウを表示させる。プロセス300は、ある過去の時点から更新または変更されたウィンドウの部分のみを特定して伝送することができる。画像データがリモートウェブクライアントで受信されると、ユーザが閲覧するためにディスプレイ装置に表示される。伝送された画像データは可逆または非可逆圧縮技術を用いて圧縮することができる。ホストコンピューティングシステム上に格納されているウィンドウは、ホストコンピューティングシステムによって必ずしも表示する必要はない。例えば、それはホストコンピューティングシステムのメモリ(例えばディスプレイバッファ、システムメモリ、ディスク)に格納することができるが、表示しなくてもよい(例えばホストコンピューティングシステムがディスプレイ装置をもたないため、ホストコンピューティングシステムのディスプレイ装置の電源が切れているため)。
述べたように、帯域幅を節約するために、プロセス300は現在のウィンドウ画像と過去のウィンドウ画像(過去のウィンドウ更新イベント時に格納されたもの)とのブロックごとの比較を行うことにより、修正された画像ブロックのみを判断して、伝送することができる。8×8、16×16、8×16などを含め、異なるブロックサイズおよび形状が考えられる。いくつかの実施形態では、ブロックサイズは、ネットワークのレイテンシ、修正の範囲と量などの要因に基づいて動的に判断することができる。例えば、2つの隣接した正方形ブロックは、ネットワークトランザクション(例えばTCPおよびHTTP接続のうちの少なくとも一方、ならびに対応する切断)の数を減らすために、1つの方形ブロックとして伝送することができる。
ブロック303で、プロセス300はウェブクライアントから、表示された画像データについて行われるユーザ入力の指示を受信する。ユーザがリモートウェブクライアントで表示された状態のウィンドウと対話すると、ウェブクライアントはユーザ入力イベントを収集し、その指示がこのプロセスに伝送される。ユーザ入力イベントはポインタイベント(例えばマウス、スタイラス、タッチスクリーンのアクション)、キーボードイベント、キーパッドイベント、音声イベント、ジェスチャーベースのイベントなどを含むことができる。
ブロック304で、プロセス300はユーザ入力の指示をアプリケーションに転送する。ユーザ入力の指示の転送は、ホストコンピューティングシステム上のアプリケーションに提供される(例えばオペレーティングシステムの呼び出しを介して)イベントの生成を含むことができる。
通常、プロセス300はブロック302、303および304の動作を繰り返し行うので、更新後の画像データを継続的にリモートウェブクライアントに伝送し、ユーザ入力イベントを継続的にホストシステムのアプリケーションに転送する。
プロセス300は追加の動作を行うことができる。例えば、プロセス300はウェブクライアントを介してホストコンピューティングシステムにウィンドウのコピーを表示し、ユーザによってなされる入力の指示をホストコンピューティングシステムに伝送するように構成されているコードモジュールも伝送することができる。コードモジュールは、例えば、前述したリモートプレゼンテーションクライアント102とすることができる。コードモジュールは、図3Bに関して以下説明するものなどのプロセスを行うことができる。
図3Bは、ある実施形態により行われるリモートプレゼンテーションクライアントプロセス310の例示的なフロー図である。図示するプロセスは、例えば、上記説明したクライアント機器120上で実行されるリモートプレゼンテーションクライアント102によって行うことができる。
ブロック311で、プロセス310はリモートホストコンピューティングシステム上のアプリケーションを特定する統一資源識別子を受信する。URIは、ユーザの手入力(例えばウェブクライアントのURI入力エリアへの入力またはタイプ)による、URIに基づくリンクを含むウェブページによる、ユーザのデスクトップのショートカットによるなど、様々なソースから受信することができる。いくつかの実施形態では、URIはリモートプレゼンテーションサービス100が提供する「スタート」または「ホーム」ページの一部とすることができる。他の実施形態では、URIはデスクトップのショートカットまたは他のアイコンの一部とすることができる。
ブロック312で、プロセス310はアプリケーションへのアクセス要求を伝送し、該要求は統一資源識別子に基づく。要求の伝送は、パス(例えばアプリケーションの特定)およびクエリ引数(例えばURIの「?」の後に出現する名前と値の組)など、URIの少なくとも一部を含むHTTP要求の形成を含むことができる。
ブロック313で、プロセス310は、ホストコンピューティングシステムに格納されているアプリケーションのウィンドウを表す画像データを受信する。前述したように、プロセスはアプリケーションに関連したウィンドウの画像ブロックまたは他の表現を受信することができる。ウィンドウは少なくともホストコンピューティングシステムにより、またはホストコンピューティングシステム上に格納されている(例えばディスプレイバッファ内、システムメモリ内、ディスク上)。ウィンドウはホストコンピューティングシステムによって(例えばホストコンピューティングシステムのディスプレイ装置に)現時点で表示することもできる(が、その必要はない)。
ブロック314で、プロセス310はウェブクライアントを介して画像データを表示する。表1に示すように、受信する画像データ(例えば画像ブロック)は、HTML CANVASタグを介して表示することができ、それによってホストコンピューティングシステムに格納されているウィンドウまたはグラフィカルユーザインターフェースのコピー(もしくは実質的なコピー)を表示する。他の実施形態では、異なる描写メカニズムを利用することができる。例えば、プロセス310は、層状に重ねられて、対応するz座標レベルを指定することにより提示される画像ブロックをDIV要素内に埋め込むことによって、受信した画像データを表示することができる。
ブロック315で、プロセス310は表示される画像データについてユーザによってなされる入力の指示を伝送する。表1に示すように、プロセス310は、表示される画像データについてユーザが入力イベントを行うときに呼び出されるかまたはその他通知されるイベントハンドラを登録することができる。プロセス310はさらにこれらのユーザ入力イベント(またはその何らかの表現)をリモートホストシステムに伝送する。伝送前に、プロセス310は受信したイベントを機器独立フォーマットに変換してから、それをホストコンピューティングシステムに伝送することができる。
通常、プロセス310はブロック313、314および315の動作を繰り返し行うので、クライアント機器にローカルに表示されるウィンドウをホストシステムから受信される画像データで継続的に更新し、ユーザ入力イベントをホストシステムのリモートプレゼンテーションサービスに継続的に転送する。
プロセス310は追加の動作を行うこともできる。例えば、プロセス310はリモートプレゼンテーションサービスからも、新しいウィンドウが現れた、またはウィンドウが閉じた、サイズ変更したなど、イベント、メッセージまたはコマンドを受信することができる。
例示的なコンピューティングシステムの実装
図4は、例示的な実施形態によるリモートアプリケーションプレゼンテーションシステムのコンポーネントを実装するための例示的なコンピューティングシステムの例示的なブロック図である。特に、図4はRPS100の実装に利用できるコンピューティングシステム400を示す。図4に関して説明する技術はRPC102も実装することができ、または代わりにRPC102の実装に適用することができる。
RPS100を実装するために、適切に指示された1または複数の汎用のまたは専用のコンピューティングシステムまたは機器を使用できることに留意する。さらに、コンピューティングシステム400は1つ以上の個別のコンピューティングシステムまたは機器を備えることができ、分散配置されてもよい。また、図示する各ブロックは特定の実施形態に適切な1つ以上のブロックを表すことができ、または他のブロックと組み合わせることもできる。また、RPS100はここに説明する能力を達成するソフトウェア、ハードウェア、ファームウェアに、または何らかの組合せで実装してもよい。
図示する実施形態では、コンピューティングシステム400はコンピュータメモリ(「メモリ」)401と、ディスプレイ402と、1つ以上の中央処理装置(CPU)403と、入出力機器404(例えばキーボード、マウス、CRT、またはLCDディスプレイなど)と、他のコンピュータ読取可能媒体405と、ネットワーク接続406と、ディスプレイバッファ407とを備える。RPS100はメモリ401に常駐している状態が示されている。他の実施形態では、コンテンツの一部、RPS100のコンポーネントの一部もしくは全部は、他のコンピュータ読取可能媒体405に格納することができるおよび他のコンピュータ読取可能媒体405で伝送することができる、あるいは他のコンピュータ読取可能媒体405に格納することができるかまたは他のコンピュータ読取可能媒体405で伝送することができる。RPS100のコンポーネントは好ましくは1つ以上のCPU403で実行し、ここで説明する技術を実装する。他のコードまたはプログラム430(例えば管理インターフェース、ウェブサーバなど)と、例えばデータレポジトリ420などの他のデータレポジトリもメモリ401に常駐し、好ましくは1つ以上のCPU403で実行する。注目すべきことに、図4のコンポーネントのうちの1つ以上が特定の実装に存在しなくてもよい。例えば、いくつかの実施形態は他のコンピュータ読取可能媒体405またはディスプレイ402を設けていなくてもよい。
RPS100はネットワーク450を介してクライアント機器120および第三者システムまたはアプリケーション455と対話する。ネットワーク450は、遠くに位置する人および機器間、あるいは遠くに位置する人または機器間の通信を促進する媒体(例えばツイストペア、同軸、光ファイバ、無線周波)、ハードウェア(例えばルータ、スイッチ、リピータ、トランシーバ)、およびプロトコル(例えばTCP/IP、UDP、イーサネット、Wi−Fi、WiMAX)のあらゆる組合せとすることができる。第三者システムまたはアプリケーション455は、リモート管理および監視コンソール、ウェブクライアントコンポーネントを埋め込んでいるアプリケーションなどを含め、RPS100にデータを提供し、またはRPS100からのデータを利用するあらゆるシステムを含むことができる。
RPS100は、コンピューティングシステム400のメモリ401で実行する状態が示されている。述べたように、RPS100は、ここではやはりメモリ401内に示されているアプリケーション123へのリモートアクセスを促進する。アプリケーション123は、アプリケーション123のグラフィカルユーザインターフェースを表す、またはその一部である対応するウィンドウ124を有する。
アプリケーション123のアプリケーションウィンドウ124は、ここではディスプレイバッファ407に格納された状態が示されている。ディスプレイバッファ407は、ディスプレイ402に表示するために画像データの1つ以上のフレーム(例えば画素)を格納するために使用されるハードウェアフレームバッファ、ビデオメモリもしくは他のメモリバッファとすることができ、またはそれを含むことができる。アプリケーション(アプリケーション123など)は、ディスプレイバッファ407のコンテンツを修正するグラフィックスライブラリ機能を呼び出すことによりディスプレイバッファ407にアクセスする。ディスプレイドライバおよび他のシステムモジュール、あるいはディスプレイドライバまたは他のシステムモジュールが、ディスプレイバッファ407のコンテンツを定期的にディスプレイ402に転送させる。いくつかの実施形態は、例えばソフトウェアおよびシステムメモリ401の組合せを使用することにより、ハードウェアフレームバッファまたは同様な機器を模倣する仮想化ディスプレイバッファ407を設けることができることに留意する。いくつかの実施形態はディスプレイ402を含まず、またはアプリケーションウィンドウ124を提示するために必ずしもディスプレイ402を使用するわけではないことにも留意する。
例示的な実施形態では、RPS100はアプリケーションマネージャ411と、セッションマネージャ412と、ユーザインターフェースマネージャ415と、アプリケーションプログラムインターフェース(API)416と、データストア418とを含む。ユーザインターフェースマネージャ415およびAPI416は、他の実施形態では、これらのコンポーネントのうちの1つ以上が行う機能をRPS100の外部で行えることを示すために、点線で描かれている。
アプリケーションマネージャ411は、RPS100を介して利用できるアプリケーションに関する情報の追跡を担う。例えば、アプリケーションマネージャ411はアプリケーション識別子(例えば名称、ファイルシステムの位置、プロセス識別子)、アプリケーションがランしているかどうか、アプリケーションウィンドウ情報(例えばハンドル、位置、寸法)などに関する情報、またはそれに対応する情報を格納することができる。アプリケーションマネージャ411は、ユーザ入力イベントをアプリケーションに転送する、ウィンドウの更新の指示を提供するなどして、アプリケーションを実行し、アプリケーションと通信するためのインターフェースも提供することができる。他の実施形態では、このようなインターフェースは以下に述べるAPI416としてもよく、または代わりにAPI416を介して提供することができる。
セッションマネージャ412は、リモートクライアント機器120と対応するアプリケーションとの間の1つ以上のセッションのハンドリングを担う。セッションのハンドリングは、クライアントロジック(例えばリモートプレゼンテーションクライアント102)をクライアント機器120に伝送することにより、セッションの開始を含むことができる。セッションのハンドリングは、クライアント機器120からのユーザ入力イベントの指示の受信と、その入力イベントの適切なアプリケーションへの転送も含むことができる。
セッションのハンドリングは、アプリケーションウィンドウ124が更新されたという指示の受信もさらに含むことができる。応答して、セッションマネージャ412はアプリケーションウィンドウ124のどの部分が変更されたのかを判断し(例えば以前の更新を受信して以降)、さらにその変更された部分のコピーまたは他の表現(例えば圧縮データ)をクライアント機器120に伝送することができる。
UIマネージャ415は、RPS100およびその様々なコンポーネントとのユーザの対話を促進するビューおよびコントローラを提供する。例えば、UIマネージャ415はRPS100への対話型のアクセスを提供できるので、ユーザは、RPS100にユーザの嗜好(例えばクライアント機器の設定、画面の嗜好、圧縮レベル)、ユーザの資格情報(例えばパスワード)などに関する情報を提供するなどして、RPS100の操作を構成することができる。いくつかの実施形態では、UIマネージャ415の機能へのアクセスは、例えば他のプログラム430の1つとして実行されるウェブサーバを介して提供することができる。当該実施形態では、第三者システム455のうちの1つで実行されるウェブブラウザを操作するユーザは、UIマネージャ415を介してRPS100と対話することができる。
API416はRPS100の1つ以上の機能へのプログラムによるアクセスを提供する。例えば、API416は、他のプログラム430または何か他のモジュールのうちの1つによって呼び出すことのできるRPS100の1つ以上の機能とのプログラムによるインターフェースを提供することができる。例えば、API416はアプリケーションを制御する(例えば起動する、終了する)機能、イベントをアプリケーションに渡す機能、アプリケーションからイベントを受信する機能、更新したスクリーンデータを取得する機能、および同様な機能へのアクセスを提供することができる。このように、API416は、ユーザインターフェース、プラグイン、アダプタ(例えばRPS100の機能を携帯アプリケーションに統合するため)など、第三者ソフトウェアの開発を促進する。
さらに、API416は、少なくともいくつかの実施形態では、クライアント機器120および第三者システムまたはアプリケーション455、あるいはクライアント機器120または第三者システムまたはアプリケーション455のうちの1つで実行するコードなど、リモートエンティティを介して呼び出しまたはその他アクセスして、RPS100の様々な機能にアクセスすることができる。例えば、クライアント機器120はAPIを介してアプリケーション123の実行を開始し、API416を介してプロセスを実行するリストを取得することなどを行うことができる。別の実施例として、第三者システム455で動作する監視コンソールはAPI416を介して性能統計を受信することができる。API416は、第三者アプリケーション455に統合でき、他のアプリケーション(例えば携帯アプリ)の状況内で利用できる説明した機能のうちの少なくともいくつかを行うためにRPS100と対話するように構成されているモジュールまたはウィジェットを提供するように構成することもできる。
データストア418は、RPS100の他のモジュールによって、情報を格納および通信、あるいは格納または通信するために使用される。RPS100のコンポーネントはデータストア418を使用して、アプリケーション情報(例えば名称、プロセス識別子、ハンドル、ウィンドウ識別子、ウィンドウ状態)、セッション情報(例えばユーザ識別子、アクティブなアプリケーション識別子、イベントキュー、ウィンドウデータ)などを含め、様々な種類の情報を記録および通信、あるいは記録または通信する。RPS100のコンポーネントは主にデータストア418から通信すると説明されているが、メッセージの受渡し、機能の呼び出し、パイプ、ソケット、共有メモリなどを含め、他の通信メカニズムも考えられる。
図4に図示するアーキテクチャは、いくつかの実施形態では、部分的にまたは完全に仮想化することができる。例えば、コンピュータシステム400は、物理的ハードウェアで実行し、ハイパーバイザ、仮想マシンモニタ、または同様な技術によって管理される1つとすることができ、例えば多くの仮想マシンとすることができる。このような実施形態では、リモートアプリケーションへのアクセスは、サービスベースのモデルを用いて提供することができ、ユーザはアプリケーションおよびアプリケーションをランするために使用される対応するコンピューティングリソースへのアクセスを動的に取得することができる。アプリケーションへのアクセスは、アプリケーションライセンスのレンタルまたはサブスクリプションモデルに基づくなど、金銭との交換で取得することができる。
例示的な実施形態では、RPS100のコンポーネントまたはモジュールは、標準的なプログラミング技術を用いて実装される。例えば、RPS100は、1つ以上の静的または動的ライブラリとともに、CPU403でランする「ネイティブな」実行ファイルとして実装することができる。他の実施形態では、RPS100は他のプログラム430のうちの1つとして実行される仮想マシンによって処理される命令として実装することができる。一般に、オブジェクト指向型(例えばJava、C++、C#、Visual Basic.NET、Smalltalkなど)、関数型(例えばML、Lisp、Schemeなど)、手続型(例えばC、Pascal、Ada、Modulaなど)、スクリプト型(例えばPerl、Ruby、Python、JavaScript、VBScriptなど)、ならびに宣言型(例えばSQL、Prologなど)を含むが、これだけに限定されない、様々なプログラミング言語のパラダイムの代表的な実装を含め、当該例示的な実施形態の実装には、当技術分野で周知の様々なプログラミング言語を採用することができる。
上記説明した実施形態は周知のまたは専有の同期もしくは非同期のクライアントサーバコンピューティング技術のいずれでも使用することができる。また、様々なコンポーネントは、例えば、それぞれ1つ以上のCPUを有する1つ以上のコンピュータシステムでランするマルチプログラミング、マルチスレッディング、クライアントサーバ、またはピア−ツー−ピアを含むが、これだけに限定されない、単独のCPUコンピュータシステムでランする実行ファイル、または当技術分野で周知の多様な構成技術を使用して分解される実行ファイルとして、よりモノリシックなプログラミング技術を用いて実装することができる。いくつかの実施形態は同時におよび非同期に実行し、メッセージ受渡し技術を用いて通信することができる。同等の同期の実施形態もサポートされる。また、他の機能も各コンポーネントまたはモジュールによって、異なる順序で、および異なるコンポーネントまたはモジュールによって実装および実行、あるいは実装または実行することができ、しかも前述の機能を達成する。
さらに、データストア420(または240)など、RPS100の一部として格納されているデータとのプログラミングインターフェースは、C、C++、C#、およびJava API、ファイル、データベース、もしくは他のデータレポジトリにアクセスするためのライブラリ、XMLなどのスクリプト言語、またはウェブサーバ、FTPサーバ、もしくは格納されているデータへのアクセスを提供する他の種類のサーバなどの標準的なメカニズムにより利用することができる。データストア420は、分散型コンピューティング技術を用いる実装を含め、1つ以上のデータベースシステム、ファイルシステム、もしくは当該情報を格納する他のあらゆる技術、または上記のあらゆる組合せとして実装することができる。
ここに説明する技術とともに使用するために、プログラムおよびデータの異なる構成および場所が考えられる。図示する実施形態のコンポーネントを分散して実装するには、TCP/IPソケット、WebSocket、RPC、RMI、HTTP、ウェブサービス(XML−RPC、JAX−RPC、SOAPなど)を含むが、これだけに限定されない多様な分散型コンピューティング技術が適切である。他の変型も可能である。また、他の機能も各コンポーネントまたはモジュールによって提供することができ、既存の機能は様々な方法でコンポーネントまたはモジュール間で分散できるであろうが、それでもここに説明する機能を達成する。
また、いくつかの実施形態では、RPS100のコンポーネントの一部または全部は、1つ以上の特定用途向け集積回路(ASIC)、標準的な集積回路、適切な命令を実行するコントローラを含むが、これだけに限定されず、またマイクロコントローラおよび埋め込み型コントローラ、あるいはマイクロコントローラまたは埋め込み型コントローラ、フィールドプログラマブルゲートアレイ(FPGA)、コンプレックスプログラマブルロジックデバイス(CPLD)などを含め、少なくとも部分的にハードウェアおよびソフトウェア、あるいはハードウェアまたはソフトウェアのような他の形態で実装または提供することができる。システムコンポーネントおよびデータ構造の一部または全部、またはシステムコンポーネントまたはデータ構造の一部または全部は、コンピュータ読取可能媒体(例えばハードディスク、メモリ、コンピュータネットワーク、もしくはセルラー無線ネットワーク、もしくは他のデータ伝送媒体、またはDVDもしくはフラッシュメモリ機器など、適切なドライブによりもしくは適切な接続を介して読み取られるポータブルメディア商品として)にコンテンツ(例えば実行可能なもしくはその他マシン読取可能ソフトウェア命令または構造化データ)として格納することもできるので、コンピュータ読取可能媒体および1つ以上の関連コンピューティングシステムのうちの少なくとも一方、または機器、を説明した技術のうちの少なくとも一部を行うためにコンテンツを実行し、またはその他使用もしくは提供することを可能にし、またはそのように構成する。コンポーネントおよびデータ構造のうちの一部または全部、またはコンポーネントまたはデータ構造の一部または全部は有形の非一時的な(non-transitory)記憶媒体に格納することができる。システムコンポーネントおよびデータ構造の一部もしくは全部は多様なコンピュータ読取可能伝送媒体にデータ信号としても格納することができ(例えば搬送波の一部として符号化することにより、またはアナログもしくはデジタル伝搬信号の一部として含めることにより)、それがさらに無線ベースおよび有線またはケーブルベースの媒体を含めて伝送され、多様な形態(例えば単一もしくは多重アナログ信号の一部として、または複数の個々のデジタルパケットもしくはフレームとして)を取ることができる。当該コンピュータプログラム製品は、他の実施形態では他の形態を取ることもできる。したがって、本開示の実施形態は他のコンピュータシステム構成とともに実施することができる。
2012年4月17日に出願された、Presenting Dynamically Changing Images in a Limited Rendering Environmentという発明の名称の米国特許出願第13/449076号(代理人整理番号第A667号)を含むが、これだけに限定されない、上記米国特許、米国特許出願公報、米国特許出願、外国特許、外国特許出願、非特許出版物、ならびに本明細書で参照されるおよび出願データシートに挙げられる付属書類、あるいは本明細書で参照されるかまたは出願データシートに挙げられる付属書類は、その全体を参照によりこれに組み込む。
本明細書では特定の実施形態を例示目的で説明してきたが、以上の記載から本開示の技術的思想および範囲を逸脱することなく様々な変更が行えることが認識されるであろう。例えば、リモートアプリケーションへのアクセスのための方法、技術およびシステムは、他のアーキテクチャまたは他の設定で実施することができる。例えば、説明した技術はクラウドベースアプリケーション販売の一部として採用することができ、顧客はサブスクリプションに基づいてアプリケーションへのアクセス権を購入でき、アクセスは動的に例えば仮想化インフラストラクチャに基づいて提供し、スケーリングすることができる。また、本明細書で述べる方法、技術およびシステムは異なるプロトコル、通信媒体(光、無線、ケーブル等)および機器(例えばデスクトップコンピュータ、無線電話機、電子手帳、携帯情報端末、タブレットコンピュータ、携帯電子メール機、ゲーム機、ページャ、ナビゲーション機器、等)に適用できる。

Claims (21)

  1. ディスプレイ装置を有するクライアント機器上で実行されるリモートウェブクライアントを介してホストコンピューティングシステム上のアプリケーションへのアクセスを提供するための、ホストコンピューティングシステムにおける方法であって、
    前記ホストコンピューティングシステム上で実行されるアプリケーションによって生成される出力グラフィカルユーザインターフェースを格納するためのディスプレイバッファを含む前記ホストコンピューティングシステム上で実行される前記アプリケーションを特定する統一資源識別子を提供し、
    前記リモートウェブクライアントから受信するとともに前記統一資源識別子に基づいた要求であって、前記アプリケーションに対するアクセスの要求を受信し、前記要求が、前記アプリケーションの実行を開始するファイルを示す指示を含む1つ以上の引数を有するHTTP要求をさらに含むものであり、
    前記アプリケーションへのアクセスの要求の受信に応答して、前記リモートウェブクライアントによって実行されるときに、前記リモートウェブクライアントを介して画像データをグラフィカルユーザインターフェースに表示するとともに、ユーザによってなされる入力の指示を前記ホストコンピューティングシステムに伝送するように構成されるコードモジュールを伝送すること、
    前記ホストコンピューティングシステムの前記ディスプレイバッファから前記アプリケーションの前記グラフィカルユーザインターフェースに表示させるために前記画像データを前記コードモジュールに伝送すること、
    前記グラフィカルユーザインターフェースの変更部分を含む1つ以上の画像ブロックを前記リモートウェブクライアントによる表示のために伝送することによって、前記リモートウェブクライアントによって表示される前記グラフィカルユーザインターフェースにおける画像データを更新することであって、前記グラフィカルユーザインターフェースの未変更部分を含まない画像ブロックは伝送されない、前記更新すること、及び
    表示されたグラフィカルユーザインターフェースに対して前記ユーザによってなされる入力の前記指示を前記リモートウェブクライアントから受信することによって、前記ホストコンピューティングシステムの前記アプリケーションとのユーザ対話を促進することを備える方法。
  2. 前記1つ以上の引数は好みのウィンドウ状態を示す指示を含み、前記好みのウィンドウ状態に基づいて前記グラフィカルユーザインターフェースを表示させることをさらに含み、前記好みのウィンドウ状態は、ウィンドウ最大化、ウィンドウ最小化、およびウィンドウサイズのいずれかまたは組合せである請求項に記載の方法。
  3. 前記1つ以上の引数は前記ホストコンピューティングシステムのユーザ環境を示す指示を含み、前記ユーザ環境に基づいて前記アプリケーションの実行を開始することをさらに含む請求項に記載の方法。
  4. 前記ホストコンピューティングシステムは仮想マシンであり、前記ユーザ環境は仮想デスクトップであり、前記リモートウェブクライアントに前記グラフィカルユーザインターフェースを表示させることは、前記リモートウェブクライアントに、前記仮想デスクトップの全部より小さい前記仮想デスクトップの一部を表示させることを含む請求項に記載の方法。
  5. 前記ホストコンピューティングシステムは物理的マシンであり、前記ユーザ環境に基づいて前記アプリケーションの実行を開始することは、前記物理的マシンにインストールされたアプリケーションであって、前記ユーザ環境によって特定されるユーザアカウントを介してアクセス可能であるアプリケーションを実行することを含む請求項に記載の方法。
  6. 前記アプリケーションとのユーザ対話を促進することは、HTTP接続を介して前記リモートウェブクライアントと前記ホストコンピューティングシステム上で実行されるプレゼンテーションサービスとのユーザ対話を促進することを含む請求項1に記載の方法。
  7. 前記リモートウェブクライアントに前記グラフィカルユーザインターフェースを表示させることは、
    前記リモートウェブクライアントに、前記グラフィカルユーザインターフェースの第1ウィンドウを表す画像データを伝送し、
    前記リモートウェブクライアントに、前記第1ウィンドウのコピーとして前記画像データを含む第2ウィンドウを表示させることを含む請求項1に記載の方法。
  8. 前記リモートウェブクライアントに前記グラフィカルユーザインターフェースを表示させることは、前記リモートウェブクライアントに、HTML5canvas要素を介して前記グラフィカルユーザインターフェースを表す画像データを表示させることを含む請求項1に記載の方法。
  9. 前記リモートウェブクライアントから入力の指示を受信することは、前記リモートウェブクライアントからマウスイベントとその対応する位置を示す指示を受信することを含む請求項1に記載の方法。
  10. 前記マウスイベントの位置を前記ホストコンピューティングシステムの座標系に変換することをさらに含む、請求項に記載の方法。
  11. 前記ホストコンピューティングシステム上で実行される複数のアプリケーションに関する情報を追跡することをさらに含み、前記追跡する情報はアプリケーション識別子、アプリケーションのウィンドウの位置、アプリケーションのウィンドウサイズ、およびアプリケーションのイベントのいずれかまたは組合せを含む、請求項1に記載の方法。
  12. ウェブクライアントを介してリモートアプリケーションへのアクセスを提供するシステムであって、
    プロセッサと、メモリと、ディスプレイバッファと、アプリケーションと、前記ディスプレイバッファに格納される第1ウィンドウと、前記メモリに格納されるリモートプレゼンテーションサービスモジュールとを含むホストコンピューティングシステムを備え、
    前記プロセッサによって実行されたときに、前記リモートプレゼンテーションサービスモジュールが、
    ディスプレイ装置を有するクライアントコンピューティング機器上で実行されるリモートウェブクライアントから受信するとともに前記アプリケーションを識別する統一資源識別子に基づいた要求であって、前記アプリケーションに対するアクセスの要求を受信し、前記要求が、前記アプリケーションの実行を開始するファイルを示す指示を含む1つ以上の引数を有するHTTP要求をさらに含むものであり、
    前記アプリケーションへのアクセスの要求の受信に応答して、前記リモートウェブクライアントによって実行されるときに、前記リモートウェブクライアントを介して画像データをグラフィカルユーザインターフェースに表示するとともに、ユーザによってなされる入力の指示を前記ホストコンピューティングシステムに伝送するように構成されるコードモジュールを伝送すること、
    前記ホストコンピューティングシステムの前記ディスプレイバッファから前記アプリケーションの前記グラフィカルユーザインターフェースに表示させるために前記画像データを前記コードモジュールに伝送すること、
    前記グラフィカルユーザインターフェースの変更部分を含む1つ以上の画像ブロックを前記リモートウェブクライアントによる表示のために伝送することによって、前記リモートウェブクライアントによって表示される前記グラフィカルユーザインターフェースにおける画像データを更新することであって、前記グラフィカルユーザインターフェースの未変更部分を含まない画像ブロックは伝送されない、前記更新すること、及び
    前記リモートウェブクライアントから、表示された第2ウィンドウに対して前記ユーザによってなされる入力の前記指示を受信することによって、前記アプリケーションとのユーザ対話を促進する
    ように構成されているシステム。
  13. 前記クライアントコンピューティング機器は、スマートフォン、タブレットコンピュータ、ラップトップコンピュータおよびデスクトップコンピュータのうちの1つである請求項12に記載のシステム。
  14. 前記リモートプレゼンテーションサービスモジュールは、前記アプリケーションへのアクセスの要求に応答して、前記クライアントコンピューティング機器に、HTTPトランザクションの一部としてライアントロジックを伝送するようにさらに構成されている請求項12に記載のシステム。
  15. 前記ホストコンピューティングシステムは、それぞれが1つ以上のアプリケーションをホストし、それぞれが前記1つ以上のアプリケーションへのリモートアクセスを個別のウェブクライアントに提供する複数の仮想マシンを含む請求項12に記載のシステム。
  16. 前記統一資源識別子は、前記アプリケーションを識別する第1部分と、前記アプリケーションを介して開くファイルを識別する第2部分と、好みのウィンドウサイズを指定する第3部分とを含む請求項12に記載のシステム。
  17. 前記リモートプレゼンテーションサービスモジュールは、前記リモートウェブクライアントから受信するマウス入力イベントの位置を前記ホストコンピューティングシステムの座標系に変換するようにさらに構成されている請求項12に記載のシステム。
  18. 前記ホストコンピューティングシステムは前記クライアントコンピューティング機器とは異なるオペレーティングシステムを実行しており、前記アプリケーションは前記クライアントコンピューティング機器のオペレーティングシステムでネイティブにランするように構成されていない請求項12に記載のシステム。
  19. 前記リモートウェブクライアントはウェブブラウザアプリケーションである請求項12に記載のシステム。
  20. コンテンツを格納する非一時的なコンピュータ読取可能記憶媒体であって、前記コンテンツは、実行された時に、ホストコンピューティングシステムに、ディスプレイ装置を有するクライアント機器上で実行されるリモートウェブクライアントを介して前記ホストコンピューティングシステム上のアプリケーションへのアクセスを提供する方法を行わせるように構成されており、
    前記方法が、
    前記ホストコンピューティングシステム上で実行されるアプリケーションへのアクセスの要求を受信することであって、前記アプリケーションは前記ホストコンピューティングシステムのローカルディスプレイ装置に表示するための第1ウィンドウを有し、前記要求は前記リモートウェブクライアントから受信されて、前記ホストコンピューティングシステムおよび前記アプリケーションを特定する統一資源識別子に基づいており、前記要求が、前記アプリケーションの実行を開始するファイルを示す指示を含む1つ以上の引数を有するHTTP要求をさらに含むものである、前記受信することと、
    前記ホストコンピューティングシステムの前記アプリケーションとのユーザ対話を促進することであって、
    前記アプリケーションへのアクセスの要求の受信に応答して、前記リモートウェブクライアントによって実行されるときに、前記リモートウェブクライアントを介して画像データをグラフィカルユーザインターフェースに表示するとともに、ユーザによってなされる入力の指示を前記ホストコンピューティングシステムに伝送するように構成されるコードモジュールを伝送すること、
    前記ホストコンピューティングシステムのディスプレイバッファから前記アプリケーションの前記グラフィカルユーザインターフェースに表示させるために前記画像データを前記コードモジュールに伝送すること、
    前記グラフィカルユーザインターフェースの変更部分を含む1つ以上の画像ブロックを前記リモートウェブクライアントによる表示のために伝送することによって、前記リモートウェブクライアントによって表示される前記グラフィカルユーザインターフェースにおける画像データを更新することであって、前記グラフィカルユーザインターフェースの未変更部分を含まない画像ブロックは伝送されない、前記更新すること、及び
    前記リモートウェブクライアントから、前記表示される第2ウィンドウに対して前記ユーザによってなされる入力の前記指示を受信することによって、前記ホストコンピューティングシステムの前記アプリケーションとのユーザ対話を促進することを含むものである、コンピュータ読取可能記憶媒体。
  21. 前記コンテンツは、前記ホストコンピューティングシステムのメモリに格納されて、前記コンピューティングシステムに前記方法を行わせるように構成されている命令を含む請求項20に記載のコンピュータ読取可能記憶媒体。
JP2015520243A 2012-07-23 2013-06-11 ウェブクライアントを介したリモートアプリケーションへのアクセスを提供する方法、システム、及びコンピュータ読取可能記憶媒体 Active JP6092381B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/556,013 2012-07-23
US13/556,013 US10353718B2 (en) 2012-07-23 2012-07-23 Providing access to a remote application via a web client
PCT/US2013/045257 WO2014018175A1 (en) 2012-07-23 2013-06-11 Providing access to a remote application via a web client

Publications (2)

Publication Number Publication Date
JP2015529878A JP2015529878A (ja) 2015-10-08
JP6092381B2 true JP6092381B2 (ja) 2017-03-08

Family

ID=48699304

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015520243A Active JP6092381B2 (ja) 2012-07-23 2013-06-11 ウェブクライアントを介したリモートアプリケーションへのアクセスを提供する方法、システム、及びコンピュータ読取可能記憶媒体

Country Status (5)

Country Link
US (1) US10353718B2 (ja)
EP (1) EP2875425B1 (ja)
JP (1) JP6092381B2 (ja)
AU (1) AU2013293535B2 (ja)
WO (1) WO2014018175A1 (ja)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10079892B2 (en) * 2010-04-16 2018-09-18 Avaya Inc. System and method for suggesting automated assistants based on a similarity vector in a graphical user interface for managing communication sessions
US8688734B1 (en) 2011-02-04 2014-04-01 hopTo Inc. System for and methods of controlling user access and/or visibility to directories and files of a computer
US9210213B2 (en) * 2011-03-03 2015-12-08 Citrix Systems, Inc. Reverse seamless integration between local and remote computing environments
US10983747B2 (en) * 2011-07-15 2021-04-20 Vmware, Inc. Remote desktop mirroring
US20130073670A1 (en) * 2011-09-15 2013-03-21 Microsoft Corporation Geo-Migration Of User State
US8713658B1 (en) 2012-05-25 2014-04-29 Graphon Corporation System for and method of providing single sign-on (SSO) capability in an application publishing environment
US9419848B1 (en) 2012-05-25 2016-08-16 hopTo Inc. System for and method of providing a document sharing service in combination with remote access to document applications
US9239812B1 (en) 2012-08-08 2016-01-19 hopTo Inc. System for and method of providing a universal I/O command translation framework in an application publishing environment
WO2014035936A2 (en) 2012-08-31 2014-03-06 Citrix Systems Inc. Reverse seamless integration between local and remote computing environments
US9189132B2 (en) * 2012-09-29 2015-11-17 Oracle International Corporation Dynamic configurable menu using self-describing applications
US9723091B1 (en) * 2012-11-09 2017-08-01 Noble Systems Corporation Variable length protocol using serialized payload with compression support
US11716392B2 (en) * 2013-04-24 2023-08-01 Blackberry Limited Updating an application at a second device based on received user input at a first device
US9393918B2 (en) * 2013-07-26 2016-07-19 GM Global Technology Operations LLC Methods, systems and apparatus for providing application generated information for presentation at an automotive head unit
US10057325B2 (en) * 2014-03-31 2018-08-21 Nuvestack, Inc. Remote desktop infrastructure
US10437432B2 (en) * 2014-06-27 2019-10-08 Vmware, Inc. Integration of user interface technologies
WO2016065080A1 (en) * 2014-10-21 2016-04-28 Twilio, Inc. System and method for providing a miro-services communication platform
US11075976B2 (en) * 2014-12-24 2021-07-27 Vmware, Inc. Remoting application user interfaces
US10693923B2 (en) 2015-01-28 2020-06-23 Vmware, Inc. Establishing streaming sessions during remote sessions
WO2016141131A1 (en) 2015-03-03 2016-09-09 Software Robotics Corporation Limited Software robots for programmatically controlling computer programs to perform tasks
US10547711B2 (en) 2015-03-25 2020-01-28 Vmware, Inc. Using off-screen user interface data during remote sessions
US10970101B2 (en) * 2016-06-03 2021-04-06 Vmware, Inc. System and method for dynamically configuring virtual displays and virtual inputs for different remote sessions that each present content for a virtual machine
US10469562B2 (en) 2016-06-24 2019-11-05 Vmware, Inc. Virtual machine pixel remoting
KR101951913B1 (ko) * 2016-11-08 2019-02-26 (주) 퓨전데이타 웹 가상화 시스템 및 서비스 방법
KR20180051719A (ko) * 2016-11-08 2018-05-17 (주) 퓨전데이타 Html5 기반의 가상화 융합형 웹서비스 시스템 및 방법
CN109213546B (zh) * 2017-06-30 2021-09-07 武汉斗鱼网络科技有限公司 用于windows客户端程序的登录处理方法和装置
US11201906B2 (en) * 2017-08-29 2021-12-14 International Business Machines Corporation Providing instructions during remote viewing of a user interface
JP2019056971A (ja) * 2017-09-19 2019-04-11 株式会社東芝 データ転送回路、データ転送方法及びプログラム
US11153364B1 (en) * 2017-11-29 2021-10-19 Parallels International Gmbh Embedding remote applications into HTML pages
US10861162B2 (en) * 2017-12-08 2020-12-08 Ebay Inc. Object identification in digital images
CN110022341B (zh) * 2018-01-10 2022-01-25 腾讯科技(深圳)有限公司 一种数据传输方法及相关设备
US11758016B2 (en) * 2018-01-19 2023-09-12 Vmware, Inc. Hosted application as web widget toolkit
US10684871B2 (en) 2018-06-03 2020-06-16 Apple Inc. Multi-process model for cross-platform applications
WO2020035738A1 (en) * 2018-08-16 2020-02-20 Soroco Private Limited Techniques for automated control of computer programs through text-based user interfaces
US11579830B2 (en) * 2018-10-31 2023-02-14 International Business Machines Corporation Displaying a window of a remote desktop computer on a mobile device with a native layout
BR112021009629A2 (pt) * 2018-11-23 2021-08-10 Nagravision S.A. método de processamento do conteúdo da interface de usuário, sistema, e, mídia legível por computador não transitória
US20200233548A1 (en) * 2019-01-21 2020-07-23 Promethean Limited Connected computing device software integration systems and methods
US10852901B2 (en) 2019-01-21 2020-12-01 Promethean Limited Systems and methods for user interface adjustment, customization, and placement
JP6978447B2 (ja) * 2019-01-22 2021-12-08 ファナック株式会社 表示データ提供装置
US11507398B1 (en) * 2019-03-18 2022-11-22 Parallels International Gmbh Enhancing user experience on moving and resizing windows of remote applications
US11442599B2 (en) 2019-06-07 2022-09-13 Microsoft Technology Licensing, Llc Systems and methods for hosting a browser within another browser
US11893199B2 (en) * 2020-06-10 2024-02-06 Microsoft Technology Licensing, Llc Systems and methods for viewing incompatible web pages via remote browser instances
CN114756184B (zh) * 2020-12-28 2024-10-18 华为技术有限公司 协同显示方法、终端设备及计算机可读存储介质
US20220398140A1 (en) * 2021-06-09 2022-12-15 Citrix Systems, Inc. Enabling microapp access based on determined application states and user-initiated triggering events
US11875164B2 (en) * 2022-01-11 2024-01-16 Vmware, Inc. Method and system to launch local applications seamlessly from a remote desktop
US11567646B1 (en) * 2022-01-13 2023-01-31 Vmware, Inc. Resizing a logon screen or other user interface (UI) elements prior to login

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6343313B1 (en) * 1996-03-26 2002-01-29 Pixion, Inc. Computer conferencing system with real-time multipoint, multi-speed, multi-stream scalability
US6226657B1 (en) * 1997-10-15 2001-05-01 Micron Electronics, Inc. Method and apparatus for generating a remote printable report
US20030069968A1 (en) * 1998-10-01 2003-04-10 O'neil Kevin M. System for balancing loads among network servers
US6874086B1 (en) 2000-08-10 2005-03-29 Oridus, Inc. Method and apparatus implemented in a firewall for communicating information between programs employing different protocols
US7003799B2 (en) * 2001-01-30 2006-02-21 Hewlett-Packard Development Company, L.P. Secure routable file upload/download across the internet
GB2375214B (en) * 2001-05-02 2004-09-29 Virtual Access Ltd Secure payment method and system
US20020198965A1 (en) * 2001-06-26 2002-12-26 Kraft Matthew J. Method and apparatus to facilitate establishing a distributed internet application platform
US20050043998A1 (en) * 2001-11-19 2005-02-24 Wolfgang Bross Computer- based transaction tax processing system service module, method and computer program product for providing transaction tax services
JP4316295B2 (ja) 2003-05-21 2009-08-19 株式会社エヌ・ティ・ティ・ドコモ シンクライアントシステム、シンクライアント端末機、中継装置、サーバ装置及びシンクライアント端末画面表示方法
US7418472B2 (en) * 2003-09-30 2008-08-26 Microsoft Corporation Systems and methods for determining remote device media capabilities
JP4738805B2 (ja) 2004-12-16 2011-08-03 株式会社リコー 画面共有システム、画面共有方法、画面共有プログラム
US20060230105A1 (en) * 2005-04-06 2006-10-12 Ericom Software B 2001 Ltd Method of providing a remote desktop session with the same look and feel as a local desktop
US8453148B1 (en) * 2005-04-06 2013-05-28 Teradici Corporation Method and system for image sequence transfer scheduling and restricting the image sequence generation
US20060265662A1 (en) 2005-05-19 2006-11-23 Custom Credit Systems, L.P. System and method for generating and updating user interfaces of web-based applications
US20070083660A1 (en) * 2005-09-23 2007-04-12 Thornton Barry W Amorphic Computing
JP4981461B2 (ja) * 2007-01-18 2012-07-18 株式会社日立製作所 情報秘匿化方法、および情報秘匿装置
JP5279247B2 (ja) 2007-12-05 2013-09-04 キヤノン株式会社 クライアント、サーバ及びそれらの制御方法、コンピュータプログラム
JP2009245301A (ja) 2008-03-31 2009-10-22 Nec Corp セッション管理・制御装置、方法、及び、プログラム
US8176434B2 (en) * 2008-05-12 2012-05-08 Microsoft Corporation Virtual desktop view scrolling
US8595371B2 (en) 2008-09-19 2013-11-26 Samsung Electronics Co., Ltd. Sending a remote user interface
US8254704B2 (en) 2008-10-30 2012-08-28 Microsoft Corporation Remote computing platforms providing high-fidelity display and interactivity for clients
JP4723010B2 (ja) 2009-04-21 2011-07-13 株式会社デジタル サーバ装置、サーバ・クライアントシステム、サーバプログラムおよびそれを記録した記録媒体
US20110157322A1 (en) * 2009-12-31 2011-06-30 Broadcom Corporation Controlling a pixel array to support an adaptable light manipulator
EP2553561A4 (en) 2010-04-01 2016-03-30 Citrix Systems Inc INTERACTION WITH REMOTE APPLICATIONS DISPLAYED ON A VIRTUAL DESKTOP OF A TABLET COMPUTER DEVICE
US9043706B2 (en) * 2010-08-31 2015-05-26 Anders Nancke-Krogh System and method for using state replication between application instances to provide a collaborative desktop environment
US20120079374A1 (en) * 2010-09-29 2012-03-29 Apple Inc. Rendering web page text in a non-native font
US20120084369A1 (en) * 2010-09-30 2012-04-05 Microsoft Corporation Unified Reconnection To Multiple Remote Servers
EP2472452A1 (en) * 2010-12-28 2012-07-04 Amadeus S.A.S. Method of providing assistance to the end-user of a software application
JP2012099132A (ja) 2011-12-27 2012-05-24 Casio Comput Co Ltd クライアント装置及びプログラム

Also Published As

Publication number Publication date
WO2014018175A1 (en) 2014-01-30
EP2875425A1 (en) 2015-05-27
AU2013293535B2 (en) 2016-01-14
US20140026057A1 (en) 2014-01-23
JP2015529878A (ja) 2015-10-08
US10353718B2 (en) 2019-07-16
AU2013293535A1 (en) 2015-01-22
EP2875425B1 (en) 2020-12-30

Similar Documents

Publication Publication Date Title
JP6092381B2 (ja) ウェブクライアントを介したリモートアプリケーションへのアクセスを提供する方法、システム、及びコンピュータ読取可能記憶媒体
US10601633B2 (en) Virtual window screen renderings using application connectors
US11172042B2 (en) Platform-independent application publishing to a front-end interface by encapsulating published content in a web container
US20200252413A1 (en) Remoting application across a network using draw commands with an isolator application
US10976981B2 (en) Remote desktop exporting
US9384526B2 (en) System and method for handling remote drawing commands
US10158701B2 (en) Method and system for providing a state model of an application program
EP2649500B1 (en) Methods and systems for accessing and controlling a remote desktop of a remote machine in real time by a web browser at a client device via http api utilizing a transcoding server
US10552639B1 (en) Local isolator application with cohesive application-isolation interface
US20140082511A1 (en) Method and system for emulating desktop software applications in a mobile communication network
EP2649532B1 (en) Methods and systems for remote desktop session redrawing via http headers
EP2649533B1 (en) Methods and systems for facilitating a remote desktop session utilizing long polling
US12120198B2 (en) Systems for platform-independent application publishing to a web container
WO2020207085A1 (zh) 信息分享方法、装置、电子设备及存储介质
US20140032699A1 (en) Remote user interface in a terminal server environment
US9871868B2 (en) Computer-implemented methods, computer readable media, and systems for initiating co-use of applications
JP5936103B2 (ja) クライアントでJavaメソッドを呼び出すシステム、コンピュータ、方法及びプログラム
CN113784049A (zh) 安卓系统虚拟机的摄像头调用方法、电子设备和存储介质
US10725797B2 (en) Service-driven dynamic user interface technology
US11758016B2 (en) Hosted application as web widget toolkit
CN115756696A (zh) 信息处理方法、装置、设备和介质
US10540136B2 (en) Faster frame buffer rendering over a network
KR101316677B1 (ko) 사용자 인터페이스 가상화에 의한 어플리케이션 서비스 시스템 및 방법
CN113835816A (zh) 一种虚拟机桌面显示方法、装置、设备及可读存储介质
CN116112573B (zh) 终端界面转换方法、装置、设备、存储介质和程序产品

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160308

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160608

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161004

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161219

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170117

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170208

R150 Certificate of patent or registration of utility model

Ref document number: 6092381

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350