JP5087674B2 - 未構成のデスクトップ内のウィンドウズ・プレゼンテーション・フレームワーク(WindowsPresentationFramework)ベースのアプリケーションのリモーティング - Google Patents

未構成のデスクトップ内のウィンドウズ・プレゼンテーション・フレームワーク(WindowsPresentationFramework)ベースのアプリケーションのリモーティング Download PDF

Info

Publication number
JP5087674B2
JP5087674B2 JP2010502167A JP2010502167A JP5087674B2 JP 5087674 B2 JP5087674 B2 JP 5087674B2 JP 2010502167 A JP2010502167 A JP 2010502167A JP 2010502167 A JP2010502167 A JP 2010502167A JP 5087674 B2 JP5087674 B2 JP 5087674B2
Authority
JP
Japan
Prior art keywords
visual
application
tree
computing device
visual tree
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.)
Expired - Fee Related
Application number
JP2010502167A
Other languages
English (en)
Other versions
JP2010525428A (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 JP2010525428A publication Critical patent/JP2010525428A/ja
Application granted granted Critical
Publication of JP5087674B2 publication Critical patent/JP5087674B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation
    • 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)
  • User Interface Of Digital Computer (AREA)
  • Information Transfer Between Computers (AREA)
  • Digital Computer Display Output (AREA)

Description

