JP6072018B2 - ウェブ・ブラウザ・ベースのデスクトップおよびアプリケーション・リモート・ソリューション - Google Patents

ウェブ・ブラウザ・ベースのデスクトップおよびアプリケーション・リモート・ソリューション Download PDF

Info

Publication number
JP6072018B2
JP6072018B2 JP2014514491A JP2014514491A JP6072018B2 JP 6072018 B2 JP6072018 B2 JP 6072018B2 JP 2014514491 A JP2014514491 A JP 2014514491A JP 2014514491 A JP2014514491 A JP 2014514491A JP 6072018 B2 JP6072018 B2 JP 6072018B2
Authority
JP
Japan
Prior art keywords
video
remote presentation
session
client
graphical data
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
JP2014514491A
Other languages
English (en)
Other versions
JP2014523669A5 (ja
JP2014523669A (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.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2014523669A publication Critical patent/JP2014523669A/ja
Publication of JP2014523669A5 publication Critical patent/JP2014523669A5/ja
Application granted granted Critical
Publication of JP6072018B2 publication Critical patent/JP6072018B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/08Protocols specially adapted for terminal emulation, e.g. Telnet

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Description

[0001] リモート・プレゼンテーション・セッションにおいて、クライアント・コンピュータとサーバ・コンピュータとは通信ネットワークを介して通信する。クライアントは、マウスのカーソルを動かしたりキーボードを押すなどによりローカルに受け取られた入力を、サーバへ送る。サーバは、その入力を受け取り、それと関連する処理、例えば、ユーザ・セッションにおけるアプリケーションの実行などを行う。サーバは、グラフィカル出力や音などのような出力を結果として生じさせる処理を行うと、その出力を、呈示するためにクライアントへ送る。このように、クライアントのユーザからは、アプリケーションが、実際にはサーバで実行されているときに、クライアントでローカルに実行されているように見える。
[0002] 従来のリモート・プレゼンテーション・セッションでの問題は、リモート・プレゼンテーション・セッションに参加しているクライアントが、リモート・プレゼンテーション・セッション・アプリケーションをインストールする必要があるということである。そのアプリケーションは、リモート・プレゼンテーション・セッション・プロトコルに従ってサーバと通信するように構成されるアプリケーションである。この必要性の意味するところは、リモート・プレゼンテーション・セッション・サーバと通信できるネットワーク接続を有するユーザへアクセス可能であるが、セッションを行うために用いるリモート・プレゼンテーション・セッション・アプリケーションを欠いている多くのコンピュータが存在し得る、ということである。
[0003] また、クライアントが、リモート・プレゼンテーション・セッションの特定のアプリケーションではなくウェブ・ブラウザを用いてリモート・プレゼンテーション・セッションを行う技術もある。それらの技術では、一般に、リモートのデスクトップ・イメージが複数のタイルへと分割され、イメージ・タイルのそれぞれ(または、クライアントがタイルをキャッシュしている場合には、タイルのインジケーション(indication))がクライアントへ送られ、クライアントのウェブ・ブラウザで表示される。リモートのデスクトップ・イメージが変化すると、「ダーティー」タイル、即ち、イメージが変化したタイルが決定され、ダーティー・タイルが、ウェブ・ブラウザでの表示のためにクライアントへ送られる。
[0004] クライアントがウェブ・ブラウザを用いてリモート・プレゼンテーション・セッションを行うこれらの技術には多くの問題があり、それらのうちの幾つかはよく知られている。
[0005] クライアントがイメージ・タイルを表示する場合における、ウェブ・ブラウザを用いてリモート・プレゼンテーション・セッションを行うクライアントに関する1つの問題は、性能の問題である。特定のリモート・プレゼンテーション・セッション・アプリケーションを用いるリモート・プレゼンテーション・セッションと比較すると、ウェブ・ブラウザおよびイメージ・タイルを用いる技術は、フレーム・レートがかなり低い。また、フレーム・レートがかなり低いだけではなく、そのように低いフレーム・レートは、ユーザ経験に関して好ましくない影響を与える場合が多い。即ち、フレーム・レートが遅いことが多いと、リモート・プレゼンテーション・セッションで表示される動きがぎくしゃくしたものになり、ユーザが供給した入力と、その入力の処理から得られるグラフィカル結果をユーザが見るときとの間が、離れてしまう。
[0006] 従って、リモート・プレゼンテーション・セッション・アプリケーションを欠くクライアントが、イメージ・タイルではなくビデオを用いてサーバとのリモート・プレゼンテーション・セッションを行うための発明を提供するための改善があり得る。本発明の実施形態では、クライアントはウェブ・ブラウザ・アプリケーションを有し、そのウェブ・ブラウザ・アプリケーションは、ビデオを表示するように、およびウェブ・ブラウザ・アプリケーションへ向けられたユーザ入力を受け取るように、構成される。クライアントは、ウェブ・ブラウザを用いて、サーバとのAjax(Asynchronous JavaScript(登録商標) and XML(Extensible Markup Language))接続を確立して接続を開く。次に、クライアントとサーバとは情報を交換して、サーバに対してクライアントを認証する。
[0007] 次に、クライアントは、ウェブ・ブラウザ・ウィンドウへ向けられたユーザ入力(例えば、マウスやキーボードやタッチ)を取り込み、それを、例えばXMLやJSONとしてフォーマットされたサーバへ非同期で送り、サーバは、その入力を受け取り、適切なアプリケーションまたはユーザ・セッションへ入れる(injects)。アプリケーションまたはユーザ・セッションがグラフィカル出力を生成すると、サーバは、そのグラフィカル出力を取り込み、ビデオへとエンコードし、それを、ウェブ・ブラウザを介しての表示のためにクライアントへ送る。
図1は、本発明の実施形態を実施できる例示的な汎用コンピューティング環境を示す。 図2は、本発明の実施形態を実施できる例示的なリモート・プレゼンテーション・セッション・サーバを示す。 図3は、ウェブ・ブラウザとのリモート・プレゼンテーション・セッションを行うクライアントを示し、この図では、プロキシがリモート・プレゼンテーション・セッション・データをビデオに変換する。 図4は、ウェブ・ブラウザとのリモート・プレゼンテーション・セッションを行うクライアントを示し、この図では、サーバが、リモートのデスクトップまたはアプリケーションのインスタンスにより生成されたグラフィカル出力からビデオを生成する。 図5は、サーバとのリモート・プレゼンテーション・セッションを行う2つのクライアントを示し、1つのクライアントは、ウェブ・ブラウザを用い、プロキシを通じて通信を行い、グラフィックスをビデオとして受け取り、1つのクライアントは、サーバと直接に通信し、リモート・プレゼンテーション・セッション・データとしてエンコードされたグラフィックスを受け取る。 図6は、ビデオとしてエンコードされるグラフィカル・データの2つのフレームを示し、各フレームの1つの部分は同じイメージを含むが場所が異なり、一方のフレームは他方のフレームのエンコーディングに基づいてエンコードされる。 図7は、ビデオとしてエンコードされるグラフィカル・データの1つのフレームを示し、このフレームは、前のフレームと共通の特徴を共有し、かつフレームが異なっている「ダーティー」領域を有する。 図8は、リモート・プレゼンテーション・セッションにおいてウェブ・ブラウザを用いるクライアントとのリモート・プレゼンテーション・セッションを行うサーバのための例示的な動作プロシージャを示す。 図9は、リモート・プレゼンテーション・セッション・サーバと、リモート・プレゼンテーション・セッションでウェブ・ブラウザを用いるクライアントとの間でのリモート・プレゼンテーション・セッションを促進させるプロキシ・サーバのための例示的な動作プロシージャを示す。 図10は、サーバとのリモート・プレゼンテーション・セッションを行うためにウェブ・ブラウザを用いるクライアントのための例示的な動作プロシージャを示す。 図11は、クライアントとのリモート・プレゼンテーション・セッションを行う1以上の仮想マシンをホストすることができる例示的な仮想マシン・サーバを示し、クライアントは、ウェブ・ブラウザを用い、リモート・プレゼンテーション・グラフィックスをビデオとして受け取る。 図12は、クライアントとのリモート・プレゼンテーション・セッションを行う1以上の仮想マシンをホストすることができる別の例示的な仮想マシン・サーバを示し、クライアントは、ウェブ・ブラウザを用い、リモート・プレゼンテーション・グラフィックスをビデオとして受け取る。 図13は、複数の仮想マシンをホストする仮想マシン・サーバを含む例示的なシステムを示し、各仮想マシンは、クライアントとのリモート・プレゼンテーション・セッションを行い、クライアントは、ウェブ・ブラウザを用い、リモート・プレゼンテーション・グラフィックスをビデオとして受け取る。
[0021] 本発明の実施形態は、1以上のコンピュータ・システムで実行することができる。図1および以下の説明は、本発明の実施形態を実施できる適切なコンピュータ環境の簡単な一般的説明を提供することを意図している。
[0022] 図1は、例示的な汎用コンピューティング・システムを示す。汎用コンピューティング・システムは、プロセッシング・ユニット21を含む従来のコンピュータ20などを含むことができる。プロセッシング・ユニット21は1以上のプロセッサを含むことができ、各プロセッサは1以上のプロセッシング・コアを有することができる。1より多くのプロセッシング・コアを有するプロセッサはマルチコア・プロセッサと呼ばれることが多く、マルチコア・プロセッサは、シングル・チップ・パッケージ内に含まれる複数のプロセッサを含む。
[0023] また、コンピュータ20は、グラフィックス・プロセッシング・ユニット(GPU)90を含むことができる。GPU90は、コンピュータ・グラフィックスを操作するために最適化された特殊なマイクロプロセッサである。プロセッシング・ユニット21は、作業をGPU90へ委ねることができる。GPU90は、それ自体のグラフィックス・メモリを有すること、および/またはシステム・メモリ22の一部へアクセスすることができる。プロセッシング・ユニット21と同様に、GPU90は1以上のプロセッシング・ユニットを含むことができ、各プロセッシング・ユニットは1以上のコアを有することができる。
[0024] また、コンピュータ20は、システム・メモリ22とシステム・バス23とを含むことができ、システム・バス23は、システムが動作状態のときに、システム・メモリ22を含む様々なシステム・コンポーネントを、プロセッシング・ユニット21と通信できるように結合する。システム・メモリ22は、リード・オンリー・メモリ(ROM)24とランダム・アクセス・メモリ(RAM)25とを含むことができる。スタート・アップの時などにコンピュータ20内のエレメント間での情報の転送を手助けする基本的ルーチンを含むベーシック入出力システム(BIOS)26は、ROM24に格納される。システム・バス23は、メモリ・バスまたはメモリ・コントローラー、周辺バス、またはローカル・バスを含む幾つかのタイプのバス構造のうちの任意のものであり、様々なバス構造のうちの任意のものを実装する。システム・バス23には、ダイレクト・メモリ・アクセス(DMA)・コントローラー80を結合することができ、DMAコントローラー80は、プロセッシング・ユニット21から独立してメモリに対する読み出しおよび/または書き込みを行うように構成される。更に、ストレージ・ドライブI/F32や磁気ディスク・ドライブI/F33などのような、システム・バス23へ接続されるデバイスもまた、プロセッシング・ユニット21から独立して、DMAコントローラー80を用いずに、メモリに対する読み出しおよび/または書き込みを行うように構成される。
[0025] コンピュータ20は、ハード・ディスク(示さず)またはソリッド・ステート・ディスク(SSD)(示さず)に対する読み出しおよび書き込みを行うためのストレージ・ドライブ27と、取り外し可能磁気ディスク29に対する読み出しおよび書き込みを行うための磁気ディスク・ドライブ28と、CD−ROMや他の光媒体などのような取り外し可能光ディスク31に対する読み出しおよび書き込みを行うための光ディスク・ドライブ30とを、更に含むことができる。ハード・ディスク・ドライブ27、磁気ディスク・ドライブ28、および光ディスク・ドライブ30は、それぞれ、ハード・ディスク・ドライブ・インターフェース32、磁気ディスク・ドライブ・インターフェース33、および光ディスク・ドライブ・インターフェース34によりシステム・バス23と接続されているところが示されている。ドライブと、それらと関連するコンピュータ読取可能ストレージ媒体とは、コンピュータ読取可能命令、データ構造、プログラム・モジュール、およびコンピュータ20に対する他のデータの不揮発性ストレージを提供する。
[0026] ここで説明した例示的な環境は、ハード・ディスク、取り外し可能磁気ディスク29、および取り外し可能光ディスク31を用いるが、コンピュータによりアクセス可能なデータを格納できる他のタイプのコンピュータ読取可能媒体、例えば、フラッシュ・メモリ・カード、デジタル・ビデオ・ディスクまたはデジタル・バーサタイル・ディスク(DVD)、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM)なども例示的なオペレーティング環境で使用できることは、当業者には理解できる。一般に、そのようなコンピュータ読取可能ストレージ媒体は、本開示の特徴を実現するプロセッサ実行可能命令を格納するために、幾つかの実施形態で使用することができる。また、コンピュータ20は、スモール・コンピュータ・システム・インターフェース(SCSI)・バス56を介してストレージ・デバイス62へ接続するホスト・アダプタ55を含むことができる。
[0027] コンピュータ読取可能命令を含む複数のプログラム・モジュールを、コンピュータ読取可能媒体、例えば、ハード・ディスク、磁気ディスク29、光ディスク31、ROM24、RAM25などに格納することができ、プログラム・モジュールは、オペレーティング・システム35、1以上のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データ38を含む。コンピュータ読取可能命令は、プロセッシング・ユニットにより実行されると、以下で更に詳細に説明するアクションを行わせたり、様々なプログラム・モジュールをインストールさせたりする。ユーザは、キーボード40やポインティング・デバイス42などのような入力デバイスを通じてコンピュータへ、コマンドおよび情報を入力することができる。他の入力デバイス(示さず)としては、マイクロフォン、ジョイスティック、ゲーム・パッド、サテライト・ディッシュ、スキャナーなどが含まれ得る。これらおよび他の入力デバイスは、システム・バスと結合されたシリアル・ポート・インターフェース46を通じてプロセッシング・ユニット21と接続されることが多いが、他のインターフェース、例えば、パラレル・ポート、ゲーム・ポート、ユニバーサル・シリアル・バス(USB)などにより接続されることもできる。ディスプレイ47や他のタイプのディスプレイ・デバイスも、ビデオ・アダプタ48などのようなインターフェースを介してシステム・バス23と接続することができる。ディスプレイ47に加えて、コンピュータは、典型的には、スピーカーやプリンターなどのような他の周辺出力デバイス(示さず)を含む。
[0028] コンピュータ20は、ネットワーク化された環境で、リモート・コンピュータ49などのような1以上のリモート・コンピュータへの論理接続を用いて、動作することができる。リモート・コンピュータ49は、別のコンピュータ、サーバ、ルーター、ネットワークPC、ピア・デバイス、または他の共通ネットワーク・ノードとすることができ、典型的には、コンピュータ20に関して説明した多くのまたは全てのエレメントを含むことができるが、図1ではメモリ・ストレージ・デバイス50のみを示している。図1に示す論理接続は、ローカル・エリア・ネットワーク(LAN)51およびワイド・エリア・ネットワーク(WAN)52を含むことができる。そのようなネットワーク環境は、オフィス、エンタープライズ・ワイド・コンピュータ・ネットワーク、イントラネット、およびインターネットにおいて一般的なものである。
[0029] コンピュータ20は、LANネットワーク環境で用いる場合、ネットワーク・インターフェースまたはアダプタ53を通じてLAN51と接続することができる。コンピュータ20は、WANネットワーク環境で用いる場合、典型的には、モデム54、またはインターネットなどのようなワイド・エリア・ネットワーク52を通じての接続を確立するための他の手段を含むことができる。内部または外部に備えられ得るモデム54は、シリアル・ポート・インターフェース46を介してシステム・バス23と接続することができる。ネットワーク化された環境では、コンピュータ20と関連して示されているプログラム・モジュールまたはその一部は、リモート・メモリ・ストレージ・デバイスに格納することができる。示されたネットワーク環境が例示であり、コンピュータ間の通信リンクを確立するために別の手段も使用できることは、理解できる。
[0030] コンピュータ20がネットワーク環境で動作するように構成された実施形態では、OS35はネットワーク上でリモートに格納され、コンピュータ20は、ローカルに格納したOSでブートせずに、リモートに格納されたOSでネットブート(netboot)することができる。1つの実施形態では、コンピュータ20はシン・クライアントを含み、シン・クライアントでは、OS35は、完全なOSよりも小さく、むしろ、ネットワーク処理と、モニター47などでのディスプレイ出力とを処理するように構成されたカーネルである。
[0031] 図2は、本発明の特徴を実装できる例示的な環境を概略的に示す。例えば、サーバ204は、図8の動作プロシージャを実施することができる。図2に示された例示的なエレメントは、本発明を説明するための動作の枠組みを提供するために示されていることを、当業者であれば理解することができる。従って、幾つかの実施形態では、各環境の物理的配置は、様々なインプリメンテーション・スキームに応じて異なるものとなる。従って、例示的な動作の枠組みは、単なる例示として扱われるものであり、特許請求の範囲を限定するものではない。
[0032] 図2にはサーバ204が示され、サーバ204は、リモート・プレゼンテーション・セッション・サーバを実現するように構成される回路を含むことができ、別の実施形態では、サーバ204は、リモート・デスクトップ接続をサポートするように構成される回路を含むことができる。示された実施形態では、サーバ204は、クライアントを接続するために1以上のセッション、例えば、セッション1ないしN(Nは2より大きい整数)を生成するように構成することができる。簡単に説明すると、本発明の例示的な実施形態におけるセッションは、一般的には、動作環境を含むことができ、この動作環境は、サーバ204のカーネル214と対話するように構成される複数のサブシステム、例えば、ソフトウェア・コードにより実現される。例えば、セッションは、デスクトップ・ウィンドウなどのようなユーザ・インターフェースや、ウィンドウ内のマウスの動きを追跡するサブシステムや、アイコン上でのマウスのクリックを、プログラムのインスタンスを実現するコマンドへと変換するサブシステムなどをインスタンス化するプロセスを含むことができる。セッションは、ユーザ毎にサーバ204により生成することができ、例えば、サーバ204が、ネットワーク接続を介してクライアント201から接続リクエストを受信したときに、生成することができる。一般に、接続リクエストはトランスポート・ロジック210により最初に処理され、トランスポート・ロジック210は、例えば、サーバ204の回路により実現することができる。トランスポート・ロジック210は、幾つかの実施形態では、ネットワーク・アダプタ、ファームウェア、およびソフトウェアを含むことができ、接続メッセージを受信するように、およびそれらの接続メッセージをエンジン212へ送るように構成することができる。図2に示すように、トランスポート・ロジック210は、幾つかの実施形態では、各セッションに対してのプロトコル・スタック・インスタンスを含むことができる。一般に、各プロトコル・スタック・インスタンスは、ユーザ・インターフェース出力をクライアントへ送るように、およびクライアントから受信したユーザ入力を、そのセッションと関連するセッション・コア244へ送るように、構成することができる。
[0033] 図2の概略的な説明を続ける。エンジン212は、本発明の幾つかの実施形態では、セッションに関するリクエストの処理、各セッションの機能の決定、セッションに対して1組の物理リソースを割り当てることによるセッションの生成、およびセッションに対するプロトコル・スタック・インスタンスのインスタンス化を行うように、構成することができる。幾つかの実施形態では、エンジン212は、上記の動作プロシージャのうちの幾つかを実施できる特殊回路コンポーネントにより、実現することができる。例えば、幾つかの実施形態における回路は、メモリと、エンジン212を実現するコードを実行するように構成されたプロセッサとを含むことができる。図2に示すように、幾つかのインスタンスでは、エンジン212は、接続リクエストを受信すること、および、例えば、ライセンスが使用可能であり、そのリクエストに対してセッションを生成できると決定することができる。サーバ204が、リモート・デスクトップ能力を含むリモート・コンピュータである場合、エンジン212は、ライセンスに関する検査を行わずに、接続リクエストに応答してセッションを生成するように構成することができる。図2に示すように、セッション・マネージャ216は、エンジン212からメッセージを受け取るように構成することができ、かつ、そのメッセージに応答して、テーブルへセッション識別子を付加し、セッション識別子へメモリを割り当て、セッション識別子へ割り当てられたメモリにおいて、システム環境変数とサブシステム・プロセスのインスタンスとを生成するように、構成することができる。
[0034] 図2に示すように、セッション・マネージャ216は、ランタイム・サブシステム240などのような環境サブシステムをインスタンス化することができ、ランタイム・サブシステム240は、セッション・コア244などのようなカーネル・モード部分を含むことができる。例えば、1つの実施形態では、環境サブシステムは、サービスの或るサブセットをアプリケーション・プログラムへ公開し、オペレーティング・システム214のカーネルへのアクセス・ポイントを提供するように、構成される。例示的な実施形態では、ランタイム・サブシステム240は、プロセスおよびスレッドの実行を制御することができ、セッション・コア244は、リクエストをカーネル214のエグゼクティブ(executive)へ送り、スレッドに対してメモリを割り当て、それらの実行される時間をスケジュールすることができる。1つの実施形態では、セッション・コア244は、グラフィックス・ディスプレイ・インターフェース(GDI)246、セキュリティ・サブシステム250、および入力サブシステム252を含むことができる。これらの実施形態では、入力サブシステム252は、セッションと関連するプロトコル・スタック・インスタンスを介してクライアント201からユーザ入力を受信するように、および適切なセッションのためにその入力をセッション・コア244へ送信するように、構成することができる。幾つかの実施形態では、ユーザ入力は、絶対的および/または相対的なマウス運動コマンド、マウス座標、マウス・クリックを示す信号、キーボード信号、ジョイスティック運動信号などを、含むことができる。ユーザ入力、例えば、アイコン上でのマウスのダブルクリックは、セッション・コア244で受け取ることができ、入力サブシステム252は、ダブルクリックと関連する座標にアイコンが位置することを決定するように、構成することができる。入力サブシステム252は、次に、そのアイコンと関連するアプリケーションのためのプロセスを実行できるランタイム・サブシステム240へ通知を送るように、構成することができる。
[0035] クライアント201から入力を受け取ることに加えて、GDI246により、アプリケーションおよび/またはデスクトップから描画コマンドを受け取り、処理することができる。GDI246は、一般に、グラフィカル・オブジェクト描画コマンドを生成できるプロセスを含むことができる。GDI246は、この例示的な実施形態では、その出力を、リモート・ディスプレイ・サブシステム254へ渡すように構成することができ、コマンドは、セッションに付随するディスプレイ・ドライバのためにフォーマットされる。特定の例示的な実施形態では、リモート・デスクトップの状況において、サーバ204へ1以上の物理的ディスプレイを取り付けることができる。それらの例示的な実施形態では、リモート・ディスプレイ・サブシステム254は、リモート・コンピュータ・システムのディスプレイ・ドライバ(1以上)によりレンダリングされる描画コマンドをミラーするように、およびミラーした情報を、セッションと関連するスタック・インスタンスを介してクライアント201へ送信するように、構成することができる。サーバ204がリモート・プレゼンテーション・セッション・サーバである別の実施形態では、リモート・ディスプレイ・サブシステム254は仮想ディスプレイ・ドライバ(1以上)を含むように構成することができ、仮想ディスプレイ・ドライバは、サーバ204へ物理的に取り付けられたディスプレイと関連しない場合もあり、例えば、サーバ204はヘッドレス(headless)で動作するものであり得る。この実施形態におけるリモート・ディスプレイ・サブシステム254は、1以上の仮想ディスプレイに対する描画コマンドを受け取るように、およびそれらを、セッションと関連するスタック・インスタンスを介してクライアント201へ送るように、構成することができる。本発明の1つの実施形態では、リモート・ディスプレイ・サブシステム254は、各ディスプレイ・ドライバのディスプレイ分解能、例えば、仮想ディスプレイと関連する仮想ディスプレイ・ドライバ(1以上)のディスプレイ分解能や、物理的ディスプレイと関連するディスプレイ・ドライバのディスプレイ分解能を決定するように構成することができ、かつ、
パケットを、関連するプロトコル・スタック・インスタンスを介してクライアント201へ送るように、構成することができる。
[0036] 幾つかの例示的な実施形態では、セッション・マネージャ216は、更に、セッションのログオンおよびログオフを処理するように構成することができ且つセッションのセッション識別子と関連するログオン・プロセスのインスタンスを、インスタンス化することができる。これらの例示的な実施形態では、ログオン・プロセスと関連するグラフィカル・ユーザ・インターフェースを示す描画コマンドを、クライアント201へ送信することができ、クライアント201では、クライアント201のユーザは、アカウント識別子、例えば、ユーザ名/パスワードの組み合わせ、スマート・カード識別子、および/またはバイオメトリック情報を、ログオン・スクリーンへ入力することができる。情報は、サーバ204へ送信し、エンジン212およびセッション・コア244のセキュリティ・サブシステム250へ送ることができる。例えば、特定の例示的な実施形態では、エンジン212は、ユーザ・アカウントがライセンスと関連付けられているか否かを決定するように構成することができ、セキュリティ・サブシステム250は、セッションのためのセキュリティ・トークンを生成するように構成することができる。
[0037] 図3は、ウェブ・ブラウザを用いてリモート・プレゼンテーション・セッションを行うクライアントを示し、ここではプロキシがリモート・プレゼンテーション・データをビデオへと変換する。実施形態では、サーバ304は、図2のサーバ204で実施することができ、プロキシ306およびクライアント308は、図1のコンピュータ20で実施することができる。実施形態では、サーバ304は、リモート・プレゼンテーション・プロトコル・エンコードされたデータを受信および送信することにより、リモート・プレゼンテーション・セッションを行い、クライアント308は、HTTPエンコードされたデータ(ビデオを含む)を受信および送信することにより、リモート・プレゼンテーション・セッションを行う。プロキシ306は、サーバ304からリモート・プレゼンテーション・プロトコル・エンコードされたデータ(例えば、グラフィカル出力)を受信し、それをビデオとしてエンコードし、それをHTTPエンコードされたデータとしてクライアント308へ送信する。同様に、プロキシ306は、クライアント308からHTTPエンコードされたデータ(例えば、ユーザ入力)を受信し、それをリモート・プレゼンテーション・プロトコル・エンコードされたデータとしてエンコードし、それをサーバ304へ送信する。
[0038] クライアント308は、プロキシ306とのHTTP接続を確立することにより、リモート・プレゼンテーション・セッションを開始することができる。HTTP接続は、HTTPの一種、例えば、HTTPS(HTTP Secure)接続とすることができる。このHTTP接続の確立は、クライアント308のウェブ・ブラウザに対するユーザ入力を提供するユーザが、プロキシ306とのHTTP接続の確立と関連するウェブ・ページを開くことなどにより、実現することができる。HTTP接続は、クライアント308とプロキシ306との間でのAjax接続とすることもできる。
[0039] HTTP接続が確立されると、クライアント308は、それ自体の認証をプロキシ306に対して行う(プロキシ306は、その認証と関連する資格情報(credential)を用い、サーバ304に対しての認証を行うことができる)。この認証は、例えば、クライアントがユーザ識別子およびパスワードをプロキシ306へ送ることを含むことができ、プロキシ306は、ユーザとパスワードとのペアのデータベースに対照させて認証を行う。実施形態では、サーバ304とのリモート・プレゼンテーション・セッションの確立において、プロキシ306は、クライアント自体を認証せず、クライアント308からの資格情報を用いて、それ自体を認証する。プロキシ306が、サーバ304とのリモート・プレゼンテーション・セッションの確立に成功すると、プロキシ306は、プロキシ306に対してクライアント308が認証されたと決定することができる。
[0040] また、プロキシ306は、クライアント308と関連するサーバ304とのリモート・プレゼンテーション・セッションを確立する(プロキシ306が既にそのようにしていない場合)。このリモート・プレゼンテーション・セッションでは、プロキシ306は、リモート・プレゼンテーション・セッション・クライアント(例えば、図2のクライアント201)として働き、サーバ304は、リモート・プレゼンテーション・セッション・サーバ(例えば、図2のサーバ204)として働く。実施形態では、サーバ304がプロキシ306とのリモート・プレゼンテーション・セッションを確立するとき、サーバ304は、そのセッションと関連するログインのインジケーションを用い、リモート・プレゼンテーション・セッションにおいてリモートするセッションまたはアプリケーションを決定する。例えば、サーバ304が再接続を行うログインと関連する接続解除されたセッションがある場合や、セッションが全く無い場合がある(その場合、サーバ304はログインのために新たなセッションをインスタンス化することができる)。アプリケーションのセッション出力が、セッションのグラフィカル出力(1以上のアプリケーションを含み得る)ではなく、リモート化される(is remoted)場合、同じプロセスが生じ得る。即ち、接続解除されたアプリケーションを再接続すること、または、接続解除されたアプリケーションが無い場合にアプリケーションを開始することが行われ得る。
[0041] 次に、サーバ304は、リモート化されているもののグラフィカル出力を、リモート・プレゼンテーション・セッションを介してプロキシ306へ送る。これは、図2のサーバ204がグラフィカル出力をクライアント201へリモートするのと同様の様式で行われることができる。プロキシ306は、このリモート・プレゼンテーション・プロトコル・エンコードされたグラフィカル・データを受信し、それを、HTTP接続を介してクライアント308へ送信されるビデオに変換する。実施形態では、プロキシ306は、リモート・プレゼンテーション・プロトコル・エンコードされたグラフィカル・データをデコードして、グラフィカル・データを作成し、次に、そのグラフィカル・データを、ビデオの1以上のフレームとしてエンコードする。このビデオは、クライアントがネイティブにデコードできるフォーマットにエンコードすることができる。例えば、クライアントのウェブ・ブラウザは、HTML5フォーマットのデータを処理するように構成することができ、HTML5<video>タグで参照される1以上のビデオ・フォーマットをネイティブにデコードすることを含む。そのようなフォーマットの一例はH.264である。グラフィカル・データをビデオ・フォーマットにエンコードすると、プロキシ306はそのビデオをクライアント308へ送信し、クライアント308はそのビデオをデコードしてウェブ・ブラウザで表示する。
[0042] クライアント308は、サーバ304が処理するものに影響を及ぼすコマンドを発する。クライアント308のユーザは、クライアント308のウェブ・ブラウザへ向けられる入力を提供することができる。この入力は、マウス、キーボード、およびタッチ入力などのような入力と、それに伴っての、ビデオと相対しての入力が行われた場所(例えば、表示されたビデオの左上隅から右へ50ピクセル、下へ50ピクセル)のインジケーションとを含むことができる。クライアント308は、この入力を、入力検出のためのJavaScript(登録商標)(ジャバ・スクリプト)技術を用いて、ウェブ・ブラウザで取り込むことができる。次に、クライアント308は、入力をプロキシ306へ送信する。クライアント308は、プロキシ306へ送信するための入力を準備することができ、その準備では、例えば、入力を、データ構造および連想配列を表す人間読取可能な形態、例えば、JSON(JavaScript Object Notation)や、XML(Extensible Markup Language)のようなタグ区切りマークアップ・フォーマット(tag-delimited markup format)で表す。
[0043] クライアント308はプロキシ306へ入力を非同期で送信することができ、それにより、入力の送信は、ウェブ・ページでのビデオの表示から独立して行うことができる。非同期通信では、クライアント308は、プロキシ306へ、ウェブ・ページで表示されているビデオから独立して(例えば、ビデオがウェブ・ページで継続して表示されているときに)入力を送ることができる。次に、プロキシ306から応答を受信したときに(例えば、プロキシ306は、入力の処理の結果に対応して、クライアント308へ更にビデオを送信する)、クライアント308はその応答を処理する。
[0044] プロキシ306はクライアント308から、或るフォーマット(例えば、JSONやXML)にエンコードされている入力を受け取り、その入力をデコードし、再びエンコードしてリモート・プレゼンテーション・セッション・データにする。次に、プロキシ306は、このエンコードされたリモート・プレゼンテーション・セッション・データをサーバ304へ送信することができ、サーバ304は、その入力を、リモート・プレゼンテーション・セッションのために適切なユーザ・セッションまたはアプリケーションへ入れ(injects)、そのアプリケーションまたはユーザ・セッションへ提供された入力と関連する処理を行う。その処理により、リモート・プレゼンテーション・セッションと関連する更なるグラフィカル出力が生成されると、サーバ304は、その更なるグラフィカル出力をエンコードしてプロキシ306へ送信することができ、プロキシ306は、それをビデオに変換して、表示するためにクライアント308へ送る。
[0045] 実施形態では、サーバ304およびプロキシ306は仮想マシン(VM)で実行することができ、双方の仮想マシンを同じ物理的ホスト・コンピュータで実行することができる。そのようなシナリオでは、サーバ304およびプロキシ306は、ループバック接続(それ自体が使用するネットワーク・インターフェースを指すIPアドレスを使用するもの、例えば、127.0.0.1など)を介して通信することができる。例えば、サーバ304はポート3389をリッスン(listen)することができ、プロキシ306はポート3390をリッスンすることができる。次に、サーバ304は、データを127.0.0.1:3390へ送ることにより、プロキシ306と通信することができ、プロキシ306は、データを127.0.0.1:3389へ送ることにより、サーバ304と通信することができる。同じ物理マシン上で実行されるサーバ304とプロキシ306との間のループバック接続を用いることにより、従来の(legacy)リモート・プレゼンテーション・サーバが変更無しで動作することを可能とする。これは、サーバ304とリモート・プレゼンテーション・セッションを行うためのウェブ・ブラウザを用いるクライアントとの間の中間物としてプロキシ306を使用することで、どのようにして従来の(legacy)サーバが変更無しで動作することを可能とするかと、似ている。ループバック接続に関して、通信ネットワーク・インターフェースを介してのみ、クライアントへデータを送信するように構成される従来のリモート・プレゼンテーション・サーバを、本発明の実施形態を実現するために用いることができる。なぜなら、サーバは、なおも、ネットワーク・インターフェースを介してクライアント(またはプロキシ)と通信するからである。
[0046] 図4は、ウェブ・ブラウザを用いてリモート・プレゼンテーション・セッションを行うクライアントを示し、ここでは、サーバは、リモート化されているデスクトップまたはアプリケーションのインスタンスにより生成されたグラフィカル出力からビデオを生成する。サーバ404は、図1のコンピュータ20で実施することができる。図3で示すコンピュータと図4で示すコンピュータとの1つの違いは、サーバ404がサーバ304と異なることである。サーバ304は、クライアントと、リモート・プレゼンテーション・プロトコルでエンコードされたデータを交換することによりリモート・プレゼンテーション・セッションを行うように、構成される。サーバ304は、ウェブ・ブラウザを用いてリモート・プレゼンテーション・セッションを行うクライアントへビデオの形のリモート・プレゼンテーション・データを送るように、構成されない。プロキシ306が、サーバからリモート・プレゼンテーション・プロトコル・エンコードされたデータを受け取り、それをビデオに変換するように、およびクライアントからユーザ入力を受け取り、そのユーザ入力をリモート・プレゼンテーション・プロトコルにエンコードするように、構成される。
[0047] それに対して、図4のサーバ404は、リモート・プレゼンテーション・データをビデオとしてクライアント308へ送るように構成され、クライアント308は、ウェブ・ブラウザを用いてリモート・プレゼンテーション・セッションを行う。クライアント308は、図3と関連して説明したプロキシ306とクライアント308とがHTTP接続を確立する場合と同様の様式で、サーバ404とのHTTP接続を確立する。次に、サーバ404は、アプリケーションまたはユーザ・セッションからグラフィカル出力を取得し、その出力をリモート・プレゼンテーション・プロトコル・エンコードされたデータにエンコードする中間ステップを行わずに、その出力をビデオにエンコードするように、構成される。例えば、アプリケーションまたはユーザ・セッションからのグラフィカル出力がビットマップ・イメージを含む場合、サーバにより、それらのビットマップ・イメージをビデオの1以上のフレームとしてエンコードすることができる。
[0048] サーバ404がリモート・プレゼンテーション・プロトコル・エンコードされたデータではなくビデオをクライアントへ送ることによりリモート・プレゼンテーション・セッションを行うことができるようにする様式と同様に、サーバ404は、JSONやXMLなどを用い、リモート・プレゼンテーション・プロトコルを用いずにエンコードされ、ウェブ・ブラウザへ向けられたユーザ入力を、クライアント308から受信することができる。サーバ404は、この入力をデコードし、それを関連するアプリケーションまたはユーザ・セッションへ入れる(inject)ことができ、その様式は、サーバ404がリモート・プレゼンテーション・プロトコルでエンコードされた入力をアプリケーションまたはユーザ・セッションへ入れる(injects)場合と同様である。
[0049] 図5は、サーバとのリモート・プレゼンテーション・セッションを行う1つのクライアントを示し、1つのクライアントは、ウェブ・ブラウザを用い、プロキシを通じて通信し、グラフィックスをビデオとして受け取り、1つのクライアントは、サーバと直接に通信し、リモート・プレゼンテーション・セッション・データとしてエンコードされたグラフィックスを受け取る。サーバ504およびクライアント508は、図1のコンピュータ20において実施できる。サーバ504は、リモート・プレゼンテーション・プロトコル・エンコードされたデータを用いて、クライアント508などのようなクライアントとのリモート・プレゼンテーション・セッションを行うように、構成することができる。また、サーバ504は、クライアント308などのような、プロキシを通じてリモート・プレゼンテーション・セッションを行うクライアントとのリモート・プレゼンテーション・セッションを行うように構成することができ、ここでは、クライアントはウェブ・ブラウザを用い、クライアントとプロキシとはHTTPセッションを介して通信する。即ち、サーバ504は、図3のサーバ304(ウェブ・ブラウザを用いるクライアントとのリモート・プレゼンテーション・セッションをプロキシ306を通じて行うように構成される)の機能と、図4のサーバ404(ウェブ・ブラウザを用いるクライアントと直接にリモート・プレゼンテーション・セッションを行うように構成される)の機能とを行うように、構成することができる。
[0050] 図6および図7は、グラフィックス・データを、リモート・プレゼンテーション・セッションにおいて送信されるビデオとしてエンコードするための技術を示す。プロキシ306またはサーバ404が、複数のリモート・プレゼンテーション・セッションに対するグラフィカル出力をビデオとしてエンコードする場合、コンピュータの処理能力に対して即座に重い仕事や負担が課せられる。これに鑑みて、本発明の実施形態は、リモート・プレゼンテーション・セッションのグラフィカル出力をビデオとしてエンコードするための効率的な方法を提供する。これらの実施形態のうちの幾つかを図6および図7に示す。
[0051] 図6は、ビデオへとエンコードされるグラフィカル・データの2つのフレームを示し、ここでは、各フレームの一部は同じイメージを含むが、そのイメージの場所は異なり、一方のフレームは、他方のフレームのエンコーディングに基づいてエンコードされ得る。フレーム600は、コンピュータ・デスクトップからのグラフィカル・データのフレームであり、フレーム650は、後の時間の同じデスクトップを示すグラフィカル・データのフレームである。フレーム600は部分602を含む。フレーム650において、フレーム600の部分602は、場所652から場所654へ移動している。従って、部分602および部分654は、場所が異なるだけの同じイメージを示す。即ち、フレーム650の部分654は、再びエンコードする必要がないであろう。むしろ、部分654を除くフレーム650をエンコードし、次に、以前にエンコードした部分602と組み合わせて(エンコードされたフレームの部分654の場所に配置して)、エンコードされたフレーム650を作ることができる。フレーム650をエンコードするために、以前にエンコードされたデータを使用すると、フレーム650のエンコードに必要なコンピューティング・リソースを低減することができ、フレームをエンコードしているサーバまたはプロキシが、そのようにしない場合に同時にエンコードできたであろうフレームよりも多くのフレームを同時にエンコードすること(従って、より多くのリモート・プレゼンテーション・セッションを同時に行うこと)を、可能にする。
[0052] 図7は、ビデオへとエンコードされるグラフィカル・データのフレームを示し、ここでは、1つのフレームは、前のフレームと共通の特徴を共有し、「ダーティー」領域を有し、この領域ではフレームは異なる。フレーム700は2つのダーティー領域、即ち、ダーティー領域702および704を含み、フレーム700は、先行し且つエンコードされているフレームと異なる。フレーム700は、ダーティー領域702および704をエンコードし、次に、それらのエンコードしたダーティー領域を、前のフレームのエンコーディングから取り出された、以前にエンコードされた非ダーティー領域と組み合わせることにより、ビデオとしてエンコードすることができる。図6のものと同様に、フレーム700をエンコードするために、以前にエンコードされたデータを使用すると、フレーム700のエンコードに必要なコンピューティング・リソースを低減することができ、フレームをエンコードしているサーバまたはプロキシが、そのようにしない場合に同時にエンコードできたであろうフレームよりも多くのフレームを同時にエンコードすること(従って、より多くのリモート・プレゼンテーション・セッションを同時に行うこと)を、可能にする。
[0053] 図8は、リモート・プレゼンテーション・セッションにおいてウェブ・ブラウザを用いるクライアントとのリモート・プレゼンテーション・セッションを行うサーバのための例示的な動作プロシージャを示す。実施形態では、図8の動作プロシージャは、図4のサーバ404により実現することができる。なぜなら、サーバ404はクライアント308とのリモート・プレゼンテーション・セッションを行うからであり、クライアント308はそのセッションを行うためにウェブ・ブラウザを用いる。図8(および図9および図10)に関して、示したオペレーションの全てを実施しない本発明の実施形態や、示したオペレーションを、ここで説明する順とは異なる順で実施する本発明の実施形態も存在することが、理解されるであろう。
[0054] オペレーション802は、クライアントとのハイパーテキスト・トランスファー・プロトコル(HTTP)・セッションを確立することを示す。これは、クライアントが、データに対するHTTPリクエストをHTTPセッションを介してサーバへ送ることなどにより、実現することができる。データに対するこのリクエストは、リモートのデスクトップのストリーミング・ビデオを含むウェブ・ページに対するリクエストを含むことができる。サーバは、HTTPセッションを一意に識別するHTTPセッション・トークンを決定し、それをクライアントへ送ることができる。クライアントは、このトークン(HTTPクッキーなどのような形態)を格納し、次に、それを、HTTPセッションを識別するために将来の通信においてサーバへ送ることができる。
[0055] オペレーション804は、HTTPセッションを介して受信したクライアントの資格情報を検証することを示す。クライアントは、それがサーバとのリモート・プレゼンテーション・セッションを行うための許可を検証するために、資格情報を用いることができる。実施形態では、この資格情報はユーザ・ログインとパスワードとを含み、ユーザ・ログインは、サーバ上のユーザのアカウントと関連する。サーバは、資格情報のデータベースを格納し、提供された資格情報をデータベースと照合する検査を行うことができ、これにより、資格情報が有効であることを示すことができる。
[0056] オペレーション806は、クライアントの資格情報に対応するセッションのインスタンスまたはアプリケーションを決定することを示し、グラフィカル・データは、インスタンスのグラフィカル出力を含む。実施形態では、サーバは、ユーザ・セッションのインスタンスをインスタンス化し、それの実行を開始する。資格情報に対応する接続解除されたユーザ・セッションがある場合、サーバは、そのセッションを再接続することができる。実施形態では、資格情報が複数の可能なアプリケーションに対応するなどの場合、サーバは、リモートされる可能なアプリケーションおよび/またはセッションのインジケーションをクライアントへ送り、可能なアプリケーションおよび/またはセッションのうちの1つを選択する受信したインジケーションに基づいて、グラフィカル出力をリモートするものを決定することができる。
[0057] オペレーション808は、リモート・プレゼンテーション・セッションにおいてクライアントへ送信するグラフィカル・データを決定することを示す。サーバが、オペレーション806で決定されたユーザ・セッションのインスタンスまたはアプリケーションを実行すると、その実行によりグラフィカル・データが生成される。これは、リモート・プレゼンテーション・セッションを介して送られるグラフィカル・データである(またはグラフィカル・データを表すものが送られる)。クライアントへ送られるグラフィカル・データの決定は、図2のサーバ204と関連して説明した様式と同様の様式で行われる。
[0058] オペレーション810は、グラフィカル・データをビデオとしてエンコードすることを示す。実施形態では、オペレーション810は、グラフィカル・データをビデオとしてエンコードすることを含むが、これは、以前に第2のグラフィカル・データが第2のビデオとしてエンコードされていたことに基づく。即ち、エンコードされている現在のビデオは、以前にエンコードされたビデオとの共通性を有し得、サーバは、それらの共通性を利用して、グラフィカル・データをビデオとしてエンコードするために使用するプロセッシング・リソースを低減することができる。例えば、これは、第2のグラフィカル・データと相対させたときのグラフィカル・データのダーティー領域に基づいてグラフィカル・データをエンコードすること、およびグラフィカル・データをエンコードするために第2のビデオの少なくとも一部を用いることを、含むことができる。これは、例えば、図7のフレーム700に関して示したように生じ得る。グラフィカル・データと第2のグラフィカル・データとの間で幾つかの更新がある場合、それらの更新は、個々のグラフィカル・データにおける異なる領域を識別する「ダーティー領域」として表すことができる。次に、サーバは、グラフィカル・データのダーティー領域のみをビデオとしてエンコードし、それらのエンコードしたダーティー領域を、非ダーティー領域のビデオを含む第2のビデオと組み合わせて、グラフィカル・データのビデオを作ることができる。
[0059] グラフィカル・データを、以前に第2のグラフィカル・データが第2のビデオとしてエンコードされていたことに基づいて、ビデオとしてエンコードする実施形態はまた、グラフィカル・データ内に示されるエレメントが第2のグラフィカル・データにも示され、そのエレメントはグラフィカル・データにおいて第2のグラフィカル・データとは別の場所に示されており、グラフィカル・データをエンコードするために第2のビデオの少なくとも一部を用いる、ということに基づいて、グラフィカル・データをエンコードすること含む。即ち、アプリケーション・ウィンドウ(またはそれと同様のもの)が、グラフィカル・データと第2のグラフィカル・データとの間で移動させられている場合がある。これは、例えば、図6のフレーム600および650に関して示したように生じ得る。この移動が識別された場合、サーバは、アプリケーション・ウィンドウに対応する第2のビデオの部分を取り出し、それを用いてビデオを作ることができる。それは、そのアプリケーション・ウィンドウではないグラフィカル・データの部分をビデオとしてエンコードし、それを、第2のウィンドウからのアプリケーション・ウィンドウのエンコードされたビデオと組み合わせることができる。
[0060] 実施形態では、オペレーション810は、グラフィカル・データの第1部分がテキストを含み且つグラフィカル・データの第2部分がイメージまたはビデオを含むということのインジケーションを受け取ること、およびグラフィカル・データの第1部分がテキストを含み且つグラフィカル・データの第2部分がイメージまたはビデオを含むということのインジケーションに基づいて、グラフィカル・データをビデオとしてエンコードすることを含む。幾つかのリモート・プレゼンテーション・サーバは、グラフィカル出力がリモートされているアプリケーションから「ヒント」を受け取るように構成され、それらのヒントは、グラフィカル出力が何であるか、例えば、テキスト、単色塗りつぶし、イメージ、またはビデオであるかを示す。幾つかのリモート・プレゼンテーション・サーバは、この情報を決定するためにグラフィカル・データを分析するように構成される。そのような実施形態では、ビデオは、この情報に基づいてエンコードすることができる。例えば、ユーザは、イメージ内よりもテキスト内における圧縮アーティファクト(compression artifacts)を見ることに関して敏感であり得る。サーバは、グラフィカル出力をビデオへ可変的にエンコードすることができ、サーバは、イメージであるグラフィカル出力の部分に対して、テキストであるグラフィカル出力の部分の圧縮よりも損失の多い圧縮を用いる。
[0061] オペレーション812は、HTTPセッションを介してクライアントへビデオを送信し、クライアントがウェブ・ブラウザでビデオを表示するようにすることを示す。実施形態では、オペレーション812は、HTTPセッションを介してクライアントへビデオを送信し、クライアントが、ビデオを、ウェブ・ブラウザで表示されるウェブ・ページに埋め込まれたビデオ・エレメントとして表示するようにする。例えば、ビデオは、HTML5のウェブ・ページに埋め込まれることができ、ウェブ・ページの<video>タグ(<ビデオ>タグ)を介して参照される。実施形態において、ビデオはストリーミング・ビデオであり、従って、サーバが1以上のアプリケーションまたはセッションからグラフィカル・データの生成を続けると、そのグラフィカル・データは、エンコードされ、ストリーミング・ビデオにおける追加のビデオとしてクライアントへ送られる。
[0062] オペレーション814は、ウェブ・ブラウザへ向けられたユーザ入力をクライアントから受信することと、ユーザ入力に対応するアプリケーションを決定することであって、そのアプリケーションはグラフィカル・データの少なくとも一部を生成したものである、アプリケーションを決定することと、ユーザ入力をアプリケーションへ入れて(injecting)、アプリケーションがユーザ入力に対応する結果を処理するようにすることとを示す。クライアントがウェブ・ブラウザでビデオを表示すると、ユーザは、例えば、マウス・カーソルを動かしたり、キーボードでタイプ入力したりすることにより、ウェブ・ブラウザに対する入力を提供する。この情報は、クライアントにより取り込まれ、HTTPセッションを介してサーバへ送られることができる。サーバは、入力を受け取ると、入力によりユーザが指したアプリケーションを決定する(例えば、ビデオの左上隅での入力は、そのスポットで特定のアプリケーション・ウィンドウが示されている場合、そのアプリケーション・ウィンドウへ向けた入力であると決定され得る)。次に、サーバは、図2と関連して説明したように、決定されたアプリケーションへ入力を入れる(inject)ことができる。
[0063] 図9は、リモート・プレゼンテーション・セッション・サーバと、セッションにおいてウェブ・ブラウザを用いるクライアントとの間のリモート・プレゼンテーション・セッションを促進させるプロキシ・サーバのための例示的な動作プロシージャを示す。図9の動作プロシージャは図6のプロキシ306により実施することができる。なぜなら、プロキシ306はサーバ304とクライアント308との間のリモート・プレゼンテーション・セッションを促進させるからである。
[0064] オペレーション902は、クライアントとのハイパーテキスト・トランスファー・プロトコル(HTTP)・セッションを確立することを示す。オペレーション902は、図8のオペレーション802を実現する様式と同様の様式で実現することができる。
[0065] オペレーション904は、サーバとのリモート・プレゼンテーション・セッションを確立することを示す。オペレーション904は、図2に示すように、サーバ204がクライアント201からのネットワーク接続を介しての接続リクエストを処理する様式と同様の様式で、実現することができる。オペレーション904において、リモート・プレゼンテーション・セッションを確立するために、プロキシ・サーバ306は、クライアント201の役割を担い、サーバ304は、サーバ204の役割を担う。実施形態では、クライアント201は資格情報をプロキシ306へ送る。その資格情報は、サーバ204とリモート・プレゼンテーション・セッションを行うためのクライアントに対する承認を検証するために使用することができる。プロキシ306は、資格情報自体を検証すること、および/または資格情報をサーバ204へ渡すことができる。サーバ204は、資格情報を、リモート・プレゼンテーション・セッションを確立することの一部として用い、資格情報を提供されたコンピュータを、リモート・プレゼンテーション・セッションを確立することの一部として検証し、かつ/またはクライアントの資格情報に対応するセッションまたはアプリケーションのインスタンスを決定することができ、オペレーション806に示すように、セッションまたはアプリケーションのインスタンスのグラフィカル出力はリモート・プレゼンテーション・セッションにおいて送られる。
[0066] オペレーション906は、サーバから、リモート・プレゼンテーション・セッションを介して、リモート・プレゼンテーション・プロトコルを用いてエンコードされたグラフィカル・データを受け取ることを示す。リモート・プレゼンテーション・セッションが確立されると、サーバ204は、プロキシ306へ、リモート・プレゼンテーション・セッション・プロトコルを用いてエンコードされるグラフィカル・データ(サーバ204で実行されるアプリケーションまたはユーザ・セッションにより生成されるものなど)を送る。
[0067] オペレーション908は、グラフィカル・データをビデオとしてエンコードすることを示す。実施形態では、オペレーション908は、グラフィカル・データを、そのリモート・プレゼンテーション・プロトコル・エンコードからデコードして1以上のイメージを生成することと、次に、その1以上のイメージをビデオとして再びエンコードすることとを含む。実施形態では、オペレーション908は、グラフィカル・データをデコードしてイメージを生成する中間ステップを行わずに、グラフィカル・データを、そのリモート・プレゼンテーション・プロトコル・エンコードからビデオ・エンコードへと変換することを含む。
[0068] オペレーション910は、HTTPセッションを介してビデオをクライアントへ送ることを示し、クライアントはビデオをウェブ・ブラウザで表示する。実施形態では、クライアントのウェブ・ブラウザは、HTML5(ハイパーテキスト・マークアップ・ランゲージ5(Hypertext Markup Language 5))標準に準拠する情報を受け取って表示するように、構成することができる。そのような実施形態では、例えば、HTML5の<video>タグを用いて、ビデオをウェブ・ページ内で実現することができる。例えば、グラフィカル・データが「remote_presentation_session.avi」という題のビデオとしてエンコードされており、そのビデオが、そのビデオの埋め込まれているウェブ・ページと同じディレクトリでプロキシに位置する場合、<video>タグは、ウェブ・ページにおいて、「<video src=“remote_presentation_session.avi”autoplay=”autoplay”/>」と表すことができる。この例では、autoplay=”autoplay”という属性は、ウェブ・ブラウザはビデオの初期部分を受け取るとビデオの再生を自動的に開始する、ということを意味する。
[0069] オペレーション912は、クライアントから、HTTPセッションを介して、ウェブ・ブラウザへ向けられたユーザ入力のインジケーションを受け取ることを示す。オペレーション910と関連して説明したように、クライアントはビデオをウェブ・ブラウザで表示することができ、クライアントは、例えば、カーソルを動かすことや、キーボードのボタンを押すことも含めてのボタンの押すことなどにより、入力をウェブ・ブラウザへ提供することができる。これらは、クライアントで取り込まれ、HTTPセッションを介してプロキシへ送られる。実施形態では、入力が提供された場所も、HTTPセッションを介してプロキシへ送られる。
[0070] オペレーション914は、リモート・プレゼンテーション・プロトコルを用いてユーザ入力をエンコードすることを示す。プロキシは、オペレーション912でクライアントから受け取ったユーザ入力を取り入れ、それを、リモート・プレゼンテーション・プロトコルに従ってエンコードすることができる。例えば、ユーザ入力は、JSON(JavaScript Object Notation)標準でフォーマットされた形で受け取られることができ、それは、スキーマ様オブジェクト(schema-like object)に従って入力を構築する。スキーマ様オブジェクトは、そのタイプのオブジェクトの構造およびコンテンツの制約を有するオブジェクトである。そのような場合、プロキシは、JSONフォーマットからユーザ入力を抽出し、それを、リモート・プレゼンテーション・プロトコルを用いてエンコードすることができる。
[0071] オペレーション916は、エンコードされたユーザ入力を、リモート・プレゼンテーション・セッションを介してサーバへ送ることを示す。これは、プロキシが、リモート・プレゼンテーション・プロトコルでエンコードされたユーザ入力を、リモート・プレゼンテーション・セッション接続を介してサーバへ送ることを含む。
[0072] オペレーション918は、サーバから、リモート・プレゼンテーション・セッションを介して、リモート・プレゼンテーション・プロトコルを用いてエンコードされた第2のグラフィカル・データを受け取ることを示し、第2のグラフィカル・データは、サーバでユーザ入力と関連するオペレーションを実行して得られるグラフィカル結果に対応する。これは、オペレーション906を実現する方法と同様に実現することができる。ここで、サーバは、ユーザ入力を受け取り、ユーザ入力と関連する処理を行い、ユーザ入力と関連する処理から、グラフィカル結果(また、可能性としては、それにオーディオ結果も加える場合や、オーディオ結果のみの場合もあり得る)と関連する1以上のリモート・プレゼンテーション・セッション・グラフィカル・データを生成している。グラフィカル結果を生成すると、それを、サーバは、リモート・プレゼンテーション・プロトコルを用いてエンコードし、プロキシへ送っている。
[0073] オペレーション920は、第2のグラフィカル・データを第2のビデオとしてエンコードすることを示す。オペレーション920は、オペレーション908と同様の様式で行うことができる。第2のビデオおよび同じビデオは、同じストリーミング・ビデオの一部とすることができ、第2のビデオは、ビデオ・ストリームにおける第1のビデオに続く1以上のフレームを含む。
[0074] オペレーション922は、HTTPセッションを介して第2のビデオをクライアントへ送ることを示し、クライアントはウェブ・ブラウザで第2のビデオを表示する。オペレーション922は、オペレーション910と同様の様式で行うことができる。
[0075] 図10は、サーバとのリモート・プレゼンテーション・セッションを行うためにウェブ・ブラウザを用いるクライアントのための例示的な動作プロシージャを示す。例えば、それらの動作プロシージャは、図3のプロキシ306または図4のサーバ404と通信するときに、実現することができる。
[0076] オペレーション1002は、サーバとのリモート・プレゼンテーション・セッションを確立することを示す。実施形態では、リモート・プレゼンテーション・セッションは、ハイパーテキスト・トランスファー・プロトコル(HTTP)・セッションを含む。オペレーション1002は、クライアントに関してオペレーション802を実現する方法の記述と同様にして実現することができる。
[0077] オペレーション1004は、HTTPセッションを介してサーバへ資格情報を送ることを示し、資格情報は、サーバとのリモート・プレゼンテーション・セッションを行うことを許可されたユーザと関連している。オペレーション1004は、クライアントに関してオペレーション804を実現する方法の記述と同様にして実現することができる。実施形態では、クライアントは、ユーザに対して、ログインおよびパスワードの入力を入れることを促し、受け取った入力を資格情報として用いる。
[0078] オペレーション1006は、HTTPセッションを介してサーバからビデオを受け取ることを示し、ビデオは、サーバでアプリケーションまたはユーザ・セッションを実行して得られるグラフィカル出力を含む。これは、サーバから、<video>エレメントを含むウェブ・ページ(例えば、HTML5のウェブ・ページ)を受け取ることを含むことができ、この<video>エレメントは、サーバでのアプリケーションまたはユーザ・セッションの実行からのグラフィカル出力を含むビデオを参照する。
[0079] オペレーション1008は、ウェブ・ブラウザでビデオを表示することを示す。クライアントで実行されるウェブ・ブラウザは、ビデオを含むウェブ・ページをレンダリングし、その結果を、クライアントのディスプレイ・デバイス、例えばモニターなどで、表示することができる。
[0080] オペレーション1010は、ウェブ・ブラウザへ向けられたユーザ入力を受け取ることを示し、ユーザ入力は、ビデオにおける場所に対応する。ビデオを含むウェブ・ページは、JavaScriptで表されるロジックなどのようなロジックも含み、ロジックは、ウェブ・ページへ向けられたユーザ入力を検出して取り込むように構成される。このユーザ入力は、例えば、カーソルの動き、および/またはキーボードのキーを押したことを含むことができる。
[0081] オペレーション1012は、ユーザ入力のインジケーションをサーバへ送ることを示す。実施形態では、ユーザ入力は、ビデオと相対しての入力が行われた場所(例えば、カーソルが、左上隅部から50ピクセルのビデオの左縁部に入り、時間tにおいて右へ75ピクセル移動させられた)のインジケーションと共に送られる。実施形態では、入力は、トランスポートのためにフォーマットされることができ、例えば、データ構造および連想配列を表す人間読取可能な形態、例えば、JSON(JavaScript Object Notation)や、XML(Extensible Markup Language)のようなタグ区切りマークアップ・フォーマットにフォーマットされることができる。
[0082] オペレーション1014は、サーバから第2のビデオを受け取ることを示し、この第2のビデオは、場所に対応する、サーバで実行されるアプリケーションへ、サーバがユーザ入力を入れる(injecting)ことに対応する。この第2のビデオおよびビデオは、双方とも、1つのストリーミング・ビデオの一部であり得、ストリーミング・ビデオは、リモート化されたサーバからのグラフィカル出力を示し、それは時間の経過とともに変化する。
[0083] オペレーション1016は、ウェブ・ブラウザで第2のビデオを表示することを示す。クライアントは、第2のビデオを含むストリーミング・ビデオの受信を継続するので、そのストリーミング・ビデオをウェブ・ブラウザで表示することができる。
[0084] 図11および図12は、仮想マシンを実現するように構成されるコンピュータ・システム1100および1200の高位ブロック図を示す。本発明の例示的な実施形態では、コンピュータ・システム1100および1200は、図1に記載したエレメントを含むことができる。図に示すように、様々なアーキテクチャーが存在するが、それらは、一般には、類似のコンポーネントを有する。例えば、図11は1つのオペレーション環境を示し、そのオペレーション環境では、当該技術において仮想マシン・モニターと呼ばれることもあるハイパーバイザーは、マイクロカーネル1102と親パーティション1104とに分離されている。他方、図12では、ハイパーバイザー1204が図11の親パーティション1104内に見られるエレメントを含むものとして、示されている。
[0085] 図11は、クライアントとのリモート・プレゼンテーション・セッションを行う1以上の仮想マシンをホストすることができる例示的な仮想マシン・サーバを示し、クライアントは、ウェブ・ブラウザを用い、リモート・プレゼンテーション・グラフィックスとしてビデオを受信する。ハイパーバイザー・マイクロカーネル1102は、コンピュータ・システム1100のハードウェアへのアクセスを制御および仲裁するように構成することができる。大雑把には、ハイパーバイザー・マイクロカーネル1102は、パーティションと呼ばれる実行環境、例えば、子パーティション1 1150から子パーティションN 1152(Nは1より大きい整数)などを、生成することができる。実施形態では、子パーティションは、ハイパーバイザー・マイクロカーネル1102によりサポートされる分離の基本単位である。即ち、それぞれの子パーティションは、ハイパーバイザー・マイクロカーネル1102の制御下にある1組のハードウェア・リソース、例えば、メモリ、デバイス、論理プロセッサ・サイクルなどへとマップされることができ、ハイパーバイザー・マイクロカーネル1102は、1つのパーティションのプロセスを、別のパーティションのリソースがアクセスすることから分離することができる。例えば、1つのパーティションにおけるゲスト・オペレーティング・システムを、別のパーティションのメモリから分離することができ、従って、ゲスト・オペレーティング・システムがそのパーティションの外側にあるメモリ・アドレスを検出できないようにできる。実施形態では、ハイパーバイザー・マイクロカーネル1102は、スタンドアローン・ソフトウェア製品や、マザーボードのファームウェア内に埋め込まれたオペレーティング・システムの一部や、特別の集積回路や、これらの組み合わせとすることができる。
[0086] この動作環境における親パーティション1104は、オープン・ソース・コミュニティーにおいて典型的にはバックエンド・ドライバと呼ばれる仮想化サービス・プロバイダ(VSP)1128を用いることにより、子パーティション1−Nで動作するゲスト・オペレーティング・システムへリソースを提供するように、構成することができる。大雑把には、VSP1128は、仮想化サービス・クライアント(VSC)(オープン・ソース・コミュニティーにおいて典型的にはフロントエンド・ドライバと呼ばれる)のためにハードウェア・リソースへのインターフェースを多重化し、通信プロトコルを介して仮想化サービス・クライアントと通信するために、用いることができる。図で示すように、仮想化サービス・クライアントは、ゲスト・オペレーティング・システムのコンテキスト内で実行されることができる。これらのドライバは、これらがゲストではなくハイパーバイザーを用いて供給されるという点で、ゲストのその他のドライバとは異なる。
[0087] マイクロカーネル1102は、ゲスト・オペレーティング・システムによるシステム・メモリのビューを制限することにより、パーティションを実施することができる。ゲストのメモリは、ハイパーバイザーにより制御されるメモリのパーティションのビューである。ゲスト物理アドレスは、ハイパーバイザーにより管理されるシステム物理アドレス(SPA)、即ち、物理コンピュータ・システムのメモリにより支持することができる。図で示すように、1つの実施形態では、GPAおよびSPAは、メモリ・ブロック、即ち、メモリの1以上のページに配することができる。ゲストが、ブロックへ、そのページ・テーブルを用いて書き込みを行うとき、データは、ハイパーバイザーにより使用されるシステム全体のページ・テーブルに従って別のシステム・アドレスでブロックへ実際に格納される。
[0088] 図で示すように、本開示の実施形態では、IOエミュレータ(1134および1136)、例えば、仮想化IDEデバイス、仮想化ビデオ・アダプタ、仮想化NICなどを、それらの個々の子パーティション内で実行されるように、構成することができる。以下で更に詳細に説明するが、エミュレータを子パーティション内で実行するように構成することにより、計算オーバーヘッドとともに、ハイパーバイザーのアタック・サーフェイス(attack surface)が低減される。
[0089] それぞれの子パーティションは1以上の仮想プロセッサ(1130および1132)を含むことができ、ゲスト・オペレーティング・システム(1120および1122)は、プロセッサで実行するスレッドを管理およびスケジュールできる。一般に、仮想プロセッサは、実行可能命令と、関連する状態情報とであり、これらは、物理プロセッサの表現へ特定のアーキテクチャーを提供する。例えば、或る仮想マシンは、INTEL(インテル)x86プロセッサの特徴を有する仮想プロセッサを有することができ、別の仮想マシンは、PowerPCプロセッサの特徴を有することができる。この例の仮想プロセッサは、コンピュータ・システムの論理プロセッサへマップすることができ、仮想プロセッサを実現する命令は、論理プロセッサにより支持されるようにする。即ち、複数の論理プロセッサを含む実施形態では、仮想プロセッサを、論理プロセッサにより同時に実行することができ、他方、例えば、他の論理プロセッサは、ハイパーバイザー命令を実行する。パーティションにおける仮想プロセッサとメモリとの組み合わせは、仮想マシンと考えることができる。
[0090] ゲスト・オペレーティング・システムは、任意のオペレーティング・システム、例えば、マイクロソフト(登録商標)・ウィンドウズ(登録商標)の様々なバージョンのもの(例えば、WINDOWSs(登録商標) XPやWINDOWS(登録商標) 7)を含むことができる。ゲスト・オペレーティング・システムは、ユーザ/カーネル・モードのオペレーションを含むことができ、スケジューラーやメモリ・マネージャなどを含むことができるカーネルを有することができる。一般に、カーネル・モードは、論理プロセッサにおける実行モードを含むことができ、これは、少なくとも特権プロセッサ命令へのアクセスを許可する。それぞれのゲスト・オペレーティング・システムは、関連するファイル・システムを有することができ、ファイル・システムは、それに格納されるアプリケーション、例えば、ターミナル・サーバ、eコマース・サーバ、eメール・サーバなど、およびゲスト・オペレーティング・システム自体を、有することができる。ゲスト・オペレーティング・システムは、仮想プロセッサで実行するスレッドをスケジュールすることができ、そのようなアプリケーションのインスタンスを実現することができる。
[0091] 図12は、クライアントとのリモート・プレゼンテーション・セッションを行う1以上の仮想マシンをホストすることができる例示的な仮想マシン・サーバを示し、クライアントは、ウェブ・ブラウザを用い、リモート・プレゼンテーション・グラフィックスとしてビデオを受信する。図12は、図11に関して上記で説明したアーキテクチャーの代替的なアーキテクチャーを示す。図12は図11のコンポーネントと似たコンポーネントを示す。しかし、この例示的な実施形態では、ハイパーバイザー1204は、マイクロカーネル・コンポーネントと、図11の親パーティション1104からのコンポーネント、例えば、仮想化サービス・プロバイダ1128やデバイス・ドライバ1124などとを含むことができ、マネジメント・オペレーティング・システム1202は、例えば、ハイパーバイザー1204を構成するために使用される構成(configuration)ユーティリティーを含むことができる。このアーキテクチャーでは、ハイパーバイザー1204は、図11のハイパーバイザー・マイクロカーネル1102と同じまたは類似の機能を行うことができる。しかし、このアーキテクチャーでは、ハイパーバイザー1204は、子パーティションにおいて実行されるゲスト・オペレーティング・システムへリソースを提供するように、構成することができる。図12のハイパーバイザー1204は、スタンドアローン・ソフトウェア製品、マザーボードのファームウェア内に埋め込まれたオペレーティング・システムの一部とすることができ、また、ハイパーバイザー1204の一部を特別の集積回路により実現することができる。
[0092] 図13は、仮想マシン・サーバを含む例示的なシステムを示し、仮想マシン・サーバは、複数の仮想マシンをホストし、それぞれの仮想マシンは、クライアントとのリモート・プレゼンテーション・セッションを行い、クライアントは、ウェブ・ブラウザを用い、リモート・プレゼンテーション・グラフィックスをビデオとして受け取る。実施形態では、VMホストは、図11のコンピュータ・システム1100または図12のコンピュータ・システム1200において実現することができる。そのような実施形態では、VM1302aおよびVM1302bは、図11および図12の子パーティション1150または1152において実現することができる。
[0093] 示されているように、VM1302aおよび1302bのそれぞれは、1以上のクライアントとのリモート・プレゼンテーション・セッションのために働くように構成され、1以上のクライアントは、リモート・プレゼンテーション・セッションを介してビデオを受信し、ウェブ・ブラウザを介してリモート・プレゼンテーション・セッションを行う。例えば、VM1302aおよび1302bのそれぞれは、図3のサーバ304の機能を実現するように、構成することができる。そのような実施形態では、クライアント308は、VMホスト1300へ接続することができ、VMホストは、そのVMの1つへ、そのクライアントとのリモート・プレゼンテーション・セッションのために働くように指図する。VMホスト1300は、この指図を、例えば、VMホストがホストする各VMの負荷のバランスに基づいて、行うことができる。
[0094] 本発明を、様々な図に示した好適な態様と関連して説明したが、本開示から離れずに本開示と同じ機能を行うために、他の類似の態様を用いることや、説明した態様に対する変更および追加を行えることが、理解される。従って、本開示は、何れの1つの態様にも限定すべきではなく、添付の特許請求の範囲に従った外延および範囲にあると解釈すべきである。例えば、ここで説明した様々なプロシージャは、ハードウェアまたはソフトウェア、またはこれらの組み合わせを用いて実施することができる。本発明は、コンピュータ読取可能記録媒体および/またはコンピュータ読取可能通信媒体を用いて、実施することができる。即ち、本発明または本発明の特定の態様または部分は、例えば、フロッピー(登録商標)・ディスケット、CD−ROM、ハード・ドライブ、または他の任意の機械読取可能記録媒体などのような実体的な媒体で実現されるプログラム・コード(即ち、命令)の形態とすることができる。同様に、本発明または本発明の特定の態様または部分は、伝播される信号または他の任意の機械読取可能通信媒体で実現することができる。プログラム・コードが、コンピュータなどのようなマシンへロードされて実行されると、マシンは、開示された実施形態を実施するように構成される装置となる。ここで明確に記載した特定の実施に加えて、当業者であれば、ここで開示した仕様を考慮することにより、他の態様および実施も明らかとなるであろう。仕様および例示した実施は、単なる例として考慮することが意図されている。

Claims (20)

  1. ウェブ・ブラウザを用いるクライアントとのリモート・プレゼンテーション・セッションを行う方法であって、
    前記クライアントとの、HTTPセッション(ハイパーテキスト・トランスファー・プロトコル・セッション)を確立するステップと、
    サーバのリモート・プレゼンテーション・セッション・プロセスとの、リモート・プレゼンテーション・セッションを確立するステップと、
    前記リモート・プレゼンテーション・セッション・プロセスから、リモート・プレゼンテーション・プロトコルでエンコードされたグラフィカル・データを受けるステップと、
    前記リモート・プレゼンテーション・プロトコルでエンコードされた前記グラフィカル・データをデコードするステップと、
    デコードした前記グラフィカル・データをビデオとしてエンコードするステップと、
    前記クライアントに前記ビデオを前記ウェブ・ブラウザで表示させるように、前記HTTPセッションを介して前記クライアントへ前記ビデオを含むHTTPエンコードされたデータを送るステップと
    を含み、前記クライアントに送る前記HTTPエンコードされたデータは、前記リモート・プレゼンテーション・プロトコルでエンコードされない、方法。
  2. 請求項1に記載の方法であって、デコードした前記グラフィカル・データをビデオとしてエンコードするステップは、
    以前に第2のグラフィカル・データを第2のビデオとしてエンコードしたことに基づいて、デコードした前記グラフィカル・データをビデオとしてエンコードするステップ
    を含む、方法。
  3. 請求項2に記載の方法であって、以前に第2のグラフィカル・データをビデオとしてエンコードしたことに基づいて、デコードした前記グラフィカル・データをビデオとしてエンコードするステップは、
    前記第2のグラフィカル・データと比較したときの、デコードした前記グラフィカル・データのダーティー領域に基づいて、デコードした前記グラフィカル・データをエンコードするステップと、デコードした前記グラフィカル・データをエンコードするために前記第2のビデオの少なくとも一部を用いるステップと
    を含む、方法。
  4. 請求項2に記載の方法であって、以前に第2のグラフィカル・データをビデオとしてエンコードしたことに基づいて、デコードした前記グラフィカル・データをビデオとしてエンコードするステップは、
    前記グラフィカル・データに示され前記第2のグラフィカル・データにも示されているエレメントに基づいて、デコードした前記グラフィカル・データをエンコードするステップであって、前記エレメントは、デコードした前記グラフィカル・データと前記第2のグラフィカル・データでは異なる場所に示された、ステップと、デコードした前記グラフィカル・データをエンコードするために前記第2のビデオの少なくとも一部を用いるステップと
    を含む、方法。
  5. 請求項1に記載の方法であって、前記クライアントが前記ビデオを前記ウェブ・ブラウザで表示するように、前記HTTPセッションを介して前記クライアントへ前記ビデオを送るステップは、
    前記クライアントに、前記ビデオを、前記ウェブ・ブラウザで表示されるウェブ・ページへ埋め込まれたビデオ・エレメントとして表示させるように、前記HTTPセッションを介して前記クライアントへ前記ビデオを送るステップ
    を含む、方法。
  6. 請求項1に記載の方法であって、
    前記リモート・プレゼンテーション・セッションを確立する前に、前記HTTPセッションを介して受けた前記クライアントの資格情報の検証を行うステップ
    を更に含む方法。
  7. 請求項1に記載の方法であって、
    前記グラフィカル・データの第1の部分がテキストを含み、前記グラフィカル・データの第2の部分がイメージまたはビデオを含むことのインジケーションを受けるステップ
    を更に含み、
    デコードした前記グラフィカル・データをビデオとしてエンコードするステップは、
    デコードした前記グラフィカル・データの前記第1の部分がテキストを含み、デコードした前記グラフィカル・データの前記第2の部分がイメージまたはビデオを含むことの前記インジケーションに基づいて、デコードした前記グラフィカル・データをビデオとしてエンコードするステップ
    を含む、方法。
  8. 請求項1に記載の方法であって、サーバのリモート・プレゼンテーション・セッション・プロセスとの、リモート・プレゼンテーション・セッションを確立するステップは、
    前記リモート・プレゼンテーション・セッションを、前記クライアントの資格情報に対応するリモード・プレゼンテーション・セッションに基づき決定するステップ
    を含む、方法。
  9. 請求項1に記載の方法であって、デコードした前記グラフィカル・データをビデオとしてエンコードするステップは、
    前記クライアントがデコードし表示するように構成されたビデオ・フォーマットを決定するステップと、
    デコードした前記グラフィカル・データを、ビデオとして前記ビデオ・フォーマットでエンコードするステップと
    を含む、方法。
  10. 請求項1に記載の方法であって、
    前記クライアントから、前記ウェブ・ブラウザに向けられたユーザ入力を前記HTTPセッションを介して受けるステップと、
    前記ウェブ・ブラウザに向けられた前記ユーザ入力を前記リモート・プレゼンテーション・プロトコルでエンコードするステップと、
    エンコードした前記ユーザ入力を前記リモート・プレゼンテーション・セッション・プロセスに送るステップと
    を更に含む方法。
  11. プロセッサと、
    プログラムを含むメモリと
    を備えたシステムであって、前記プログラムは、前記システムに、少なくとも、
    第1のコンピュータとの、HTTPセッション(ハイパーテキスト・トランスファー・プロトコル・セッション)を含むリモート・プレゼンテーション・セッションを確立することと、
    リモート・プレゼンテーション・セッション・プロセスとの、リモート・プレゼンテーション・セッションを確立することと、
    リモート・プレゼンテーション・プロトコルでエンコードされたグラフィカル・データを、前記リモート・プレゼンテーション・セッション・プロセスから受けることと、
    前記リモート・プレゼンテーション・プロトコルでエンコードされた前記グラフィカル・データをデコードすることと、
    デコードした前記グラフィカル・データをビデオとしてエンコードすることと、
    前記第1のコンピュータに前記ビデオをウェブ・ブラウザで表示させるように、前記HTTPセッションを介して前記第1のコンピュータへ前記ビデオを含むHTTPエンコードされたデータを送ることと
    をさせ、前記第1のコンピュータに送る前記HTTPエンコードされたデータは、前記リモート・プレゼンテーション・プロトコルでエンコードされない、システム。
  12. 請求項11に記載のシステムであって、前記プログラムは、前記システムに、少なくとも、
    グラフィカル・データを前記リモート・プレゼンテーション・セッション・プロセスから受ける前に、前記リモート・プレゼンテーション・セッション・プロセスとのリモート・プレゼンテーション・セッションを行うことを許可されたユーザと関連する資格情報を前記リモート・プレゼンテーション・セッション・プロセスに送ること
    を更にさせる、システム。
  13. 請求項11に記載のシステムであって、前記プログラムは、前記システムに、少なくとも、
    ユーザ入力のインジケーションを前記第1のコンピュータから、前記第1のコンピュータが前記ビデオを前記ウェブ・ブラウザで表示することとは非同期に受ける
    ことを更にさせる、システム。
  14. 請求項11に記載のシステムであって、前記プログラムは、前記システムに、少なくとも、
    前記システムにより前記ビデオに基づきエンコードされた第2のビデオを前記リモート・プレゼンテーション・セッション・プロセスから受けること
    を更にさせる、システム。
  15. 請求項11に記載のシステムであって、前記プログラムは、前記システムに、少なくとも、
    前記ビデオと比較したときの、第2のビデオのダーティー領域に基づいて、前記リモート・プレゼンテーション・セッション・プロセスによりエンコードされた前記第2のビデオを、前記リモート・プレゼンテーション・セッション・プロセスから受ける
    ことを更にさせる、システム。
  16. 請求項11に記載のシステムであって、前記プログラムは、前記システムに、少なくとも、
    前記ビデオと第2のビデオでは異なる場所に示された要素に基づいて、前記リモート・プレゼンテーション・セッション・プロセスによりエンコードされた前記第2のビデオを、前記リモート・プレゼンテーション・セッション・プロセスから受ける
    ことを更にさせる、システム。
  17. 請求項11に記載のシステムであって、前記プログラムは、前記システムに、少なくとも、
    前記第1のコンピュータから、前記ウェブ・ブラウザに向けられたユーザ入力を前記HTTPセッションを介して受けることと、
    前記ウェブ・ブラウザに向けられた前記ユーザ入力を前記リモート・プレゼンテーション・プロトコルでエンコードすることと、
    エンコードした前記ユーザ入力を前記リモート・プレゼンテーション・セッション・プロセスに送ることと
    を更にさせる、システム。
  18. サーバとウェブ・ブラウザを用いるクライアントの間のリモート・プレゼンテーション・セッションを促進するための、コンピュータ可読命令を有するコンピュータ可読記憶デバイスであって、前記コンピュータ可読命令は、コンピュータ上で実行されると、該コンピュータに、
    前記コンピュータが、前記サーバから、リモート・プレゼンテーション・プロトコルでエンコードされたグラフィカル・データを受けることと、
    前記コンピュータが、前記リモート・プレゼンテーション・プロトコルでエンコードされた前記グラフィカル・データをデコードし、デコードした前記グラフィカル・データをビデオとしてエンコードすることと、
    前記コンピュータが、前記クライアントに前記ビデオを前記ウェブ・ブラウザで表示させるように、前記クライアントと前記コンピュータの間のHTTP接続上のHTTPセッションを介して、前記クライアントへ前記ビデオを含むHTTPエンコードされたデータを送ることと
    を含むオペレーションを実行させ、前記クライアントに送る前記HTTPエンコードされたデータは、前記リモート・プレゼンテーション・プロトコルでエンコードされない、コンピュータ可読記憶デバイス。
  19. 請求項18に記載のコンピュータ可読記憶デバイスであって、前記コンピュータ上で実行されると、該コンピュータに、
    前記クライアントから、前記ウェブ・ブラウザに向けられたユーザ入力を前記HTTPセッションを介して受けることと、
    前記ウェブ・ブラウザに向けられた前記ユーザ入力を前記リモート・プレゼンテーション・プロトコルでエンコードすることと、
    エンコードした前記ユーザ入力を前記サーバに送ることと
    を含むオペレーションを実行させるコンピュータ可読命令を更に有するコンピュータ可読記憶デバイス。
  20. 請求項18又は19に記載のコンピュータ可読命令を含むプログラム。
JP2014514491A 2011-06-10 2012-05-29 ウェブ・ブラウザ・ベースのデスクトップおよびアプリケーション・リモート・ソリューション Active JP6072018B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/158,268 2011-06-10
US13/158,268 US9167020B2 (en) 2011-06-10 2011-06-10 Web-browser based desktop and application remoting solution
PCT/US2012/039887 WO2012170237A2 (en) 2011-06-10 2012-05-29 Web-browser based desktop and application remoting solution

Publications (3)

Publication Number Publication Date
JP2014523669A JP2014523669A (ja) 2014-09-11
JP2014523669A5 JP2014523669A5 (ja) 2015-07-02
JP6072018B2 true JP6072018B2 (ja) 2017-02-01

Family

ID=47294086

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014514491A Active JP6072018B2 (ja) 2011-06-10 2012-05-29 ウェブ・ブラウザ・ベースのデスクトップおよびアプリケーション・リモート・ソリューション

Country Status (8)

Country Link
US (1) US9167020B2 (ja)
EP (1) EP2719148B1 (ja)
JP (1) JP6072018B2 (ja)
KR (1) KR101916980B1 (ja)
CN (1) CN103597797B (ja)
CA (1) CA2838287A1 (ja)
MX (1) MX2013014599A (ja)
WO (1) WO2012170237A2 (ja)

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101971592B (zh) * 2007-08-21 2013-04-03 中国移动通信集团公司 接入地会话控制器、ip多媒体子系统及其注册会话方法
US11012480B2 (en) * 2010-09-13 2021-05-18 Jeffrey W. Mankoff Modifying signal associations in complex computing networks
CA2843766A1 (en) * 2011-08-16 2013-02-21 Destiny Software Productions Inc. Script-based video rendering
US9313100B1 (en) * 2011-11-14 2016-04-12 Amazon Technologies, Inc. Remote browsing session management
US8959591B2 (en) * 2012-01-06 2015-02-17 Elastic Path Software, Inc. Follow location handler and selector functionality in a stateless microkernel web server architecture
US9277237B2 (en) * 2012-07-30 2016-03-01 Vmware, Inc. User interface remoting through video encoding techniques
US20140108940A1 (en) * 2012-10-15 2014-04-17 Nvidia Corporation Method and system of remote communication over a network
US9189884B2 (en) 2012-11-13 2015-11-17 Google Inc. Using video to encode assets for swivel/360-degree spinners
US9930082B2 (en) 2012-11-20 2018-03-27 Nvidia Corporation Method and system for network driven automatic adaptive rendering impedance
US9479489B2 (en) 2013-03-05 2016-10-25 Comcast Cable Communications, Llc Systems and methods for providing services
JP6369043B2 (ja) * 2013-03-15 2018-08-08 株式会社リコー 配信制御システム、配信システム、配信制御方法、及びプログラム
JP2014199648A (ja) 2013-03-15 2014-10-23 株式会社リコー 配信制御システム、配信システム、配信制御方法、及びプログラム
JP6337499B2 (ja) * 2013-03-15 2018-06-06 株式会社リコー 配信制御システム、配信システム、配信制御方法、及びプログラム
US9819604B2 (en) 2013-07-31 2017-11-14 Nvidia Corporation Real time network adaptive low latency transport stream muxing of audio/video streams for miracast
JP6337437B2 (ja) * 2013-09-30 2018-06-06 富士通株式会社 情報処理装置、情報処理システム、及びプログラム
CN103533038A (zh) * 2013-09-30 2014-01-22 华南理工大学 一种基于html5的远程控制系统及其远程控制方法
US11076171B2 (en) 2013-10-25 2021-07-27 Microsoft Technology Licensing, Llc Representing blocks with hash values in video and image coding and decoding
CN105684441B (zh) 2013-10-25 2018-09-21 微软技术许可有限责任公司 视频和图像编码中的基于散列的块匹配
CN105900396B (zh) * 2014-02-07 2019-05-31 甲骨文国际公司 移动云服务体系架构
US9553925B2 (en) 2014-02-21 2017-01-24 Dell Products L.P. Front-end high availability proxy
US9936002B2 (en) * 2014-02-21 2018-04-03 Dell Products L.P. Video compose function
US20150244835A1 (en) * 2014-02-21 2015-08-27 Andrew T. Fausak Transcoding instance with multiple channels
US9392053B2 (en) * 2014-02-21 2016-07-12 Dell Products L.P. Generic transcoding service with library attachment
WO2015126469A1 (en) * 2014-02-21 2015-08-27 Dell Products L.P. Generic transcoding service
EP3114838B1 (en) 2014-03-04 2018-02-07 Microsoft Technology Licensing, LLC Hash table construction and availability checking for hash-based block matching
CN105556971B (zh) 2014-03-04 2019-07-30 微软技术许可有限责任公司 针对帧内块复制预测中的块翻动和跳跃模式的编码器侧判定
KR102287779B1 (ko) 2014-06-23 2021-08-06 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 해시 기반의 블록 매칭의 결과에 기초한 인코더 결정
US10437432B2 (en) * 2014-06-27 2019-10-08 Vmware, Inc. Integration of user interface technologies
US10448111B2 (en) 2014-09-24 2019-10-15 Microsoft Technology Licensing, Llc Content projection
US9769227B2 (en) 2014-09-24 2017-09-19 Microsoft Technology Licensing, Llc Presentation of computing environment on multiple devices
US10025684B2 (en) * 2014-09-24 2018-07-17 Microsoft Technology Licensing, Llc Lending target device resources to host device computing environment
US10635296B2 (en) 2014-09-24 2020-04-28 Microsoft Technology Licensing, Llc Partitioned application presentation across devices
AU2014408223B2 (en) 2014-09-30 2019-12-05 Microsoft Technology Licensing, Llc Hash-based encoder decisions for video coding
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
US20160283070A1 (en) * 2015-03-25 2016-09-29 Vmware, Inc. Using reactive behaviors during remote sessions
US10547711B2 (en) 2015-03-25 2020-01-28 Vmware, Inc. Using off-screen user interface data during remote sessions
WO2016179436A1 (en) * 2015-05-05 2016-11-10 Colorado Code Craft Patent Holdco Llc Ultra-low latency remote application access
US9959607B2 (en) 2015-07-07 2018-05-01 Adp, Llc Automatic verification of graphic rendition of JSON data
US20170046013A1 (en) * 2015-08-14 2017-02-16 Microsoft Technology Licensing, Llc Web-browser based desktop and application remoting solution
US10404808B2 (en) * 2015-09-14 2019-09-03 Colorado Code Craft Patent Holdco, LLC Secure, anonymous browsing with a remote browsing server
CN105468322A (zh) * 2015-11-20 2016-04-06 中电海康集团有限公司 一种基于分段视频播放的实时查看远程桌面方法
KR101742258B1 (ko) 2016-02-29 2017-05-31 경희대학교 산학협력단 웹 기반 가상 데스크탑 프로토콜을 이용한 컨텐츠 제공 방법 및 장치
US10237566B2 (en) 2016-04-01 2019-03-19 Microsoft Technology Licensing, Llc Video decoding using point sprites
US10575007B2 (en) 2016-04-12 2020-02-25 Microsoft Technology Licensing, Llc Efficient decoding and rendering of blocks in a graphics pipeline
ES2728292T3 (es) 2016-05-17 2019-10-23 Nolve Dev S L Servidor y método para proporcionar un acceso seguro a servicios basados en la red
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
US10157480B2 (en) 2016-06-24 2018-12-18 Microsoft Technology Licensing, Llc Efficient decoding and rendering of inter-coded blocks in a graphics pipeline
US10390039B2 (en) 2016-08-31 2019-08-20 Microsoft Technology Licensing, Llc Motion estimation for screen remoting scenarios
US10430378B1 (en) * 2016-09-19 2019-10-01 Tintri By Ddn, Inc. Fast container distribution with storage acceleration
US11197010B2 (en) 2016-10-07 2021-12-07 Microsoft Technology Licensing, Llc Browser-based video decoder using multiple CPU threads
US11095877B2 (en) 2016-11-30 2021-08-17 Microsoft Technology Licensing, Llc Local hash-based motion estimation for screen remoting scenarios
CN107124450A (zh) * 2017-04-18 2017-09-01 恒泰艾普(北京)云技术有限公司 一种基于html5的远程桌面访问系统及远程桌面访问方法
US10666706B2 (en) 2017-11-22 2020-05-26 Citrix Systems, Inc. Rendering a web application in a cloud service
CN108959455B (zh) * 2018-06-15 2020-12-04 未鲲(上海)科技服务有限公司 单页Web应用实现方法、装置、计算机设备和存储介质
US11281744B2 (en) * 2018-09-12 2022-03-22 Citrix Systems, Inc Systems and methods for improved remote display protocol for HTML applications
US11314532B2 (en) * 2018-10-11 2022-04-26 Citrix Systems, Inc. Systems and methods for traffic optimization via system on chip of intermediary device
US10552639B1 (en) 2019-02-04 2020-02-04 S2 Systems Corporation Local isolator application with cohesive application-isolation interface
US10452868B1 (en) 2019-02-04 2019-10-22 S2 Systems Corporation Web browser remoting using network vector rendering
US10558824B1 (en) 2019-02-04 2020-02-11 S2 Systems Corporation Application remoting using network vector rendering
US11880422B2 (en) 2019-02-04 2024-01-23 Cloudflare, Inc. Theft prevention for sensitive information
CN110032427A (zh) * 2019-04-19 2019-07-19 合肥谐桐科技有限公司 基于虚拟化实现在线云应用管理的系统及其方法
CN111093091A (zh) * 2019-12-11 2020-05-01 西安万像电子科技有限公司 视频处理方法、服务器及系统
US11202085B1 (en) 2020-06-12 2021-12-14 Microsoft Technology Licensing, Llc Low-cost hash table construction and hash-based block matching for variable-size blocks
WO2023144758A2 (en) * 2022-01-27 2023-08-03 Bubble Workspace Ltd Proxy gateway-based security for rdp-type communications sessions

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000116606A (ja) * 1998-10-19 2000-04-25 Access:Kk 医療画像処理方法、医療画像伝送方法、医療画像処理装置、医療画像送信装置、および医療画像伝送装置
US6560637B1 (en) 1998-12-02 2003-05-06 Polycom, Inc. Web-enabled presentation device and methods of use thereof
SG99886A1 (en) * 2000-02-24 2003-11-27 Ibm System and method for collaborative multi-device web browsing
US7171444B2 (en) * 2001-11-14 2007-01-30 Sharp Laboratories Of America, Inc. Remote desktop protocol compression system
US7035899B2 (en) * 2003-07-18 2006-04-25 Remote Meeting Technologies, Inc. Method and system for remote conferencing via launching a web-based presentation sharing application based on code associated with the presentation sharing control
US7614075B2 (en) 2004-08-13 2009-11-03 Microsoft Corporation Dynamically generating video streams for user interfaces
US7590750B2 (en) 2004-09-10 2009-09-15 Microsoft Corporation Systems and methods for multimedia remoting over terminal server connections
US7240111B2 (en) * 2005-04-12 2007-07-03 Belkin Corporation Apparatus and system for managing multiple computers
US8112513B2 (en) * 2005-11-30 2012-02-07 Microsoft Corporation Multi-user display proxy server
US20070220161A1 (en) 2006-03-15 2007-09-20 Microsoft Corporation Broadcasting a presentation over a messaging network
US7933955B2 (en) * 2006-07-11 2011-04-26 Igor Khalatian One-click universal screen sharing
US7953795B2 (en) * 2007-01-03 2011-05-31 Interwise Ltd. Method and apparatus for participating in a conference session over a data communication network
US9438662B2 (en) 2007-04-30 2016-09-06 Microsoft Technology Licensing, Llc Enabling secure remote assistance using a terminal services gateway
WO2008137432A2 (en) 2007-05-01 2008-11-13 Dyyno Sharing of information and formatting information for transmission over a communication network
US20080313545A1 (en) * 2007-06-13 2008-12-18 Microsoft Corporation Systems and methods for providing desktop or application remoting to a web browser
US8184065B2 (en) * 2007-11-12 2012-05-22 Rgb Spectrum Efficient mode switching in a video processor system
US9148289B2 (en) * 2008-01-30 2015-09-29 Hewlett-Packard Development Company, L.P. Method for streaming video data
JP5003521B2 (ja) * 2008-02-14 2012-08-15 日本電気株式会社 動き補償に伴う更新領域検出装置
JP5303192B2 (ja) * 2008-06-03 2013-10-02 株式会社日立メディコ 医療画像システム、医療画像システムの画像圧縮方法
US8910112B2 (en) 2008-07-30 2014-12-09 Sap Ag Extended enterprise connector framework using direct web remoting (DWR)
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
US20100131868A1 (en) * 2008-11-26 2010-05-27 Cisco Technology, Inc. Limitedly sharing application windows in application sharing sessions
JP2010157899A (ja) * 2008-12-26 2010-07-15 Sharp Corp 画像処理装置、画像形成装置、画像処理方法、コンピュータプログラム及び記録媒体
US8195768B2 (en) 2008-12-29 2012-06-05 Apple Inc. Remote slide presentation
US9342814B2 (en) * 2009-04-07 2016-05-17 Clearslide, Inc. Presentation access tracking system
US20100306406A1 (en) 2009-05-29 2010-12-02 Alok Mathur System and method for accessing a remote desktop via a document processing device interface
US9143570B2 (en) * 2010-05-04 2015-09-22 Microsoft Technology Licensing, Llc Desktop screen sharing over HTTP
GB2481613A (en) * 2010-06-30 2012-01-04 Skype Ltd Updating regions of shared images using a server that records image status
US8799405B2 (en) * 2010-08-02 2014-08-05 Ncomputing, Inc. System and method for efficiently streaming digital video
US8711844B2 (en) * 2011-01-10 2014-04-29 Vtech Telecommunications Limited Peer-to-peer, internet protocol telephone system with proxy interface for configuration data

Also Published As

Publication number Publication date
WO2012170237A2 (en) 2012-12-13
KR20140036220A (ko) 2014-03-25
JP2014523669A (ja) 2014-09-11
EP2719148A2 (en) 2014-04-16
CA2838287A1 (en) 2012-12-13
MX2013014599A (es) 2014-01-24
CN103597797B (zh) 2016-05-11
WO2012170237A3 (en) 2013-02-21
CN103597797A (zh) 2014-02-19
KR101916980B1 (ko) 2018-11-08
EP2719148A4 (en) 2014-11-05
US20120317236A1 (en) 2012-12-13
EP2719148B1 (en) 2021-05-05
US9167020B2 (en) 2015-10-20

Similar Documents

Publication Publication Date Title
JP6072018B2 (ja) ウェブ・ブラウザ・ベースのデスクトップおよびアプリケーション・リモート・ソリューション
US20170046013A1 (en) Web-browser based desktop and application remoting solution
US11029990B2 (en) Delivering a single end user experience to a client from multiple servers
US7954150B2 (en) Methods and systems for assigning access control levels in providing access to resources via virtual machines
US9710297B2 (en) Dynamic allocation and assignment of virtual environment
US8970603B2 (en) Dynamic virtual device failure recovery
WO2007087558A2 (en) Methods and systems for providing access to a computing environment
US8924507B2 (en) Cross-frame progressive spoiling support for reduced network bandwidth usage
US8813252B2 (en) Request based license mode selection
WO2007100942A2 (en) Methods and systems for providing access to a computing environment provided by a virtual machine executing in a hypervisor executing in a terminal services session
US9286088B2 (en) User interface for interaction with virtual machine
KR20210027338A (ko) 특정 시점의 환경을 제공할 수 있는 가상 데스크톱 시스템 및 그 데이터 처리 방법
US20140156736A1 (en) Apparatus and method for managing threads to perform divided execution of software
KR20180051719A (ko) Html5 기반의 가상화 융합형 웹서비스 시스템 및 방법
US9549019B2 (en) Managing a logical client for a virtual machine
US20120110478A1 (en) System and method for supporting software
US10284668B2 (en) Managing a logical client for an application
KR101951913B1 (ko) 웹 가상화 시스템 및 서비스 방법

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150515

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150515

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150527

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160523

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160701

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160927

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: 20161130

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161227

R150 Certificate of patent or registration of utility model

Ref document number: 6072018

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250