專利名稱:非合成桌面中的基于窗口呈現(xiàn)框架的應(yīng)用程序的遠(yuǎn)程發(fā)送的制作方法
非合成桌面中的基于窗口呈現(xiàn)框架的應(yīng)用程序的遠(yuǎn)程發(fā)送
些旦冃爾
在某些操作系統(tǒng)中,在基于計(jì)算的設(shè)備上運(yùn)行應(yīng)用程序的桌面的最終可視表示是合成的結(jié)果。合成是可用于在可視化設(shè)備上表示各種可視組件的過(guò)程??梢暬O(shè)備可以是監(jiān)視器,而桌面則是物理可視化設(shè)備的邏輯抽象。合成桌面的過(guò)程包括創(chuàng)建各種可視組件的結(jié)構(gòu)表示,并將例如顏色、桌面上的位置等屬性與它們相關(guān)聯(lián),隨后按照該結(jié)構(gòu)表示來(lái)顯示內(nèi)容。合成的過(guò)程可由基于計(jì)算機(jī)的應(yīng)用程序來(lái)利用。此類實(shí)現(xiàn)可視內(nèi)容或元素的合成的基于計(jì)算機(jī)的應(yīng)用程
序的示例包括Windows⑧呈現(xiàn)基礎(chǔ)(WPF)應(yīng)用程序。
在遠(yuǎn)程發(fā)送(remote)時(shí),桌面被完全合成并遠(yuǎn)程發(fā)送到客戶機(jī)或用戶端。在合成過(guò)程之后的與桌面相關(guān)的數(shù)據(jù)的傳送導(dǎo)致網(wǎng)絡(luò)資源的不正確利用,從而使遠(yuǎn)程發(fā)送過(guò)程低效且緩慢。
概述
提供本概述來(lái)介紹關(guān)于諸如基于Windows⑧呈現(xiàn)基礎(chǔ)(以下稱為WPF)的應(yīng)用程序等應(yīng)用程序的遠(yuǎn)程發(fā)送的概念。這些概念將在以下詳細(xì)描述中進(jìn)-一步描述。本概述并不旨在標(biāo)識(shí)所要求保護(hù)的主題的必要特征,也不旨在用于在- 一實(shí)施例中確定所要求保護(hù)的主題的范圍。
附圖簡(jiǎn)述
參考附圖來(lái)描述詳細(xì)描述。在附圖中,附圖標(biāo)記中的最左邊的數(shù)字標(biāo)識(shí)該附圖標(biāo)記首次出現(xiàn)的附圖。在各附圖中,使用相同的標(biāo)號(hào)來(lái)指示相同的特征和組件。
圖1示出在非合成桌面中實(shí)現(xiàn)基于Windows⑧呈現(xiàn)基礎(chǔ)的應(yīng)用程序的遠(yuǎn)程發(fā)送的示例性系統(tǒng)。
圖2示出將可視內(nèi)容呈現(xiàn)到GDI和WPF應(yīng)用程序的呈現(xiàn)目標(biāo)。圖3示出了示例性視覺(jué)樹(shù)。
圖4示出示例性的基于服務(wù)器的設(shè)備。
圖5示出各種組件之間的用于在非合成桌面中遠(yuǎn)程發(fā)送基于Windows⑧呈
現(xiàn)基礎(chǔ)的應(yīng)用程序的交互。
圖6示出用于在非合成中遠(yuǎn)程發(fā)送基于WPF的應(yīng)用程序的示例性方法。詳細(xì)描述
描述了用于遠(yuǎn)程發(fā)送諸如基于Windows⑧呈現(xiàn)基礎(chǔ)(WPF)的應(yīng)用程序等應(yīng)用程序的系統(tǒng)和方法。該系統(tǒng)和方法基于遠(yuǎn)程發(fā)送與結(jié)構(gòu)表示相關(guān)聯(lián)的信息。這些結(jié)構(gòu)表示對(duì)應(yīng)于應(yīng)用程序或桌面的可視內(nèi)容或元素。該結(jié)構(gòu)表示允許在不在遠(yuǎn)程端呈現(xiàn)內(nèi)容的情況下在遠(yuǎn)程端或客戶機(jī)端顯示應(yīng)用程序。與結(jié)構(gòu)信息相關(guān)聯(lián)的信息包括指定在顯示時(shí)可視內(nèi)容在桌面上的放置的數(shù)據(jù)。結(jié)構(gòu)信息還包括經(jīng)由(與結(jié)構(gòu)表示相關(guān)聯(lián)的)視覺(jué)樹(shù)呈現(xiàn)的窗口的各部分與將由諸如窗口管理器代理等默認(rèn)通用系統(tǒng)組件呈現(xiàn)的窗口的各部分之間的關(guān)系的描述。結(jié)構(gòu)信息用于在客戶機(jī)端重新創(chuàng)建結(jié)構(gòu)表示并按照該結(jié)構(gòu)表示來(lái)顯示可視內(nèi)容。在--個(gè)實(shí)現(xiàn)中,結(jié)構(gòu)信息由與桌面相關(guān)的特定呈現(xiàn)目標(biāo)的位置的知識(shí)來(lái)形成。在一個(gè)實(shí)現(xiàn)中,該結(jié)構(gòu)表示可以是視覺(jué)樹(shù)。
為此,該系統(tǒng)能夠?qū)⒔Y(jié)構(gòu)信息從遠(yuǎn)程端遠(yuǎn)程發(fā)送到客戶機(jī)端。該結(jié)構(gòu)信息被用于正確地定位由一個(gè)或多個(gè)視覺(jué)樹(shù)生成的可視內(nèi)容以及由諸如窗口管理器代理等默認(rèn)通用系統(tǒng)組件呈現(xiàn)的內(nèi)容。
為此,該系統(tǒng)能夠?qū)⒔Y(jié)構(gòu)表示從遠(yuǎn)程端遠(yuǎn)程發(fā)送到客戶機(jī)端,該結(jié)構(gòu)表示被用于該結(jié)構(gòu)表示的重新生成(例如,視覺(jué)樹(shù))。該系統(tǒng)允許按照該結(jié)構(gòu)表示來(lái)光柵化和呈現(xiàn)客戶機(jī)端上的可視內(nèi)容。
一種系統(tǒng)可以包括可以影響對(duì)應(yīng)于桌面的結(jié)構(gòu)信息從遠(yuǎn)程端到客戶機(jī)端的遠(yuǎn)程發(fā)送的一個(gè)或多個(gè)計(jì)算機(jī)程序或代理。代理將要顯示的桌面的一個(gè)或多個(gè)可視內(nèi)容相關(guān),并生成對(duì)應(yīng)的結(jié)構(gòu)表示(例如,視覺(jué)樹(shù))。該結(jié)構(gòu)表示相關(guān)于提供確定在顯示時(shí)可視內(nèi)容的可視特征的屬性的結(jié)構(gòu)信息。在遠(yuǎn)程端的代理還可以記錄結(jié)構(gòu)表示中的任何改變,并對(duì)在客戶機(jī)端生成的結(jié)構(gòu)表示作出對(duì)應(yīng)的改變。經(jīng)修改的結(jié)構(gòu)表示隨后可用于相應(yīng)地顯示可視內(nèi)容。在一實(shí)現(xiàn)中,遠(yuǎn)
5程端是主存一個(gè)或多個(gè)基于計(jì)算的應(yīng)用程序或程序的服務(wù)器計(jì)算設(shè)備。
盡管所描述的用于在不合成桌面的情況下在非合成桌面上遠(yuǎn)程發(fā)送基于WPF的應(yīng)用程序的系統(tǒng)和方法的各方面可以在任何數(shù)量的不同計(jì)算系統(tǒng)、環(huán)境、和/或配置中實(shí)現(xiàn),但在以下示例性系統(tǒng)架構(gòu)的上下文中描述這些實(shí)施例。
示例性系統(tǒng)
圖1示出用于在非合成桌面上遠(yuǎn)程發(fā)送基于Windows⑧呈現(xiàn)基礎(chǔ)(WPF)應(yīng)用程序的應(yīng)用程序的示例性系統(tǒng)100。為此,該系統(tǒng)100包括通過(guò)網(wǎng)絡(luò)104與一個(gè)或多個(gè)客戶機(jī)計(jì)算設(shè)備106(1)-(N)通信的服務(wù)器計(jì)算設(shè)備102。例如,在- 個(gè)實(shí)現(xiàn)中,系統(tǒng)IOO可以是公司網(wǎng)絡(luò),包括遍及若干國(guó)家的數(shù)千臺(tái)辦公室PC、各種服務(wù)器以及任何其他基于計(jì)算的設(shè)備?;蛘?,在另一可能的實(shí)現(xiàn)中,系統(tǒng)IOO可包括具有屬于單個(gè)家庭的有限數(shù)目的PC的家庭網(wǎng)絡(luò)。
系統(tǒng)100可以包括,或類似于由微軟⑧公司提供的終端服務(wù)(TerminalService )系統(tǒng),其中多個(gè)客戶機(jī)計(jì)算設(shè)備106訪問(wèn)安裝或主存在服務(wù)器計(jì)算設(shè)備102上的應(yīng)用程序。因此,希望訪問(wèn)主存在服務(wù)器計(jì)算設(shè)備102上的應(yīng)用程序的客戶機(jī)計(jì)算設(shè)備106通過(guò)Windows⑧界面與該應(yīng)用程序交互。在客戶機(jī)端顯示的Windows⑧界面復(fù)制將在服務(wù)器計(jì)算設(shè)備102上呈現(xiàn)的桌面環(huán)境,就如同用戶正在通過(guò)服務(wù)器計(jì)算設(shè)備102直接訪問(wèn)應(yīng)用程序而不是遠(yuǎn)程地通過(guò)客戶機(jī)計(jì)算設(shè)備106訪問(wèn)一樣。應(yīng)該理解,可以為一定數(shù)量的應(yīng)用程序、或?yàn)橹鞔嬖诜?wù)器計(jì)算設(shè)備102上的所有應(yīng)用程序提供訪問(wèn)。
主存在服務(wù)器計(jì)算設(shè)備102上的應(yīng)用程序和服務(wù)是可由客戶機(jī)計(jì)算設(shè)備106通過(guò)使用例如遠(yuǎn)程桌面協(xié)議(RDP)等一個(gè)或多個(gè)協(xié)議遠(yuǎn)程發(fā)送桌面來(lái)訪問(wèn)的。對(duì)此類協(xié)議的使用可以在諸如Terminal ServicesTM系統(tǒng)等遠(yuǎn)程客戶機(jī)訪問(wèn)系統(tǒng)的上下文中實(shí)現(xiàn)。
客戶機(jī)計(jì)算設(shè)備106可通過(guò)包括LAN、 WAN或任何其它本領(lǐng)域已知的聯(lián)網(wǎng)技術(shù)在內(nèi)的有線和/或無(wú)線網(wǎng)絡(luò)來(lái)按照各種組合彼此耦合或耦合到服務(wù)器計(jì)算設(shè)備102。
服務(wù)器計(jì)算設(shè)備102和客戶機(jī)計(jì)算設(shè)備106可以使用支持基于WPF的應(yīng)用程序的操作系統(tǒng)來(lái)實(shí)現(xiàn)。例如,可以向客戶機(jī)計(jì)算設(shè)備106提供的操作系統(tǒng)包括但不限于由微軟⑧公司提供的Windows VistaTM操作系統(tǒng)。
服務(wù)器計(jì)算設(shè)備102還包括重定向代理108。重定向代理108能夠操縱主存在服務(wù)器計(jì)算設(shè)備102上的應(yīng)用程序到客戶機(jī)計(jì)算設(shè)備106的遠(yuǎn)程發(fā)送。為實(shí)現(xiàn)此操縱,重定向代理108收集并傳送與服務(wù)器計(jì)算設(shè)備102的桌面相關(guān)聯(lián)的結(jié)構(gòu)信息,并根據(jù)該結(jié)構(gòu)信息呈現(xiàn)與服務(wù)器計(jì)算設(shè)備102的桌面相關(guān)聯(lián)的可視內(nèi)容。
圖2示出各種類型的基于計(jì)算機(jī)的應(yīng)用程序(例如,GDI應(yīng)用程序或WPF應(yīng)用程序)在基于計(jì)算的設(shè)備的桌面上呈現(xiàn)它們的相關(guān)聯(lián)可視內(nèi)容的方式。一般而言,用戶可以通過(guò)界面(例如,Windows 界面)與應(yīng)用程序交互。作為這些應(yīng)用程序的執(zhí)行的結(jié)果生成的數(shù)據(jù)在與該應(yīng)用程序相關(guān)聯(lián)的Windows 界面中是可見(jiàn)的。
框202示出了將與GDI應(yīng)用程序204相關(guān)聯(lián)的可視內(nèi)容呈現(xiàn)到呈現(xiàn)目標(biāo)206上。呈現(xiàn)目標(biāo)可被定義為其中放置了所有光柵化以及所呈現(xiàn)的像素的區(qū)域。幀緩沖區(qū)是呈現(xiàn)目標(biāo)的一個(gè)示例。GDI應(yīng)用程序204 —般以即時(shí)繪圖模式來(lái)呈現(xiàn)其可視內(nèi)容。在這種情況下,GDI應(yīng)用程序204將其輸出定向到例如幀緩沖區(qū)等呈現(xiàn)目標(biāo)206。因此,每當(dāng)一繪圖或可視表示由GDI應(yīng)用程序204創(chuàng)建,它就被直接呈現(xiàn)到幀緩沖區(qū)上。萬(wàn)一在GDI應(yīng)用程序204中發(fā)生了某些改變,則再次將其整個(gè)可視內(nèi)容重新呈現(xiàn)到幀緩沖區(qū)上。應(yīng)該理解,GDI應(yīng)用程序204光柵化并呈現(xiàn)要顯示的可視內(nèi)容,從而不在描述繪圖操作與經(jīng)由光柵化和呈現(xiàn)過(guò)程來(lái)執(zhí)行繪圖之間作出邏輯區(qū)分。
框204示出與WPF應(yīng)用程序208相關(guān)聯(lián)的可視內(nèi)容的呈現(xiàn)。在WPF應(yīng)用程序208中呈現(xiàn)可視內(nèi)容可以與在GDI應(yīng)用程序204中呈現(xiàn)不同,因?yàn)榕cGDI應(yīng)用程序204不同,要顯示的WPF應(yīng)用程序208的可視內(nèi)容不直接被呈現(xiàn)到幀緩沖區(qū)。在WPF應(yīng)用程序208的情況下,將相關(guān)聯(lián)的可視內(nèi)容單獨(dú)地存儲(chǔ)在例如存儲(chǔ)緩沖區(qū)中??梢晝?nèi)容可以由光柵化模塊生成。
例如,在Windows Vista 操作系統(tǒng)中,可視內(nèi)容作為被稱為視覺(jué)樹(shù)210的結(jié)構(gòu)表示來(lái)存儲(chǔ)。視覺(jué)樹(shù)210具有由節(jié)點(diǎn)來(lái)表示的核心視覺(jué)內(nèi)容和相關(guān)信息。節(jié)點(diǎn)可以指定像空間放置、應(yīng)用程序窗口的大小、繪圖資源以及繪圖指令等屬性。負(fù)責(zé)顯示W(wǎng)PF應(yīng)用程序208內(nèi)容的顯示執(zhí)行模塊選擇視覺(jué)樹(shù)的各部分以供在呈現(xiàn)目標(biāo)212上(例如,幀緩沖區(qū))顯示。該顯示執(zhí)行模塊可以是WPF呈現(xiàn)線程。為了按照視覺(jué)樹(shù)210來(lái)呈現(xiàn)可視內(nèi)容,WPF呈現(xiàn)線程遍歷視覺(jué)樹(shù)210的所有節(jié)點(diǎn)并按照視覺(jué)樹(shù)210來(lái)呈現(xiàn)可視內(nèi)容。對(duì)于由執(zhí)行應(yīng)用程序作出的任何改變,存在對(duì)視覺(jué)樹(shù)210的節(jié)點(diǎn)的相應(yīng)改變。WPF呈現(xiàn)線程還可以記錄對(duì)視覺(jué)樹(shù)210的改變,并重新呈現(xiàn)特定于受執(zhí)行應(yīng)用程序影響的改變的各部分。
應(yīng)該注意,遠(yuǎn)程地訪問(wèn)桌面的方式可以與應(yīng)用程序的遠(yuǎn)程訪問(wèn)不同。例如,在遠(yuǎn)程地訪問(wèn)桌面的情況下,可以首先創(chuàng)建相應(yīng)于該桌面的視覺(jué)樹(shù)。這之后是對(duì)應(yīng)于可在該桌面上運(yùn)行的一個(gè)或多個(gè)應(yīng)用程序的視覺(jué)樹(shù)的創(chuàng)建。隨后,將所有視覺(jué)樹(shù)作為子節(jié)點(diǎn)關(guān)聯(lián)到根節(jié)點(diǎn)。隨后將具有相關(guān)聯(lián)的桌面以及應(yīng)用程序相關(guān)信息的此視覺(jué)樹(shù)合成,且呈現(xiàn)視覺(jué)內(nèi)容。如前所述,視覺(jué)樹(shù)可以僅表示結(jié)構(gòu),而不表示桌面的可視表示。因此,可以得出視覺(jué)樹(shù)的生成將可視表示與桌面的可視內(nèi)容的結(jié)構(gòu)特征分開(kāi)。
-般而言,桌面的合成的過(guò)程開(kāi)始于指定一個(gè)或多個(gè)可視元素之間的關(guān)系,如指定窗口的z次序、窗口的相對(duì)放置、透明程度等。因此,生成視覺(jué)樹(shù),其是所考慮的可視元素的結(jié)構(gòu)表示??梢曉匦纬稍撘曈X(jué)樹(shù)的一個(gè)或多個(gè)節(jié)點(diǎn)。隨后,顯示執(zhí)行模塊將潛在屬性(例如,效果、變換等)與可視元素相關(guān)聯(lián)并創(chuàng)建視覺(jué)樹(shù)的時(shí)間點(diǎn)視圖。在像由微軟⑧公司提供的Windows VistaTM操作系統(tǒng)等操作系統(tǒng)的情況下,合成可以由被稱為桌面窗口管理器(,DesktopWindows Manager, DWN)的操作系統(tǒng)組件來(lái)管理。
圖3示出了示例性視覺(jué)樹(shù)300。視覺(jué)樹(shù)300包括作為該結(jié)構(gòu)的父節(jié)點(diǎn)或根節(jié)點(diǎn)的根節(jié)點(diǎn)302。視覺(jué)樹(shù)300還包括一個(gè)或多個(gè)子節(jié)點(diǎn)304(1)-(N)。在所示的多個(gè)子節(jié)點(diǎn)中, 一個(gè)節(jié)點(diǎn),即節(jié)點(diǎn)304 (1)表示桌面。剩余節(jié)點(diǎn)304(2)-(N)是可以在視覺(jué)樹(shù)300所對(duì)應(yīng)的桌面上運(yùn)行的一個(gè)或多個(gè)應(yīng)用程序的相應(yīng)結(jié)構(gòu)表示或視覺(jué)樹(shù)。在特定實(shí)現(xiàn)中, 一個(gè)或多個(gè)節(jié)點(diǎn)304(2) -(N)可以是其它子節(jié)點(diǎn)的父節(jié)點(diǎn)。例如,如所示節(jié)點(diǎn)304-(2)是一個(gè)或多個(gè)子節(jié)點(diǎn)306(1)-(N)的父節(jié)點(diǎn)。此外,子節(jié)點(diǎn)306(1)-(N)可以額外地提供定義節(jié)點(diǎn)304(2)-(N)且進(jìn)而定義相關(guān)聯(lián)的應(yīng)用程序的結(jié)構(gòu)表示的屬性。這種屬性的示例包括但不限于窗口的次序、裁剪等等。
圖4示出服務(wù)器計(jì)算設(shè)備102的相關(guān)示例性組件。服務(wù)器計(jì)算設(shè)備102可以包括一個(gè)或多個(gè)處理器402和存儲(chǔ)器404。處理器402可以包括微處理器、微型計(jì)算機(jī)、微控制器、數(shù)字信號(hào)處理器、中央處理單元、狀態(tài)機(jī)、邏輯電路和Z或基于操作指令操作信號(hào)的任何設(shè)備。處理器402被配置成取回并執(zhí)行存儲(chǔ)在存儲(chǔ)器404中的計(jì)算機(jī)可讀指令,并且具有其它能力。
存儲(chǔ)器404可包括本領(lǐng)域己知的任何計(jì)算機(jī)可讀介質(zhì),例如包括易失性存儲(chǔ)器(例如RAM)和/或非易失性存儲(chǔ)器(例如,閃存等)。如圖4中所示,存儲(chǔ)器404也可包括程序406和數(shù)據(jù)408。程序406例如包括重定向代理108、遠(yuǎn)程發(fā)送模塊410、視覺(jué)樹(shù)生成器412以及其它應(yīng)用程序414。其它應(yīng)用程序414包括補(bǔ)充任何基于計(jì)算的設(shè)備上的如文字處理程序、電子數(shù)據(jù)表應(yīng)用程序等應(yīng)用程序的程序。在一個(gè)實(shí)現(xiàn)中,其它應(yīng)用程序414包括光柵化模塊。
數(shù)據(jù)408例如包括節(jié)點(diǎn)數(shù)據(jù)416、結(jié)構(gòu)信息數(shù)據(jù)418、光柵化數(shù)據(jù)420、以及其它數(shù)據(jù)422。節(jié)點(diǎn)數(shù)據(jù)416存儲(chǔ)與例如子節(jié)點(diǎn)304(1)-(N)的一個(gè)或多個(gè)子節(jié)點(diǎn)相關(guān)的信息。如上所示,在一個(gè)實(shí)現(xiàn)中,子節(jié)點(diǎn)對(duì)應(yīng)于正在桌面上運(yùn)行一個(gè)或多個(gè)應(yīng)用程序。重定向代理108還包括結(jié)構(gòu)重定向代理424以及Windows⑧管理器重定向代理426。
在一個(gè)實(shí)現(xiàn)中,節(jié)點(diǎn)數(shù)據(jù)416包括關(guān)于關(guān)系的結(jié)構(gòu)信息數(shù)據(jù)418以及關(guān)于桌面的WPF應(yīng)用程序的呈現(xiàn)目標(biāo)的位置。
圖5示出客戶機(jī)計(jì)算設(shè)備106的相關(guān)示例性組件。在一個(gè)實(shí)現(xiàn)中,客戶機(jī)計(jì)算設(shè)備106包括一個(gè)或多個(gè)處理器502和存儲(chǔ)器504。處理器502例如包括微處理器、微型計(jì)算機(jī)、微控制器、數(shù)字信號(hào)處理器、中央處理單元、狀態(tài)機(jī)、邏輯電路和/或基于操作指令操作信號(hào)的任何設(shè)備。處理器502被配置成取回并執(zhí)行存儲(chǔ)在存儲(chǔ)器504中的計(jì)算機(jī)可讀指令,并且具有其它能力。
存儲(chǔ)器504可包括本領(lǐng)域己知的任何計(jì)算機(jī)可讀介質(zhì),例如包括易失性存儲(chǔ)器(例如RAM)和/或非易失性存儲(chǔ)器(例如,閃存等)。如圖5中所示,存儲(chǔ)器504也可包括程序506和數(shù)據(jù)508。程序506例如包括顯示執(zhí)行模塊510、視覺(jué)樹(shù)生成器512以及其它應(yīng)用程序514。其它應(yīng)用程序514包括補(bǔ)充例如文字處理程序、電子數(shù)據(jù)表應(yīng)用程序等應(yīng)用程序的程序。在一個(gè)實(shí)現(xiàn)中,其它應(yīng)
9用程序514包括光柵化模塊。作為示例,數(shù)據(jù)508包括可視數(shù)據(jù)516以及其它 數(shù)據(jù)518。
桌面和其中運(yùn)行的應(yīng)用程序的遠(yuǎn)程發(fā)送通過(guò)重定向代理108來(lái)實(shí)現(xiàn)。重定 向代理108影響與服務(wù)器計(jì)算設(shè)備102處的桌面相關(guān)聯(lián)的結(jié)構(gòu)信息和結(jié)構(gòu)表示 的傳送,并將它呈現(xiàn)在客戶機(jī)端處(例如,客戶機(jī)計(jì)算設(shè)備106)。
如..t所示, 一個(gè)或多個(gè)應(yīng)用程序被主存在服務(wù)器計(jì)算設(shè)備102上。 一個(gè)或 多個(gè)客戶機(jī)計(jì)算設(shè)備106的用戶可以請(qǐng)求發(fā)起到服務(wù)器計(jì)算設(shè)備102的遠(yuǎn)程會(huì) 話來(lái)訪問(wèn)應(yīng)用程序。在一個(gè)實(shí)現(xiàn)中,服務(wù)器計(jì)算設(shè)備102與客戶機(jī)計(jì)算設(shè)備106 中的一個(gè)或多個(gè)之間的遠(yuǎn)程會(huì)話由遠(yuǎn)程發(fā)送模塊410發(fā)起。
在遠(yuǎn)程會(huì)話的初始階段中,服務(wù)器計(jì)算設(shè)備102在沒(méi)有不遠(yuǎn)程發(fā)送應(yīng)用程 序的任何結(jié)構(gòu)表示(例如,視覺(jué)樹(shù))的情況下操作。在這種情形中,將來(lái)自服 務(wù)器計(jì)算設(shè)備102上的一個(gè)或多個(gè)應(yīng)用程序的所有圖形的呈現(xiàn)定位于單個(gè)即時(shí) 繪圖模式可視表面中。在一個(gè)實(shí)現(xiàn)中,該可視表面可以是幀緩沖區(qū)。
在創(chuàng)建了WPF應(yīng)用程序(例如,WPF應(yīng)用程序208)時(shí),服務(wù)器計(jì)算設(shè) 備102的圖形系統(tǒng)轉(zhuǎn)換到稱為"結(jié)構(gòu)重定向"模式的新的繪圖模式。在一實(shí)現(xiàn) 中,結(jié)構(gòu)重定向模式通過(guò)結(jié)構(gòu)重定向代理422來(lái)實(shí)現(xiàn)。結(jié)構(gòu)重定向代理422維 護(hù)具有一個(gè)或多個(gè)視覺(jué)樹(shù)的單個(gè)即時(shí)模式可視表面。視覺(jué)樹(shù)由視覺(jué)樹(shù)生成器 412創(chuàng)建并由相應(yīng)的一個(gè)或多個(gè)WPF應(yīng)用程序208控制。如上所述,視覺(jué)樹(shù) 包括定義各種關(guān)系(例如, 一個(gè)或多個(gè)可視元素之間的應(yīng)用程序窗口的z次序) 的結(jié)構(gòu)信息。在一實(shí)現(xiàn)中,結(jié)構(gòu)信息被存儲(chǔ)在節(jié)點(diǎn)數(shù)據(jù)416內(nèi)的結(jié)構(gòu)信息數(shù)據(jù) 418中。
窗口管理器代理426向結(jié)構(gòu)重定向代理424發(fā)送結(jié)構(gòu)信息。結(jié)構(gòu)重定向代 理424收集節(jié)點(diǎn)數(shù)據(jù)416并將其傳送到客戶機(jī)端處的視覺(jué)樹(shù)生成器512。由結(jié) 構(gòu)重定向代理424維護(hù)的視覺(jué)樹(shù)涵蓋整個(gè)桌面。在一個(gè)實(shí)現(xiàn)中,將源于窗口管 理器的節(jié)點(diǎn)數(shù)據(jù)416從結(jié)構(gòu)重定向?qū)哟?24傳送到客戶機(jī)端處的視覺(jué)樹(shù)生成 器512。應(yīng)該注意,在此階段,可以將處理能力專用于維護(hù)視覺(jué)樹(shù)以及為未被 視覺(jué)樹(shù)覆蓋的桌面的區(qū)域執(zhí)行任何其它繪圖操作。因?yàn)樵谶h(yuǎn)程端沒(méi)有合成過(guò)程 發(fā)生,所以具有組成應(yīng)用程序的桌面處于非合成狀態(tài)。還應(yīng)該注意,在此階段, 對(duì)任何結(jié)構(gòu)表示或視覺(jué)樹(shù)在遠(yuǎn)程端沒(méi)有光柵化發(fā)生。一旦節(jié)點(diǎn)數(shù)據(jù)416 (源于窗口管理器代理426)被結(jié)構(gòu)重定向代理424收 集到,它即被發(fā)送到遠(yuǎn)程顯示客戶機(jī)。結(jié)構(gòu)重定向代理424指示遠(yuǎn)程顯示客戶 機(jī)(例如,客戶機(jī)計(jì)算設(shè)備106)在客戶機(jī)端處(例如,在客戶機(jī)計(jì)算設(shè)備106 處)重新創(chuàng)建對(duì)應(yīng)于節(jié)點(diǎn)數(shù)據(jù)416的視覺(jué)樹(shù)。在一個(gè)實(shí)現(xiàn)中,客戶機(jī)計(jì)算設(shè)備 106處的視覺(jué)樹(shù)由視覺(jué)樹(shù)生成器512生成。所創(chuàng)建的視覺(jué)樹(shù)將具有作為被遠(yuǎn)程 發(fā)送的桌面的表示的子樹(shù)、以及與由用戶通過(guò)該桌面執(zhí)行的WPF應(yīng)用程序208 一樣多的其它子樹(shù)。在另一個(gè)實(shí)現(xiàn)中,將視覺(jué)樹(shù)生成器512所生成的視覺(jué)樹(shù)存 儲(chǔ)在其它數(shù)據(jù)518中。
還可以將一個(gè)或多個(gè)GDI應(yīng)用程序204連同WPF應(yīng)用程序208 —起從服 務(wù)器計(jì)算設(shè)備102處遠(yuǎn)程發(fā)送。在這種情況下,視覺(jué)樹(shù)的根節(jié)點(diǎn)的一個(gè)子節(jié)點(diǎn) 與要由所有GDI應(yīng)用程序204顯示的內(nèi)容相關(guān)聯(lián),且與和用戶或客戶機(jī)所執(zhí)行 的WPF應(yīng)用程序208 —樣多的其它子樹(shù)相關(guān)聯(lián)。在一實(shí)現(xiàn)中,將與一個(gè)或多 個(gè)GDI應(yīng)用程序204相關(guān)聯(lián)的可視內(nèi)容存儲(chǔ)在光柵化數(shù)據(jù)416中。
在例如客戶機(jī)計(jì)算設(shè)備106等客戶機(jī)端處創(chuàng)建了視覺(jué)樹(shù)后,客戶機(jī)計(jì)算設(shè) 備106的顯示執(zhí)行模塊510根據(jù)該視覺(jué)樹(shù)呈現(xiàn)可視內(nèi)容。將所呈現(xiàn)的可視內(nèi)容 存儲(chǔ)在可視數(shù)據(jù)516中。以這種方式,在不在服務(wù)器計(jì)算設(shè)備102處呈現(xiàn)并合 成桌面的情況下遠(yuǎn)程發(fā)送該桌面。顯示執(zhí)行模塊510可以是具有Microsoft VistaTM操作系統(tǒng)的客戶機(jī)計(jì)算設(shè)備106中的媒體基礎(chǔ)結(jié)構(gòu)層中的呈現(xiàn)線程。
示例性方法 用于非合成桌面中遠(yuǎn)程發(fā)送基于WPF的應(yīng)用程序的示例性方法參考圖1 到5且尤其參考圖6來(lái)描述。圖6示出發(fā)生在服務(wù)器計(jì)算設(shè)備102與尋求訪問(wèn) 主存在服務(wù)器計(jì)算設(shè)備102上的應(yīng)用程序的一個(gè)或多個(gè)客戶機(jī)計(jì)算設(shè)備106之 間的交互。
這些示例性方法可在計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述。 一般而言, 計(jì)算機(jī)可執(zhí)行指令可包括執(zhí)行特定功能或?qū)崿F(xiàn)特定的抽象數(shù)據(jù)類型的例程、程 序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)、過(guò)程、模塊、功能等。這些方法還能在其中功能 由通過(guò)通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備完成的分布式計(jì)算環(huán)境中實(shí)現(xiàn)。在分布式 計(jì)算環(huán)境中,計(jì)算機(jī)可執(zhí)行指令可以位于包括存儲(chǔ)器存儲(chǔ)設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。
圖7示出在基于計(jì)算的設(shè)備上實(shí)現(xiàn)使用重疊代碼的軟件保護(hù)的示例性方
法700。描述方法的次序并不旨在解釋為限制,并且任何數(shù)量的所述方法框都
可以按任何次序組合以實(shí)現(xiàn)本方法或?qū)崿F(xiàn)替換方法。另外,可從方法中刪除各 個(gè)框,而不背離此處所述的主題的精神和范圍。此外,本方法可用任何合適的 硬件、軟件、固件或其組合來(lái)實(shí)現(xiàn)。
在框702,將桌面上的一個(gè)或多個(gè)可視組件彼此聯(lián)系。例如,可視組件對(duì) 應(yīng)于可在服務(wù)器計(jì)算設(shè)備102上運(yùn)行的一個(gè)或多個(gè)應(yīng)用程序所生成的可視輸出 (例如,Windows⑧界面)。在一個(gè)實(shí)現(xiàn)中,可視組件之間的關(guān)系可以是要顯 示的窗口的z次序、相對(duì)放置、透明度等。
在框704,在啟動(dòng)了第一 WPF應(yīng)用程序時(shí),收集關(guān)于桌面中運(yùn)行的所有 應(yīng)用程序集的結(jié)構(gòu)信息數(shù)據(jù),并將其發(fā)送到視覺(jué)樹(shù)生成器512。例如,收集與 視覺(jué)樹(shù)相關(guān)聯(lián)的結(jié)構(gòu)信息。在一實(shí)現(xiàn)中,結(jié)構(gòu)重定向代理422從窗口管理器代 理收集與視覺(jué)樹(shù)相關(guān)聯(lián)的結(jié)構(gòu)信息數(shù)據(jù)421或節(jié)點(diǎn)數(shù)據(jù)416。在一個(gè)實(shí)現(xiàn)中, 所傳送的節(jié)點(diǎn)數(shù)據(jù)416由客戶機(jī)端處的視覺(jué)樹(shù)生成器512管理。應(yīng)該注意,在 此階段,可以僅為了維護(hù)該視覺(jué)樹(shù)而完成處理。具有組成應(yīng)用程序的桌面以結(jié) 構(gòu)形式來(lái)表示,因此處于非合成狀態(tài)。
在框706,創(chuàng)建具有可視組件作為節(jié)點(diǎn)的視覺(jué)樹(shù)。如上所述,視覺(jué)樹(shù)是要 顯示的視覺(jué)組件的結(jié)構(gòu)表示。例如,在發(fā)起遠(yuǎn)程會(huì)話時(shí),服務(wù)器計(jì)算設(shè)備102 在沒(méi)有任何與被遠(yuǎn)程發(fā)送的應(yīng)用程序相關(guān)聯(lián)的任何視覺(jué)樹(shù)的情況下操作。在這 種情形中,將來(lái)自服務(wù)器計(jì)算設(shè)備102上的一個(gè)或多個(gè)應(yīng)用程序的所有圖形的 呈現(xiàn)定位于單個(gè)即時(shí)模式可視表面中。
當(dāng)在服務(wù)器計(jì)算設(shè)備102處啟動(dòng)例如WPF應(yīng)用程序208等WPF應(yīng)用程序 時(shí),其圖形系統(tǒng)轉(zhuǎn)換到結(jié)構(gòu)重定向模式,這通過(guò)結(jié)構(gòu)重定向代理422來(lái)實(shí)現(xiàn)的。 結(jié)構(gòu)重定向代理422維護(hù)具有例如視覺(jué)樹(shù)300等一個(gè)或多個(gè)視覺(jué)樹(shù)的單個(gè)即時(shí) 模式可視表面。
在框70S,在遠(yuǎn)程客戶機(jī)端構(gòu)造視覺(jué)樹(shù)。例如,結(jié)構(gòu)重定向代理422形成 與視覺(jué)樹(shù)相關(guān)聯(lián)的節(jié)點(diǎn)數(shù)據(jù)416,并指示一個(gè)或多個(gè)客戶機(jī)計(jì)算設(shè)備106中的 視覺(jué)樹(shù)生成器512來(lái)重新創(chuàng)建視覺(jué)樹(shù)。由視覺(jué)樹(shù)生成器512創(chuàng)建的視覺(jué)樹(shù)對(duì)應(yīng)
12于所傳送的節(jié)點(diǎn)數(shù)據(jù)416。所創(chuàng)建的視覺(jué)樹(shù)將具有表示被遠(yuǎn)程發(fā)送的桌面的子
樹(shù)節(jié)點(diǎn)、以及與用戶在服務(wù)器計(jì)算設(shè)備102上執(zhí)行的WPF應(yīng)用程序208 —樣 多的其它子樹(shù)節(jié)點(diǎn)。
在框710,在遠(yuǎn)程客戶機(jī)端按照所構(gòu)造的視覺(jué)樹(shù)來(lái)呈現(xiàn)可視內(nèi)容。例如, 一旦創(chuàng)建了視覺(jué)樹(shù),則客戶機(jī)計(jì)算設(shè)備106的顯示執(zhí)行模塊510按照每個(gè)視覺(jué) 樹(shù)來(lái)呈現(xiàn)可視內(nèi)容。在一個(gè)實(shí)現(xiàn)中,顯示執(zhí)行模塊510是Microsoft Vista和 類似操作系統(tǒng)的媒體基礎(chǔ)結(jié)構(gòu)層組件中的呈現(xiàn)線程。
此外,還可以將一個(gè)或多個(gè)GDI應(yīng)用程序204與WPF應(yīng)用程序208 —起 從服務(wù)器計(jì)算設(shè)備102處遠(yuǎn)程發(fā)送。在這種情況下,視覺(jué)樹(shù)的根節(jié)點(diǎn)的一個(gè)子 節(jié)點(diǎn)與要由所有GDI應(yīng)用程序204顯示的內(nèi)容相關(guān)聯(lián),且與和用戶或客戶機(jī)所 執(zhí)行的WPF應(yīng)用程序208 —樣多的其它子樹(shù)相關(guān)聯(lián)。與GDI應(yīng)用程序204相 關(guān)聯(lián)的可視內(nèi)容以即時(shí)繪圖模式在GDI應(yīng)用程序204中呈現(xiàn),而WPF應(yīng)用程 序208以如上例所示的方式來(lái)呈現(xiàn)。
結(jié)論
盡管已經(jīng)用結(jié)構(gòu)特征和/或方法專用的語(yǔ)言描述了用于在非合成桌面中遠(yuǎn) 程發(fā)送基于WPF的應(yīng)用程序的各實(shí)施例,但是應(yīng)該理解所附權(quán)利要求的主題 不必限于所述具體特征或方法。相反,特定特征和方法是作為使用代碼重疊的 軟件保護(hù)的示例性實(shí)現(xiàn)而公開(kāi)的。
權(quán)利要求
1.一種服務(wù)器計(jì)算設(shè)備,包括存儲(chǔ)器;操作上耦合到所述存儲(chǔ)器的一個(gè)或多個(gè)處理器;所述存儲(chǔ)器中的重定向代理,所述重定向代理遠(yuǎn)程發(fā)送所述服務(wù)器計(jì)算設(shè)備的一個(gè)或多個(gè)桌面和應(yīng)用程序;以及傳送桌面的結(jié)構(gòu)信息的結(jié)構(gòu)重定向代理。
2. 如權(quán)利要求1所述的服務(wù)器計(jì)算設(shè)備,其特征在于,遠(yuǎn)程發(fā)送WPF和 GDI應(yīng)用程序。
3. 如權(quán)利要求1所述的服務(wù)器計(jì)算設(shè)備,其特征在于,與GDI應(yīng)用程序 相關(guān)聯(lián)的可視內(nèi)容在被發(fā)送到一個(gè)或多個(gè)客戶機(jī)計(jì)算設(shè)備之前作為光柵化數(shù) 據(jù)被存儲(chǔ)在所述服務(wù)器計(jì)算設(shè)備中。
4. 如權(quán)利要求1所述的服務(wù)器計(jì)算設(shè)備,其特征在于,還包括創(chuàng)建對(duì)應(yīng) 于所述應(yīng)用程序的視覺(jué)樹(shù)的視覺(jué)樹(shù)生成器。
5. 如權(quán)利要求4所述的服務(wù)器計(jì)算設(shè)備,其特征在于,所述視覺(jué)樹(shù)包括 作為桌面的表示的子樹(shù)以及被遠(yuǎn)程發(fā)送到一個(gè)或多個(gè)客戶機(jī)計(jì)算設(shè)備的WPF 應(yīng)用程序的相應(yīng)子樹(shù)。
6. 如權(quán)利要求1所述的服務(wù)器計(jì)算設(shè)備,其特征在于,還包括向所述結(jié) 構(gòu)重定向代理提供結(jié)構(gòu)信息來(lái)生成結(jié)構(gòu)信息節(jié)點(diǎn)數(shù)據(jù)的窗口管理器代理。
7. 如權(quán)利要求6所述的服務(wù)器計(jì)算設(shè)備,其特征在于,所述結(jié)構(gòu)重定向 管理器代理維護(hù)用于整個(gè)桌面的視覺(jué)樹(shù)并指示遠(yuǎn)程顯示客戶機(jī)創(chuàng)建視覺(jué)樹(shù)。
8. —種客戶機(jī)計(jì)算設(shè)備,包括存儲(chǔ)器;操作上耦合到所述存儲(chǔ)器的一個(gè)或多個(gè)處理器;以及所述存儲(chǔ)器中的視覺(jué)樹(shù)生成器,其中所述視覺(jué)樹(shù)生成器創(chuàng)建視覺(jué)樹(shù),所述 視覺(jué)樹(shù)包括表示桌面的子樹(shù)以及通過(guò)所述桌面執(zhí)行的一個(gè)或多個(gè)遠(yuǎn)程應(yīng)用程 序的相應(yīng)子節(jié)點(diǎn)。
9. 如權(quán)利要求8所述的客戶機(jī)計(jì)算設(shè)備,其特征在于,視覺(jué)樹(shù)作為數(shù)據(jù) 單獨(dú)地存儲(chǔ)在所述客戶機(jī)計(jì)算設(shè)備中。
10. 如權(quán)利要求8所述的客戶機(jī)計(jì)算設(shè)備,其特征在于,所述客戶機(jī)計(jì)算設(shè)備接收WPF和GDI應(yīng)用程序以供呈現(xiàn)。
11. 如權(quán)利要求8所述的客戶機(jī)計(jì)算設(shè)備,其特征在于,還包括用于按照 所述視覺(jué)樹(shù)來(lái)呈現(xiàn)可視內(nèi)容的顯示執(zhí)行模塊。
12. 如權(quán)利要求11所述的客戶機(jī)計(jì)算設(shè)備,其特征在于,所述顯示執(zhí)行 模塊是媒體基礎(chǔ)結(jié)構(gòu)層的可操作組件。
13. —種方法,包括將一個(gè)或多個(gè)要顯示的可視組件相聯(lián)系; 創(chuàng)建具有被表示為視覺(jué)樹(shù)的節(jié)點(diǎn)的可視組件的視覺(jué)樹(shù);收集與所述視覺(jué)樹(shù)相關(guān)聯(lián)的結(jié)構(gòu)信息并將所述結(jié)構(gòu)信息傳送到管理重定向?qū)樱灰约盎谒鼋Y(jié)構(gòu)信息在遠(yuǎn)程客戶機(jī)處構(gòu)造視覺(jué)樹(shù)。
14. 如權(quán)利要求13所述的方法,其特征在于,所述聯(lián)系包括以下各項(xiàng)的 -個(gè)或多個(gè)要顯示的窗口的Z次序、相對(duì)放置、以及透明度。
15. 如權(quán)利要求13所述的方法,其特征在于,所述創(chuàng)建視覺(jué)樹(shù)是在沒(méi)有 將視覺(jué)樹(shù)關(guān)聯(lián)到被遠(yuǎn)程發(fā)送的應(yīng)用程序的情況下執(zhí)行的。
16. 如權(quán)利要求13所述的方法,其特征在于,所述收集涉及專門地維護(hù) 所述視覺(jué)樹(shù)的處理。
17. 如權(quán)利要求13所述的方法,其特征在于,所述視覺(jué)樹(shù)對(duì)應(yīng)于所傳送 的節(jié)點(diǎn)數(shù)據(jù)。
18. 如權(quán)利要求13所述的方法,其特征在于,所述GDI應(yīng)用程序和WPF 應(yīng)用程序由可視組件來(lái)表示。
19. 如權(quán)利要求13所述的方法,其特征在于,還包括在啟動(dòng)WPF應(yīng)用程 序時(shí)維護(hù)單個(gè)即時(shí)模式可視表面。
20. 如權(quán)利要求13所述的方法,其特征在于,還包括根據(jù)所述視覺(jué)樹(shù)在 遠(yuǎn)程客戶機(jī)設(shè)備處呈現(xiàn)可視內(nèi)容。
全文摘要
描述了用于遠(yuǎn)程發(fā)送諸如基于Windows呈現(xiàn)基礎(chǔ)(WPF)的應(yīng)用程序等應(yīng)用程序的系統(tǒng)和方法。該系統(tǒng)和方法基于遠(yuǎn)程發(fā)送與結(jié)構(gòu)表示相關(guān)聯(lián)的信息。在不在客戶機(jī)或遠(yuǎn)程端呈現(xiàn)內(nèi)容的情況下,結(jié)構(gòu)表示對(duì)應(yīng)于要在遠(yuǎn)程端或客戶機(jī)端顯示的桌面的可視內(nèi)容或元素。與結(jié)構(gòu)表示或結(jié)構(gòu)信息相關(guān)聯(lián)的信息包括指定在顯示時(shí)可視內(nèi)容在桌面上的放置的數(shù)據(jù)。該信息被用于在客戶機(jī)端重新創(chuàng)建結(jié)構(gòu)表示并按照該結(jié)構(gòu)表示來(lái)顯示可視內(nèi)容。
文檔編號(hào)G06F3/048GK101652742SQ200880010279
公開(kāi)日2010年2月17日 申請(qǐng)日期2008年2月28日 優(yōu)先權(quán)日2007年3月30日
發(fā)明者I·布魯吉洛, L·布蘭克, N·阿布多 申請(qǐng)人:微軟公司