本発明は、未構成のデスクトップ内のウィンドウズ・プレゼンテーション・フレームワーク(Windows Presentation Framework)ベースのアプリケーションのリモーティング(remoting)に関する。
特定のオペレーティングシステムでは、コンピューティングベースの装置でアプリケーションを実行するデスクトップの最終的な視覚的表現は、構成(composition)の結果である。構成とは、様々な視覚コンポーネントが可視化デバイス(visualization device)上で表されるプロセスである。可視化デバイスは、モニタとすることができ、デスクトップは、物理的な可視化デバイスの論理的な抽象化(logical abstraction)である。デスクトップを構成するプロセスは、様々な視覚コンポーネントの構造表現(structural representation)を生成すること、例えば、デスクトップ上の色や配置などの属性の関連付けを行うこと、および、構造表現と適合するコンテンツを表示することを含む。この構成のプロセスは、他のコンピューティングベースのアプリケーションによって利用することができる。ビジュアルコンテンツまたは要素の構成を実装する上記コンピューティングベースのアプリケーションの例には、WPF(Windows(登録商標)Presentation Foundation)のアプリケーションが含まれる。
リモーティングのとき、デスクトップは完全に構成され、該デスクトップは、クライアントまたはユーザ側に対してリモートにされる。構成プロセスの後はデスクトップに対するデータ転送は、ネットワークリソースの不正な使用となるので、リモート処理が非効率的になり遅くなる。
この課題を解決するための手段の記載は、Windows(登録商標)Presentation Foundation(以下、WPFと称する)ベースのアプリケーションなどのアプリケーションのリモーティングに関連する概念を紹介するために提供される。これらの概念を、以下の詳細な説明でさらに説明する。この課題を解決するための手段の記載は、特許請求する対象の本質的な特徴を特定することは意図されておらず、または実施形態における特許請求する対象の範囲を定めることも意図されていない。
以下の詳細な説明では、添付の図面を参照して説明する。図面において、参照番号の最左の番号は、その参照番号が最初に登場する図面の番号を示す。類似の機能およびコンポーネントを示すために、図面全体を通じて同じ参照番号を使用している。
未構成のデスクトップにおけるWPFベースのアプリケーションのリモーティングを実装する例示的なシステムを示す図である。 GDIおよびWPFアプリケーションのレンダリングターゲットへのビジュアルコンテンツのレンダリングを示す図である。 例示的なビジュアルツリーを示す図である。 例示的なサーバベースの装置を示す図である。 未構成のデスクトップにおいてWPFベースのアプリケーションをリモーティングするための様々なコンポーネント間の対話を示す図である。 未構成のデスクトップにおいてWPFベースのアプリケーションをリモーティングするための例示的な方法を示す図である。 コンピューティングベースの装置において重複コード(overlapping code)を使用してソフトウェア保護を実装する例示的な方法を示す図である。
WPFベースのアプリケーションなどのアプリケーションをリモーティングするためのシステムおよび方法を説明する。該システムおよび方法は、構造表現と関連付けられたリモート情報に基づくものである。構造表現は、アプリケーションまたはデスクトップのビジュアルコンテンツまたは要素に対応する。構造表現は、コンテンツをリモート側でレンダリングすることなく、アプリケーションをリモート側またはクライアント側で表示することを可能にする。構造情報(structural information)と関連付けられた情報は、表示されるときのデスクトップ上のビジュアルコンテンツの配置を指定するデータを含む。構造情報は、(構造表現と関連付けられた)ビジュアルツリー(visual tree)を介してレンダリングされるウィンドウの部分と、ウィンドウマネージャエージェントなど、デフォルトの共通のシステムコンポーネントによってレンダリングされるウィンドウの部分との関係の記述も含む。構造情報は、クライアント側において構造表現を再作成し、構造表現と適合するビジュアルコンテンツを表示するために使用される。一実装において、構造情報は、デスクトップに関する特定のレンダリングターゲットの配置情報によって作成される。一実装において、構造表現を、ビジュアルツリーとすることができる。
目的を達成するために、システムは、リモート側からクライアント側への構造情報のリモーティングを提供する。構造情報を使用して、1つまたは複数のビジュアルツリーによって生成されたビジュアルコンテンツが正しく配置され、該コンテンツは、ウィンドウマネージャエージェントなどのデフォルトの共通システムコンポーネントによってレンダリングされる。
目的を達成するために、構造表現をリモート側からクライアント側にリモーティングするシステムプロバイダでは、構造表現が、該構造表現(例えば、ビジュアルツリー)の再生成のために使用される。該システムは、クライアント側における構造表現と適合するビジュアルコンテンツのラスタライズ、およびレンダリングを可能にする。
システムは、デスクトップに対応する構造情報のリモート側からクライアント側へのリモーティングに作用し得る、1つまたは複数のコンピュータプログラムまたはエージェントを含むことができる。エージェントは、表示されるデスクトップの1つまたは複数のビジュアルコンテンツを関連付けて、対応する構造表現(例えば、ビジュアルツリー)を生成する。構造情報に関連する構造表現は、表示される際のビジュアルコンテンツの視覚な特性を決定する属性を提供する。リモート側のエージェントは、構造表現における全ての変更を認識することができ、対応する変更を、クライアント側で生成された構造表現に対して行うこともできる。変更された構造表現を、ビジュアルコンテンツに応じて表示するために使用することができる。一実装において、リモート側は、1つまたは複数のコンピューティングベースのアプリケーションまたはプログラムをホストするサーバコンピュータ装置である。
デスクトップの構成を行わない未構成デスクトップ(non-composed desktop)上のWPFベースのアプリケーションをリモーティングするためのシステムおよび方法について説明した態様を、任意の数の異なるコンピュータシステム、環境、および/または構成で実装することができるが、実施形態は、以下の例示的なシステムアーキテクチャとの関連で説明される。
例示的なシステム
図1は、未構成のデスクトップにおいてWPFアプリケーションに基づくアプリケーションをリモーティングするための例示的なシステム100を示す。目的を達成するために、システム100は、ネットワーク104を通じて1つまたは複数のクライアントコンピュータ装置106(1)−(N)と通信するサーバコンピュータ装置102を含む。例えば、一実装では、システム100は、数千ものオフィスPC、様々なサーバ、および数カ国に広がる他のコンピューティングベースの装置を含む、企業ネットワークとすることができる。代替的に、別の可能な実装では、システム100は、単一のファミリーに属する限られた数のPCのホームネットワークを含むことができる。
システム100は、複数のクライアントコンピュータ装置106が、サーバコンピュータ装置102にインストールまたはホストされているアプリケーションにアクセスする、マイクロソフト(登録商標)社によるターミナルサービス(Terminal Service)(登録商標)を含むか、または同様にすることができる。したがって、サーバコンピュータ装置102にホストされるアプリケーションへのアクセスを望むクライアントコンピュータ装置106は、Windows(登録商標)インタフェースを通じてそのアプリケーションと対話する。クライアント側で表示されるWindows(登録商標)インタフェースは、あたかもユーザがクライアントコンピュータ装置106を介したリモートではなくサーバコンピュータ装置102を通じて直接アプリケーションにアクセスしていたように、サーバコンピュータ装置102にレンダリングされる、デスクトップ環境を再現する。アクセスを、一定数のアプリケーションに対して、またはサーバコンピュータ装置102でホストされる全てのアプリケーションに対して与えることができることを理解されたい。
サーバコンピュータ装置102でホストされるアプリケーションおよびサービスは、例えば、リモートデスクトッププロトコル(RDP:remote desktop protocol)などの1つまたは複数のプロトコルを通じてデスクトップをリモーティングすることによって、クライアントコンピュータ装置106によるアクセスが可能である。このようなプロトコルの使用は、ターミナルサービス(登録商標)システムなどのリモートクライアントアクセスシステムとの関連において実装され得る。
クライアントコンピュータ装置106を互いに接続することができ、あるいはLAN、WAN、または当技術分野で公知の任意の他のネットワーク技術を含む、有線および/または無線ネットワークを通じて様々な組み合わせでサーバコンピュータ装置102と接続することができる。
サーバコンピュータ装置102およびクライアントコンピュータ装置106は、WPFに基づくアプリケーションをサポートするオペレーティングシステムを用いて実装され得る。例えば、クライアントコンピュータ装置106には、これに限定されないがマイクロソフト(登録商標)社によるWindows(登録商標)Vista(登録商標)のオペレーティングシステムを含む、オペレーティングシステムを備えることができる。
サーバコンピュータ装置102は、リダイレクトエージェント(redirection agent)108も含む。リダイレクトエージェント108は、サーバコンピュータ装置102にホストされているアプリケーションを、クライアントコンピュータ装置106にリモーティングするための機能を有する。これを実装するために、リダイレクトエージェント108は、サーバコンピュータ装置102のデスクトップに関連付けられた構造情報を収集して転送し、該構造情報にしたがって、サーバコンピュータ装置102のデスクトップに関連付けられたビジュアルコンテンツをレンダリングする。
図2は、様々なタイプのコンピュータベースのアプリケーション(例えば、GDIアプリケーション、またはWPFアプリケーション)が、あるコンピューティングベースの装置のデスクトップにおいて、それらに関連付けられたビジュアルコンテンツをレンダリングする方法を図示している。一般的に、ユーザは、インタフェース(例えば、Windows(登録商標)インタフェース)を通じてアプリケーションと対話することができる。上記アプリケーションの実行の結果として生成されるデータは、そのアプリケーションに関連付けられたWindows(登録商標)インタフェースにおいて可視である。
ブロック202は、GDIアプリケーション204に関連付けられたビジュアルコンテンツのレンダリングターゲット206へのレンダリングを図示している。レンダリングターゲットは、ラスタライズされレンダリングされた全てのピクセルが配置されている領域として定義することができる。フレームバッファは、レンダリングターゲットの一例である。GDIアプリケーション204は、通常、それらのビジュアルコンテンツを即時描画モード(immediate drawing mode)でレンダリングする。このような場合、GDIアプリケーション204は、それらの出力を、例えばフレームバッファなどのレンダリングターゲット206に直接出力する。したがって、描画(drawing)または視覚的表現は、GDIアプリケーション204によって作成されるたびに、フレームバッファ上に直接レンダリングされる。GDIアプリケーション204に何らかの変更が生じた場合、それらの全てのビジュアルコンテンツは再び、フレームバッファ上に再レンダリングされる。GDIアプリケーション204が、表示すべきビジュアルコンテンツをラスタライズし、レンダリングすること、および、それによって描画オペレーションの記述と、描画を処理するラスタライズおよびレンダリングを介した実行との間で論理的な区別は生じないことを理解されたい。
ブロック204は、WPFアプリケーション208と関連付けられたビジュアルコンテンツのレンダリングを図示している。WPFアプリケーション208におけるビジュアルコンテンツのレンダリングは、GDIアプリケーション204におけるレンダリングとは異なるが、これは、WPFアプリケーション208の表示すべきビジュアルコンテンツは、GDIアプリケーション204とは異なり、フレームバッファに直接レンダリングされないためである。WPFアプリケーション208の場合、関連付けられたビジュアルコンテンツは、例えば、ストレージバッファなどに別個に格納される。ビジュアルコンテンツを、ラスタライズモジュールによって生成することができる。
例えば、Windows(登録商標)Vista(登録商標)のオペレーティングシステムでは、ビジュアルコンテンツは、ビジュアルツリー210と呼ばれる構造表現として格納される。ビジュアルツリー210は、ノードで表されるような、中核のビジュアルコンテンツおよび関連付けられた情報を有する。ノードは、空間配置、アプリケーションウィンドウのサイズ、描画リソース、および描画命令などの属性を指定することができる。
WPFアプリケーション208のコンテンツを表示することを担うディスプレイ実行モジュールは、レンダリングターゲット212(例えば、フレームバッファ)への表示用にビジュアルツリーの一部分を選択する。ディスプレイ実行モジュールは、WPFレンダリングスレッドとすることができる。ビジュアルツリー210と適合するビジュアルコンテンツをレンダリングするために、WPFレンダリングスレッドは、ビジュアルツリー210の全てのノードをトラバースして、ビジュアルツリー210と適合するビジュアルコンテンツをレンダリングする。実行アプリケーションによって行われた全ての変更について、ビジュアルツリー210のノードへの対応する変更が存在する。WPFレンダリングスレッドは、ビジュアルツリー210への変更を認識し、実行アプリケーションによる影響があった変更によって特定される部分を、再レンダリングすることもできる。
デスクトップがリモートからアクセスされる方法は、アプリケーションのリモートアクセスとは異なってもよいことに留意されたい。例えば、デスクトップがリモートからアクセスされる場合、最初に、該デスクトップに対応するビジュアルツリーが作成される。この後、該デスクトップ上で実行中の1つまたは複数のアプリケーションに対応するビジュアルツリーの作成が行われる。次いで、全てのビジュアルツリーが、ルートノードに対する子ノードとして関連付けられる。その後、関連付けられたデスクトップおよびアプリケーションに関連する情報を有するこのようなビジュアルツリーが構成され、ビジュアルコンテンツがレンダリングされる。前述のように、ビジュアルツリーは、構造のみ表すことができ、デスクトップの視覚的表現を表すことができない。したがって、ビジュアルツリーの生成は、デスクトップのビジュアルコンテンツの構造特性から視覚表現を分離することで収集することができる。
一般的に、デスクトップの構成のプロセスは、ウィンドウのz順(z-order)、ウィンドウの相対的配置、透明度などを特定するための、1つまたは複数の視覚的要素間の関係を特定することから開始する。したがって、ビジュアルツリーは、視覚的要素の構造表現を考慮して生成される。視覚的要素は、ビジュアルツリーの1つまたは複数のノードを形成する。次いで、ディスプレイ実行モジュールが、潜在的な属性(例えば、エフェクト、変換など)を視覚的要素と関連付けて、ビジュアルツリーの表示時点を作成する。マイクロソフト(登録商標)社によるWindows(登録商標)Vista(登録商標)のオペレーティングシステムなどのオペレーティングシステムの場合、構成は、DWM(Desktop Windows(登録商標)Manager)と呼ばれるオペレーティングシステムコンポーネントによって管理することができる。
図3は、例示的なビジュアルツリー300を図示している。ビジュアルツリー300は、構造の親ノード、すなわちルートノードとして、ルートノード302を含む。ビジュアルツリー300はさらに、1つまたは複数の子ノード304(1)−(N)を含む。図示されている複数の子ノードのうちの1つの子ノードである、ノード304(1)は、デスクトップを表す。残りのノード304(2)−(N)は、ビジュアルツリー300が対応するデスクトップ上で実行中の1つまたは複数のアプリケーションに対する、それぞれの構造表現またはビジュアルツリーである。ある特定の実装において、1つまたは複数のノード304(2)−(N)は、他の子ノードの親ノードとすることができる。例えば、図示されたようにノード304(2)は、1つまたは複数の子ノード306(1)−(N)の親ノードである。さらに、子ノード306(1)−(N)は、ノード304(2)−(N)を定義している属性、および関連付けられたアプリケーションの構造表現を提供することができる。そのような属性の例には、ウィンドウの順序付け、クリッピングなどが含まれるが、これらには限定されない。
図4は、サーバコンピュータ装置102の関連する例示的なコンポーネントを図示している。サーバコンピュータ装置102は、1つまたは複数のプロセッサ402、およびメモリ404を含むことができる。プロセッサ402は、マイクロプロセッサ、マイクロコンピュータ、マイクロコントローラ、デジタル信号プロセッサ、中央処理装置、状態マシン、論理回路、および/または動作命令に基づいて信号を操作する任意の装置を含むことができる。その他の機能として、プロセッサ402は、メモリ404に格納されたコンピュータ読取可能命令をフェッチして実行するように構成される。
メモリ404は、例えば、揮発性メモリ(例えば、RAM)、および/または不揮発性メモリ(例えば、フラッシュメモリなど)を含む、当技術分野で公知の任意のコンピュータ読取可能媒体を含むことができる。図4に図示されているように、メモリ404は、プログラム406およびデータ408を含むこともできる。プログラム406は、例えば、リダイレクトエージェント108、リモーティングモジュール410、ビジュアルツリージェネレータ412、および他のアプリケーション414を含む。他のアプリケーション414は、ワードプロセッサアプリケーション、スプレッドシートアプリケーションなど、任意のコンピューティングベースの装置におけるアプリケーションを補完するプログラムを含む。一実装において、他のアプリケーション414には、ラスタライズモジュールが含まれる。
データ408は、例えば、ノードデータ416、構造情報データ418、ラスタライズデータ420、および他のデータ422を含む。ノードデータ416は、例えば、子ノード304(1)−(N)などの1つまたは複数の子ノードに関連する情報を格納する。前述したように、子ノードは、一実装において、デスクトップ上で実行中の1つまたは複数のアプリケーションに対応する。リダイレクトエージェント108は、構造リダイレクトエージェント424およびWindows(登録商標)マネージャリダイレクトエージェント426をさらに含む。
一実装において、ノードデータ416は、デスクトップにおけるWPFアプリケーションのレンダリングターゲットの関係および配置に関する構造情報データ418を含む。
図5は、クライアントコンピュータ装置106の関連する例示的なコンポーネントを図示している。一実装において、クライアントコンピュータ装置106は、1つまたは複数のプロセッサ502、およびメモリ504を含む。プロセッサ502は、例えば、マイクロプロセッサ、マイクロコンピュータ、マイクロコントローラ、デジタル信号プロセッサ、中央処理装置、状態マシン、論理回路、および/または動作命令に基づいて信号を操作する任意の装置を含む。他の機能として、プロセッサ502は、メモリ504に格納されたコンピュータ読取可能命令をフェッチして実行するように構成される。
メモリ504は、例えば、揮発性メモリ(例えば、RAM)、および/または不揮発性メモリ(例えば、フラッシュメモリなど)を含む、当技術分野で公知の任意のコンピュータ読取可能媒体を含むことができる。図5に図示されるように、メモリ504は、プログラム506およびデータ508も含むことができる。プログラム506は、例えば、ディスプレイ実行モジュール510、ビジュアルツリージェネレータ512、および他のアプリケーション514を含む。他のアプリケーション514は、ワードプロセッサアプリケーション、スプレッドシートアプリケーションなどのアプリケーションを補完するプログラムを含む。一実装において、他のアプリケーション514には、ラスタライズモジュールが含まれる。データ508には、一例として、ビジュアルデータ516および他のデータ518が含まれる。
デスクトップ、および該デスクトップで実行中のアプリケーションのリモーティングは、リダイレクトエージェント108によって実装される。リダイレクトエージェント108は、サーバコンピュータ装置102において、デスクトップと関連付けられた構造情報および構造表現の転送に影響を与え、該リダイレクトエージェント108は、クライアント側(例えば、クライアントコンピュータ装置106)において、これをレンダリングする。
前述のように、1つまたは複数のアプリケーションは、サーバコンピュータ装置102にホストされる。クライアントコンピュータ装置106のうちの1つまたは複数のクライアントコンピュータ装置のユーザは、アプリケーションにアクセスするためにサーバコンピュータ装置102へのリモートセッションの開始を要求することができる。一実装において、サーバコンピュータ装置102と、1つまたは複数のクライアントコンピュータ装置106との間のリモートセッションは、リモーティングモジュール410によって開始される。
リモートセッションの最初の段階において、サーバコンピュータ装置102は、リモーティングされたアプリケーションの構造表現(例えば、ビジュアルツリー)を必要とせずに動作する。このようなシナリオにおいて、サーバコンピュータ装置102の1つまたは複数のアプリケーションからの全てのグラフィックのレンダリングは、単一の即時描画モードの可視表面(visible surface)をターゲットとする。一実装において、この可視表面は、フレームバッファとすることができる。
WPFアプリケーション(例えば、WPFアプリケーション208)が作成されると、サーバコンピュータ装置102のグラフィックシステムは、「構造リダイレクト(structural redirection)」モードと呼ばれる、新たな描画モードに遷移する。一実装において、構造リダイレクトモードは、構造リダイレクトエージェント422によって実装される。構造リダイレクトエージェント422は、1つまたは複数のビジュアルツリーを有する単一の即時モードの可視表面を保持する。このビジュアルツリーは、ビジュアルツリージェネレータ412によって作成され、対応する1つまたは複数のWPFアプリケーション208によって制御される。前述のように、ビジュアルツリーは、様々な関係(例えば、1つまたは複数の視覚的要素間のアプリケーションウィンドウのz順)を定義する構造情報を含む。一実装において、構造情報は、ノードデータ416内部の構造情報データ418に格納される。
ウィンドウマネージャエージェント426は、構造情報を構造リダイレクトエージェント424に送信する。構造リダイレクトエージェント424は、ノードデータ416を収集して、クライアント側のビジュアルツリージェネレータ512に転送する。構造リダイレクトエージェント424によって保持されるビジュアルツリーは、デスクトップ全体を網羅している。一実装において、ウィンドウマネージャからのノードデータ416は、構造リダイレクトレイヤエージェント424から、クライアント側のビジュアルツリージェネレータ512に転送される。この段階では、ビジュアルツリーを保持すること、および、ビジュアルツリーでカバーされていないデスクトップの領域に対して任意の他の描画オペレーションを実行することにのみ、処理機能を使用してもよいことに留意されたい。リモート側では構成プロセスは起こらないので、構成素アプリケーション(constituent applications)を有するデスクトップは、未構成の状態である。この段階では、リモート側では任意の構造表現またはビジュアルツリーに対するラスタライズは起こらないことにも留意されたい。
(ウィンドウマネージャエージェント426からの)ノードデータ416が構造リダイレクトエージェント424によって収集されると、該ノードデータ416は、リモートディスプレイクライアントに送信される。構造リダイレクトエージェント424は、リモートディスプレイクライアント(例えば、クライアントコンピュータ装置106)に、該クライアント側で(すなわち、クライアントコンピュータ装置106で)ノードデータ416に対応するビジュアルツリーを再作成するように指示する。一実装において、クライアントコンピュータ装置106においてビジュアルツリーは、ビジュアルツリージェネレータ512によって生成される。作成されたビジュアルツリーは、リモーティングされたデスクトップの表現として子ツリーを有し、該デスクトップを通じてユーザによって実行されているWPFアプリケーション208として、これと同じ数の他の子ツリーを有する。別の実装において、ビジュアルツリージェネレータ512によって生成されたビジュアルツリーは、他のデータ518に格納される。
1つまたは複数のGDIアプリケーション204も、WPFアプリケーション208とともに、サーバコンピュータ装置102からリモーティングすることができる。この場合、ビジュアルツリーのルートノードの1つの子ノードが、全てのGDIアプリケーション204によって表示されるコンテンツと関連付けられ、ユーザまたはクライアントによって実行中のWPFアプリケーション208と同数の他の子ツリーを有する。一実装において、1つまたは複数のGDIアプリケーション204と関連付けられたビジュアルコンテンツは、ラスタライズされたデータ416に格納される。
例えば、クライアントコンピュータ装置106などのクライアント側では、ビジュアルツリーを作成すると、クライアントコンピュータ装置106のディスプレイ実行モジュール510が、該ビジュアルツリーに従ってビジュアルコンテンツをレンダリングする。レンダリングされたビジュアルコンテンツは、ビジュアルデータ516に格納される。このように、デスクトップは、サーバコンピュータ装置102における該デスクトップのレンダリングおよび構成を必要とせずに、リモーティングされる。ディスプレイ実行モジュール510は、Windows(登録商標)Vista(登録商標)のオペレーティングシステムを有するクライアントコンピュータ装置106内の、メディアインフラストラクチャレイヤ(Media Infrastructure Layer)のレンダリングスレッドとすることができる。
例示的な方法
未構成のデスクトップにおけるWPFベースのアプリケーションをリモーティングする例示的な方法を、図1から図5を参照して説明してきたが、図6を参照してより詳細に説明する。図6は、サーバコンピュータ装置102と、サーバコンピュータ装置102にホストされたアプリケーションにアクセスしようとする1つまたは複数のクライアントコンピュータ装置106との間で生じる対話を図示している。
これらの例示的な方法は、コンピュータ実行可能命令との一般的な関係において説明できる。一般的に、コンピュータ実行可能命令には、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造、プロシージャ、モジュール、機能、および特定の機能を実行するか、もしくは特定の抽象データ型を実装する同様のものが含まれる。本方法は、通信ネットワークを通じてリンクされるリモート処理装置によって機能が実行される、分散コンピューティング環境で実施することもできる。分散コンピュータ環境では、コンピュータ実行可能命令を、メモリ記憶装置を含む、ローカルおよびリモート両方のコンピュータ記憶媒体に配置することができる。
図7は、コンピューティングベースの装置において重複コード(overlapping code)を使用してソフトウェア保護を実装する例示的な方法700を図示している。方法が記載される順序は、限定して解釈されることは意図されておらず、任意の数の記載された方法のブロックを、本方法または代替的な方法を実装する任意の順序で組み合わせることができる。さらに、本明細書で説明される対象の精神および範囲を逸脱することなく、個々のブロックを本方法から削除することができる。さらに、本方法を、任意の適切なハードウェア、ソフトウェア、ファームウェア、またはそれらの組み合わせで実装することができる。
ブロック702において、デスクトップ上の1つまたは複数の視覚コンポーネントが、相互に関連付けられる。例えば、視覚コンポーネントは、サーバコンピュータ装置102上で実行中の1つまたは複数のアプリケーションによって生成される、視覚的出力(例えば、Windows(登録商標)インタフェース)に対応する。一実装において、視覚コンポーネント間の関係は、表示すべきウィンドウのz順、相対的配置、透明性などとすることができる。
ブロック704において、第1のWPFアプリケーションが開始されると、デスクトップ内で実行中の全てのアプリケーションのセットに関する構造情報データが収集され、ビジュアルツリージェネレータ512に送信される。例えば、ビジュアルツリーと関連付けられた構造情報が収集される。一実装において、構造リダイレクトエージェント422は、ウィンドウマネージャエージェントからの、ビジュアルツリーと関連付けられた構造情報データ421またはノードデータ416を収集する。一実装において、転送されたノードデータ416は、クライアント側のビジュアルツリージェネレータ512によって管理される。この段階では、ビジュアルツリーを保持する処理のみが行われることに留意されたい。構成素アプリケーションを有するデスクトップは、構造形式で表現されるので、未構成の状態である。
ブロック706において、ビジュアルツリーが、視覚コンポーネントを用いてノードとして作成される。上述のように、ビジュアルツリーは、表示すべき視覚コンポーネントの構造表現である。例えば、リモートセッションが開始されているとき、サーバコンピュータ装置102は、リモーティングされたアプリケーションと関連付けられた任意のビジュアルツリーなしに動作する。このようなシナリオにおいて、サーバコンピュータ装置102上の1つまたは複数のアプリケーションからの全てのグラフィックのレンダリングは、単一の即時描画モードの可視表面をターゲットとする。
WPFアプリケーション、例えば、WPFアプリケーション208が、サーバコンピュータ装置102で開始されると、該WPFアプリケーションのグラフィックシステムは、構造リダイレクトエージェント422を介して実装される、構造リダイレクトモードに遷移する。構造リダイレクトエージェント422は、単一の即時描画モードの可視表面を、例えばビジュアルツリー300などの1つまたは複数のビジュアルツリーを用いて保持する。
ブロック708において、ビジュアルツリーがリモートクライアント側で構築される。例えば、構造リダイレクトエージェント422は、該ビジュアルツリーと関連付けられたノードデータ416を生成し、1つまたは複数のクライアントコンピュータ装置106内のビジュアルツリージェネレータ512に、ビジュアルツリーを再作成するように命令する。ビジュアルツリージェネレータ512によって作成されたビジュアルツリーは、転送されたノードデータ416に対応する。該作成されたビジュアルツリーは、リモーティングされたデスクトップを表す子ツリーのノードを有し、サーバコンピュータ装置102のユーザによって実行されているWPFアプリケーション208と同数の他の子ツリーノードを有する。
ブロック710において、作成されたビジュアルツリーと適合するビジュアルコンテンツが、リモートクライアント側でレンダリングされる。例えば、ビジュアルツリーが作成されると、クライアントコンピュータ装置106のディスプレイ実行モジュール510は、該ビジュアルツリーの通りにビジュアルコンテンツをレンダリングする。一実装において、ディスプレイ実行モジュール510は、マイクロソフト(登録商標)社のVistaおよび同様のオペレーティングシステムのメディアインフラストラクチャレイヤのコンポーネント内のレンダースレッドである。
さらに、1つまたは複数のGDIアプリケーション204も、WPFアプリケーション208とともに、サーバコンピュータ装置102からリモーティングされる。この場合、ビジュアルツリーのルートノードの1つの子ノードは、全てのGDIアプリケーション204によって表示されるコンテントと関連付けられ、ユーザまたはクライアントによって実行されているWPFアプリケーション208と同数の他の子ツリーを有する。GDIアプリケーション204と関連付けられたビジュアルコンテンツは、GDIアプリケーション204の即時描画モードでレンダリングされ、WPFアプリケーション208は、上記に例示された方法でレンダリングされる。
結論
未構成のデスクトップにおけるWPFベースのアプリケーションをリモーティングするための実施形態について、構造的機能および/または方法に特有の言語で説明してきたが、特許請求の範囲の対象は、必ずしも説明した特定の機能または方法には限定されないことを理解されたい。むしろ、この特定の機能および方法は、コードの重複を使用するソフトウェア保護の例示的な実装として開示されている。

Claims (13)

  1. サーバコンピューティング装置であって、
    メモリと、
    前記メモリに動作可能なように接続される1つまたは複数のプロセッサと、
    前記メモリ内のリダイレクトエージェントであって、当該サーバコンピューティング装置の1つまたは複数のデスクトップおよびアプリケーションをリモートクライアントに対してリモーティングする、リダイレクトエージェントと、
    前記プロセッサによって実行されると、
    フレームバッファに直接出力する即時レンダリングモードで、前記1つまたは複数のデスクトップおよびアプリケーションからのグラフィックを単一の可視面上にレンダリングし、
    プレゼンテーションフレームワークアプリケーションの作成に応答して、前記即時レンダリングモードから構造リダイレクションモードに遷移し、
    前記1つまたは複数のデスクトップおよびアプリケーションの視覚的要素に関連付けられた構造情報を含む第1のビジュアルツリーを保持し、
    前記構造情報をノードデータに格納し、
    前記ノードデータを、リモートクライアントにおいて稼動するビジュアルツリージェネレータに転送し、
    当該サーバコンピューティング装置側で前記1つまたは複数のデスクトップおよびアプリケーションのコンテンツをレンダリングすることなく、前記ビジュアルツリージェネレータに、前記リモートクライアントにおいて前記転送されたノードデータから第2のビジュアルツリーを生成し、該第2のビジュアルツリーを用いて前記アプリケーションを表示するように命令する
    構造リダイレクトエージェントと
    を備えたことを特徴とするサーバコンピューティング装置。
  2. GDIアプリケーション前記プレゼンテーションフレームワークアプリケーションとともに前記リモートクライアントに対してリモーティングされ、前記第1および第2のビジュアルツリーのルートノードの子ノードは、前記GDIアプリケーションによって表示されるべきコンテンツに関連付けられることを特徴とする請求項1に記載のサーバコンピューティング装置。
  3. 前記GDIアプリケーション関連付けられたビジュアルコンテンツは、前記リモートクライアントに送信される前に、ラスタライズされたデータとして前記サーバコンピューティング装置に格納されることを特徴とする請求項に記載のサーバコンピューティング装置。
  4. 前記アプリケーションに対応するビジュアルツリーを作成するビジュアルツリージェネレータをさらに備えたことを特徴とする請求項1に記載のサーバコンピューティング装置。
  5. 前記ビジュアルツリーは、デスクトップの表現として子ツリーと、前記リモートクライアントにリモーティングされるプレゼンテーションフレームワークアプリケーション対応する複数の子ツリーとを含み、個々の子ツリーが、ビジュアルツリーのルートノードに対する子ノードとして関連付けられることを特徴とする請求項4に記載のサーバコンピューティング装置。
  6. 前記構造リダイレクトエージェントに構造情報を提供し、構造情報のノードデータを生成するウィンドウマネージャエージェントをさらに備えたことを特徴とする請求項1に記載のサーバコンピューティング装置。
  7. 前記構造リダイレクトエージェントは、デスクトップ全体に対するビジュアルツリーを保持し、前記リモートクライアントにビジュアルツリーを作成するように命令することを特徴とする請求項6に記載のサーバコンピューティング装置。
  8. サーバコンピューティング装置によって実行される方法であって、
    前記サーバコンピューティング装置において実行されているデスクトップおよびアプリケーションのグラフィックを、フレームバッファに直接出力する即時レンダリングモードで単一の可視面上にレンダリングするステップと、
    プレゼンテーションフレームワークアプリケーションの作成の決定に応答して、前記即時レンダリングモードから構造リダイレクションモードに遷移するステップと、
    前記サーバコンピューティング装置において実行されている前記デスクトップおよびアプリケーションの1つまたは複数の視覚コンポーネントであって、リモートクライアントにおいて表示すべき1つまたは複数の視覚コンポーネントの間の関係を識別するステップと、
    第1のビジュアルツリーを生成するステップであって、前記視覚コンポーネントを当該第1のビジュアルツリーのノードとして表した第1のビジュアルツリーを生成するステップと、
    前記第1のビジュアルツリー関連付けられた構造情報を収集するステップと 前記リモートクライアントにおいて前記構造情報に基づいて第2のビジュアルツリーを構築して前記アプリケーションを表示することができるように、前記サーバコンピューティング装置から前記リモートクライアントに前記構造情報を転送するステップと
    を含むことを特徴とする方法。
  9. 前記視覚コンポーネントの間の関係は、表示すべきウィンドウのz順、前記ウィンドウの相対的配置、および前記ウィンドウそれぞれに関連付けられた透明性のうちの1つまたは複数を含むことを特徴とする請求項に記載の方法。
  10. 前記収集するステップは、前記第1のビジュアルツリーを保持するための処理のみを含むことを特徴とする請求項に記載の方法。
  11. 前記第2のビジュアルツリーは、前記サーバコンピューティング装置から転送された構造情報を含むノードデータに対応することを特徴とする請求項に記載の方法。
  12. GDIアプリケーションおよび前記プレゼンテーションフレームワークアプリケーションは、前記視覚コンポーネントによって表現されることを特徴とする請求項に記載の方法。
  13. 前記プレゼンテーションフレームワークアプリケーションが開始されるとき、前記即時レンダリングモードの前記単一の可視面を保持するステップをさらに備えたことを特徴とする請求項に記載の方法。
JP2010502167A 2007-03-30 2008-02-28 未構成のデスクトップ内のウィンドウズ・プレゼンテーション・フレームワーク(WindowsPresentationFramework)ベースのアプリケーションのリモーティング Expired - Fee Related JP5087674B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/694,510 US8108799B2 (en) 2007-03-30 2007-03-30 Remoting of windows presentation framework based applications in a non-composed desktop
US11/694,510 2007-03-30
PCT/US2008/055322 WO2008121474A1 (en) 2007-03-30 2008-02-28 Remoting of windows presentation framework based applications in a non-composed desktop

Publications (2)

Publication Number Publication Date
JP2010525428A JP2010525428A (ja) 2010-07-22
JP5087674B2 true JP5087674B2 (ja) 2012-12-05

Family

ID=39796482

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010502167A Expired - Fee Related JP5087674B2 (ja) 2007-03-30 2008-02-28 未構成のデスクトップ内のウィンドウズ・プレゼンテーション・フレームワーク(WindowsPresentationFramework)ベースのアプリケーションのリモーティング

Country Status (5)

Country Link
US (1) US8108799B2 (ja)
EP (2) EP3525093B1 (ja)
JP (1) JP5087674B2 (ja)
CN (1) CN101652742B (ja)
WO (1) WO2008121474A1 (ja)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080250424A1 (en) * 2007-04-04 2008-10-09 Ms1 - Microsoft Corporation Seamless Window Implementation for Windows Presentation Foundation based Applications
US8407605B2 (en) 2009-04-03 2013-03-26 Social Communications Company Application sharing
US8397168B2 (en) 2008-04-05 2013-03-12 Social Communications Company Interfacing with a spatial virtual communication environment
EP2279472A4 (en) 2008-04-05 2013-11-20 Social Communications Co APPARATUS AND METHODS BASED ON A SHARED VIRTUAL SPACE COMMUNICATION ENVIRONMENT
US8203566B2 (en) 2009-05-29 2012-06-19 Microsoft Corporation Fixed function pipeline application remoting through a shader pipeline conversion layer
US8761520B2 (en) 2009-12-11 2014-06-24 Microsoft Corporation Accelerating bitmap remoting by identifying and extracting 2D patterns from source bitmaps
JP5521690B2 (ja) * 2010-03-26 2014-06-18 日本電気株式会社 画面データ配信システム、サーバ、画面データ配信方法、及びプログラム
US8768067B2 (en) 2010-04-15 2014-07-01 Microsoft Corporation Accelerating bitmap remoting by identifying and extracting patterns from source bitmaps through parallel processing techniques
EP2606466A4 (en) 2010-08-16 2014-03-05 Social Communications Co PROMOTING INTERACTIONS WITH COMMUNICANTS IN A NETWORK COMMUNICATION ENVIRONMENT
US10031636B2 (en) * 2011-09-08 2018-07-24 Microsoft Technology Licensing, Llc Remoting desktop displays using move regions
US9384711B2 (en) 2012-02-15 2016-07-05 Microsoft Technology Licensing, Llc Speculative render ahead and caching in multiple passes
CN102779355A (zh) * 2012-04-12 2012-11-14 天脉聚源(北京)传媒科技有限公司 一种实现三维饼状图动态呈现的方法
US9286122B2 (en) * 2012-05-31 2016-03-15 Microsoft Technology Licensing, Llc Display techniques using virtual surface allocation
US9235925B2 (en) 2012-05-31 2016-01-12 Microsoft Technology Licensing, Llc Virtual surface rendering
US9177533B2 (en) 2012-05-31 2015-11-03 Microsoft Technology Licensing, Llc Virtual surface compaction
US9230517B2 (en) 2012-05-31 2016-01-05 Microsoft Technology Licensing, Llc Virtual surface gutters
US9443331B2 (en) 2013-06-06 2016-09-13 Microsoft Technology Licensing, Llc Input object for routing input for visual elements
US9307007B2 (en) 2013-06-14 2016-04-05 Microsoft Technology Licensing, Llc Content pre-render and pre-fetch techniques
US9471194B2 (en) 2013-10-29 2016-10-18 Microsoft Technology Licensing, Llc Rendering windows having transparent properties from a remote desktop environment
US9565227B1 (en) 2014-06-16 2017-02-07 Teradici Corporation Composition control method for remote application delivery
US10102664B1 (en) * 2014-12-03 2018-10-16 Charles Schwab & Co., Inc. System and method for causing graphical information to be rendered
US11256528B2 (en) * 2018-10-26 2022-02-22 Nvidia Corporation Individual application window streaming suitable for remote desktop applications
KR102085959B1 (ko) * 2019-04-17 2020-03-06 최동준 원격 다중 접속 시스템 및 이의 동작방법

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6237092B1 (en) * 1998-05-05 2001-05-22 International Business Machines Corp. Client-server system with central application management allowing an administrator to configure user and group contexts during application configuration without relaunching the application
WO2002098112A2 (en) * 2001-05-29 2002-12-05 Transchip, Inc. Patent application cmos imager for cellular applications and methods of using such
US7441108B2 (en) * 2002-11-19 2008-10-21 Ken Scott Fisher Portable memory drive with portable applications and cross-computer system management application
US7117448B2 (en) * 2002-12-17 2006-10-03 International Business Machines Corporation System and method for determining desktop functionality based on workstation and user roles
US7173635B2 (en) * 2003-03-25 2007-02-06 Nvidia Corporation Remote graphical user interface support using a graphics processing unit
US7088374B2 (en) * 2003-03-27 2006-08-08 Microsoft Corporation System and method for managing visual structure, timing, and animation in a graphics processing system
US20050021756A1 (en) * 2003-07-26 2005-01-27 Grant Bruce K. Method of developing, delivering and rendering network applications
US7012606B2 (en) * 2003-10-23 2006-03-14 Microsoft Corporation System and method for a unified composition engine in a graphics processing system
US7711840B2 (en) * 2003-10-23 2010-05-04 Microsoft Corporation Protocol for remote visual composition
US7511718B2 (en) * 2003-10-23 2009-03-31 Microsoft Corporation Media integration layer
US20050125739A1 (en) * 2003-11-20 2005-06-09 Thompson Jeffrey W. Virtual desktop manager system and method
US7657837B2 (en) * 2005-04-06 2010-02-02 Ericom Software Ltd. Seamless windows functionality to remote desktop sessions regarding z-order
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
US8418132B2 (en) * 2005-04-29 2013-04-09 Microsoft Corporation Application description language
US8799857B2 (en) * 2005-04-29 2014-08-05 Microsoft Corporation XML application framework
US7609280B2 (en) * 2005-09-07 2009-10-27 Microsoft Corporation High level graphics stream
US8527563B2 (en) 2005-09-12 2013-09-03 Microsoft Corporation Remoting redirection layer for graphics device interface

Also Published As

Publication number Publication date
CN101652742B (zh) 2013-04-03
JP2010525428A (ja) 2010-07-22
EP3525093A1 (en) 2019-08-14
EP2142982A1 (en) 2010-01-13
WO2008121474A1 (en) 2008-10-09
EP2142982B1 (en) 2019-09-11
CN101652742A (zh) 2010-02-17
EP3525093B1 (en) 2022-06-15
US8108799B2 (en) 2012-01-31
EP2142982A4 (en) 2013-04-10
US20080244458A1 (en) 2008-10-02

Similar Documents

Publication Publication Date Title
JP5087674B2 (ja) 未構成のデスクトップ内のウィンドウズ・プレゼンテーション・フレームワーク(WindowsPresentationFramework)ベースのアプリケーションのリモーティング
US10178160B2 (en) Virtual application execution system and method
US7636893B2 (en) Client server approach for interactive updates of graphical user interfaces on intranets
JP5373135B2 (ja) 代替的グラフィック・セットの効率的な符号化
US20080250424A1 (en) Seamless Window Implementation for Windows Presentation Foundation based Applications
JP4901261B2 (ja) 高品質なユーザーインターフェイスによる効率的な遠隔表示を行なうシステム
US9674275B1 (en) Providing a file system interface to network-accessible computing resources
US20150220496A1 (en) Dynamic sprite based theme switching
US20080238929A1 (en) Local Themeing Of Remote Applications
US20050021756A1 (en) Method of developing, delivering and rendering network applications
JP2009507306A (ja) 高レベルグラフィックスシステム
US11303729B2 (en) Virtual workspace experience visualization and optimization
CA3108874C (en) Color scheme generator for web applications
AU2018370018A1 (en) Systems and methods for providing a visible watermark in a remote session
CN108733602B (zh) 数据处理
US20180196928A1 (en) Network visualization for access controls
US20230059754A1 (en) Methods, apparatuses and systems for managing a multi-tenant application system
CN116112573B (zh) 终端界面转换方法、装置、设备、存储介质和程序产品
CN117609646A (zh) 场景渲染方法、装置、电子设备及存储介质
CN113870411A (zh) 图片处理方法及装置
Skala et al. Distributed reliable rendering method for parametric modeling

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110117

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120301

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120316

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120618

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120910

R150 Certificate of patent or registration of utility model

Ref document number: 5087674

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150914

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

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

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

LAPS Cancellation because of no payment of annual fees