專利名稱:在虛擬環(huán)境中運(yùn)行附加組件的制作方法
在虛擬環(huán)境中運(yùn)行附加組件 背景
在應(yīng)用程序虛擬化中,主操作系統(tǒng)在計算設(shè)備上創(chuàng)建模擬計算機(jī)環(huán)境和虛 擬環(huán)境,以執(zhí)行虛擬應(yīng)用程序而無需在本地安裝虛擬應(yīng)用程序且無需改變主操 作系統(tǒng)。雖然虛擬應(yīng)用程序使用本地硬件資源本地地執(zhí)行,并且可以與主操作 系統(tǒng)交互,但是可以向主操作系統(tǒng)隱藏虛擬環(huán)境的各方面(例如注冊表項、文 件等)。
這是可能的,因為虛擬環(huán)境包含在計算設(shè)備上執(zhí)行虛擬應(yīng)用程序所需的各 組件,諸如注冊表項、文件、環(huán)境變量、用戶界面元素、以及全局對象等。虛 擬環(huán)境中的這些組件對于主操作系統(tǒng)而言是不可見的。諸如外殼擴(kuò)展、插件等 與虛擬應(yīng)用程序相關(guān)聯(lián)的附加組件對于主操作系統(tǒng)而言也是不可見的,因為主 操作系統(tǒng)不能訪問附加組件的注冊表項或文件。結(jié)果,主操作系統(tǒng)一直不知道 虛擬環(huán)境中可用的附加組件,并且不能使用虛擬環(huán)境中可用的附加組件所提供 的功能。
概述
提供本概述以便以介紹與在虛擬環(huán)境中運(yùn)行應(yīng)用程序的附加組件相關(guān)的 概念。這些概念在以下詳細(xì)描述中進(jìn)一步描述。本概述并不旨在標(biāo)識出所要求 保護(hù)的主題的必要特征,也不旨在用于確定所要求保護(hù)的主題的范圍。
在一個實(shí)施例中,包括在操作系統(tǒng)中的組件代理與包括一個或多個虛擬應(yīng) 用程序的虛擬環(huán)境通信。附加組件與該一個或多個虛擬應(yīng)用程序相關(guān)聯(lián),并且 組件服務(wù)器進(jìn)程接收由該組件代理轉(zhuǎn)發(fā)的命令并且執(zhí)行附加組件。
附圖簡述
參考附圖描述了詳細(xì)描述。在附圖中,參考標(biāo)號的最左位標(biāo)識了該參考標(biāo) 號首次出現(xiàn)在其中的附圖。在所有附圖中使用相同的標(biāo)號來指示相同的特征和 組件。
圖1示出了在一個實(shí)施例中用于在虛擬環(huán)境中運(yùn)行附加組件的示例性系統(tǒng)。
圖2示出了在另一實(shí)施例中用于在虛擬環(huán)境中運(yùn)行附加組件的示例性系統(tǒng)。
圖3示出了用于在虛擬環(huán)境中運(yùn)行附加組件的示例性過程流程圖。
圖4示出了示例性的基于計算的設(shè)備。
詳細(xì)描述
以下發(fā)明描述了用于在虛擬環(huán)境中運(yùn)行附加組件的系統(tǒng)和方法。附加組件 可以通過在主操作系統(tǒng)(即操作系統(tǒng))和在虛擬環(huán)境中運(yùn)行的服務(wù)器進(jìn)程之間 建立通信鏈路來在虛擬環(huán)境中執(zhí)行。操作系統(tǒng)包括與在服務(wù)器進(jìn)程中執(zhí)行的附 加組件進(jìn)行通信的組件代理。所描述的系統(tǒng)和方法還允許通過網(wǎng)絡(luò)按需訪問和 使用虛擬化的附加組件。
雖然所描述的用于在虛擬環(huán)境中運(yùn)行附加組件的系統(tǒng)和方法的各方面可 以在任何數(shù)量的不同計算系統(tǒng)、環(huán)境、和/或配置中實(shí)現(xiàn),但是在以下示例性系 統(tǒng)體系結(jié)構(gòu)的上下文中描述各實(shí)施例。
圖1示出了用于在虛擬環(huán)境中運(yùn)行附加組件的示例性系統(tǒng)100。系統(tǒng)100 可以是諸如個人計算機(jī)等獨(dú)立計算設(shè)備的一部分或被包括在其中,或者可以作 為若干計算設(shè)備的一部分來包括。附加組件可以是外殼(shell)擴(kuò)展、插件、
或可以向現(xiàn)有應(yīng)用程序提供附加功能的任何其他類似的實(shí)體。為此,系統(tǒng)100 包括計算設(shè)備上的操作系統(tǒng)102和虛擬環(huán)境104。在一個實(shí)現(xiàn)中,系統(tǒng)100可 以在單個計算設(shè)備上實(shí)現(xiàn),以便于在該計算設(shè)備上運(yùn)行的一個或多個虛擬環(huán)境 之間的資源共享。計算設(shè)備可以被實(shí)現(xiàn)為諸如臺式計算設(shè)備、膝上型計算機(jī)、 移動計算設(shè)備等任何已知的計算設(shè)備。
此外,操作系統(tǒng)102包括與虛擬環(huán)境104通信的組件代理106。虛擬環(huán)境 104包括組件服務(wù)器進(jìn)程108和諸如虛擬應(yīng)用程序110等一個或多個虛擬應(yīng)用 程序。組件服務(wù)器進(jìn)程108包括與虛擬應(yīng)用程序相關(guān)聯(lián)的一個或多個附加組件, 諸如與虛擬應(yīng)用程序110相關(guān)聯(lián)的附加組件112。
為了訪問由駐留在虛擬環(huán)境104中的附加組件112所提供的功能,組件代 理106被配置成與組件服務(wù)器進(jìn)程108通信以便執(zhí)行附加組件112。為此,組 件代理106可以使用諸如遠(yuǎn)程過程調(diào)用114等應(yīng)用程序接口 (API)來與組件 服務(wù)器進(jìn)程108通信。
5在示例性操作中,對于虛擬環(huán)境104中可用的每個附加組件112,向操作 系統(tǒng)102注冊組件代理106。注冊可以例如在計算設(shè)備上模擬虛擬環(huán)境104時 執(zhí)行。為了訪問附加組件112,操作系統(tǒng)102調(diào)用對應(yīng)的組件代理106。如果 操作系統(tǒng)102首次調(diào)用組件代理106,則組件代理106在虛擬環(huán)境104中啟動 組件服務(wù)器進(jìn)程108,并且使用遠(yuǎn)程過程調(diào)用114與組件服務(wù)器進(jìn)程108通信。 遠(yuǎn)程進(jìn)程調(diào)用114允許在虛擬環(huán)境(例如虛擬環(huán)境104)中執(zhí)行來自組件代理 106的過程或命令,而無需為該交互提供顯式的代碼細(xì)節(jié)。
一個示例實(shí)施包括其中有多于一個虛擬環(huán)境在系統(tǒng)100中運(yùn)行的情況,組 件代理106檢査在其中啟動組件服務(wù)器進(jìn)程108的虛擬環(huán)境(例如虛擬環(huán)境 104)是否是正確的虛擬環(huán)境。為此,組件代理106確定對應(yīng)的附加組件112 在虛擬環(huán)境104中是否可用。一旦標(biāo)識了正確的虛擬環(huán)境(例如虛擬環(huán)境104), 則組件代理106在所標(biāo)識的虛擬環(huán)境(例如虛擬環(huán)境104)中啟動組件服務(wù)器 進(jìn)程108。在另一示例性實(shí)施例中,組件代理106使用足夠的信息來注冊以便 直接連接到在適當(dāng)?shù)奶摂M環(huán)境中運(yùn)行的服務(wù)器。如果服務(wù)器沒有在正確的虛擬 環(huán)境中運(yùn)行,則組件代理可以檢測到這一點(diǎn)并且啟動服務(wù)器。在又一示例性實(shí) 施例中,組件代理106能夠訪問每個虛擬環(huán)境的清單,以確定在不啟動虛擬環(huán) 境內(nèi)的服務(wù)器并且不與該服務(wù)器通信的情況下支持什么組件。
組件服務(wù)器進(jìn)程108接收由組件代理106轉(zhuǎn)發(fā)的命令并且相應(yīng)地執(zhí)行附加 組件112。該命令可以包括用于在虛擬環(huán)境104中實(shí)現(xiàn)共同界面的指令,例如 更新上下文菜單、共享菜單等。
如果操作系統(tǒng)102先前調(diào)用了組件代理106,并啟動了組件服務(wù)器進(jìn)程 108,則組件服務(wù)器進(jìn)程108直接將所有命令轉(zhuǎn)發(fā)給附加組件112以供進(jìn)一步 的處理。例如,操作系統(tǒng)102可以是來自微軟 公司的>\^11(10 5 操作系統(tǒng),而 附加組件112可以是在虛擬環(huán)境104中可用的^\^11(10 3 操作系統(tǒng)外殼擴(kuò)展。 ^\^1010\¥3 操作系統(tǒng)通過外殼擴(kuò)展代理(例如組件代理106)與虛擬環(huán)境014交 互,以便在服務(wù)器進(jìn)程(例如組件服務(wù)器進(jìn)程108)中創(chuàng)建外殼擴(kuò)展(例如附 加組件112)的對應(yīng)實(shí)例。 一旦創(chuàng)建了外殼擴(kuò)展的實(shí)例,則Windows 操作系統(tǒng) 通過經(jīng)由外殼擴(kuò)展代理(例如組件代理106)將所有命令轉(zhuǎn)發(fā)給服務(wù)器進(jìn)程(例 如組件服務(wù)器進(jìn)程108)、服務(wù)器進(jìn)程進(jìn)而將命令轉(zhuǎn)發(fā)給外殼擴(kuò)展來訪問外殼 擴(kuò)展。
可以理解,當(dāng)有若干虛擬環(huán)境在計算設(shè)備上運(yùn)行時,可以使用類似的方法
6來運(yùn)行附加組件。此外,每個虛擬環(huán)境可以具有在其上運(yùn)行的若干虛擬應(yīng)用程 序以及附加組件。此外,可以有同一應(yīng)用程序和附加組件的多個版本在計算設(shè) 備上的不同虛擬環(huán)境中運(yùn)行。
圖2示出了在另一實(shí)施例中用于在虛擬環(huán)境中運(yùn)行附加組件的示例性系統(tǒng)
200。系統(tǒng)200可以被實(shí)現(xiàn)為諸如個人計算機(jī)等獨(dú)立計算設(shè)備或在包括多個計 算設(shè)備的服務(wù)器-客戶機(jī)體系結(jié)構(gòu)中實(shí)現(xiàn)。附加組件可以是外殼擴(kuò)展、插件、或 可以向現(xiàn)有應(yīng)用程序提供附加功能的任何相似的實(shí)體。為此,系統(tǒng)200包括客 戶機(jī)設(shè)備上的操作系統(tǒng)202、虛擬環(huán)境204、和服務(wù)器組件206。在一示例中, 虛擬環(huán)境204可以由主存在服務(wù)器組件206上的應(yīng)用程序來模擬。
操作系統(tǒng)202包括與虛擬環(huán)境204通信的組件代理208。虛擬環(huán)境204包 括組件服務(wù)器進(jìn)程210、附加組件212、和諸如虛擬應(yīng)用程序214等一個或多 個虛擬化的應(yīng)用程序。
此外,其他附加組件216可以被主存在服務(wù)器組件206上或主存在虛擬環(huán) 境204中。同樣,諸如在應(yīng)用程序安裝和執(zhí)行期間其他附加組件216如何與操 作系統(tǒng)(例如操作系統(tǒng)202)進(jìn)行交互等信息可以被主存在服務(wù)器組件206上 或主存在虛擬環(huán)境204中。服務(wù)器組件206也可以保存注冊表設(shè)置的日志;文 件;以及其他應(yīng)用程序和操作系統(tǒng)相關(guān)變量。
操作系統(tǒng)202通過經(jīng)由遠(yuǎn)程過程調(diào)用218通信來訪問虛擬環(huán)境204中的附 加組件212。為此,操作系統(tǒng)202可以使用各種引擎和技術(shù)來在組件代理208 和虛擬環(huán)境204之間建立通信鏈路。
如參考圖1所解釋的,對于可以在虛擬環(huán)境204中執(zhí)行的每個附加組件 212,在操作系統(tǒng)202中注冊相對應(yīng)的組件代理208。為了使用由附加組件212 所提供的功能,操作系統(tǒng)202調(diào)用相對應(yīng)的組件代理208。如果操作系統(tǒng)202 首次調(diào)用組件代理208,則組件代理208在虛擬環(huán)境204中啟動組件服務(wù)器進(jìn) 程210并且使用遠(yuǎn)程過程調(diào)用218來與該組件服務(wù)器進(jìn)程通信。否則,組件代 理208直接將所有命令轉(zhuǎn)發(fā)給組件服務(wù)器進(jìn)程210以供進(jìn)一步處理。
在存在多個虛擬環(huán)境的情況下,組件代理208檢査組件服務(wù)器進(jìn)程210是 否在正確的虛擬環(huán)境,例如虛擬環(huán)境204中啟動。為此,組件代理208確定虛 擬環(huán)境是否包括相對應(yīng)的附加組件212。組件服務(wù)器進(jìn)程210在虛擬環(huán)境204 中執(zhí)行附加組件212,并且將來自組件代理208的所有命令轉(zhuǎn)發(fā)給附加組件 212。
7此外,如果附加組件212不與由操作系統(tǒng)202所調(diào)用的組件代理相對應(yīng), 則組件代理208可以在服務(wù)器組件206上的其它附加組件216中和/或在系統(tǒng) 200可以連接或聯(lián)網(wǎng)到的其他虛擬環(huán)境和系統(tǒng)中査找相對應(yīng)的附加組件。
可以理解,上述實(shí)現(xiàn)也可以被擴(kuò)展到在其他場景中在虛擬環(huán)境中運(yùn)行附加 組件。例如,在計算機(jī)網(wǎng)絡(luò)上可以存在若干虛擬環(huán)境的場景中,其可以具有若 干虛擬應(yīng)用程序和在其上運(yùn)行的相關(guān)聯(lián)的附加組件??梢杂型粦?yīng)用程序和附 加組件的多個版本在網(wǎng)絡(luò)上的不同服務(wù)器設(shè)備中運(yùn)行。此外,同一虛擬應(yīng)用程 序的具有不同配置的實(shí)例可以在同一計算設(shè)備上運(yùn)行。
在另一示例性場景中,客戶機(jī)設(shè)備可以訪問與在實(shí)現(xiàn)服務(wù)器-客戶機(jī)體系結(jié) 構(gòu)的網(wǎng)絡(luò)上的服務(wù)器或客戶機(jī)設(shè)備中所主存的虛擬應(yīng)用程序相關(guān)聯(lián)的附加組 件。例如,客戶機(jī)設(shè)備的操作系統(tǒng)202可以調(diào)用對應(yīng)于包括在駐留在服務(wù)器組 件206上的其它附加組件216中的附加組件的組件代理,其中服務(wù)器組件206 駐留在分開的計算設(shè)備中。在這種情況下,操作系統(tǒng)202建立與査找服務(wù)器組 件206中的附加組件的虛擬環(huán)境204的通信鏈路。如果該附加組件位于其他附 加組件216中,則客戶機(jī)設(shè)備可以經(jīng)由虛擬環(huán)境204訪問該附加組件216,而 無需將該附加組件下載到客戶機(jī)設(shè)備自身中。
在另一實(shí)現(xiàn)中,運(yùn)行多個虛擬環(huán)境的客戶機(jī)計算設(shè)備還可以訪問來自存在 于該客戶機(jī)計算設(shè)備所連接到的網(wǎng)絡(luò)上的其它虛擬環(huán)境的附加組件,以便于共 享附加組件。
圖3是示出在虛擬環(huán)境中運(yùn)行附加組件的實(shí)現(xiàn)的示例性過程圖300。過程 圖300被示為邏輯流程圖中的表示可以用硬件、軟件、固件或其組合實(shí)現(xiàn)的操 作序列的步驟集合。描述該方法的次序并非旨在被解釋為限制,并且任何數(shù)目 的所描述的方法框可以按任何次序組合以實(shí)現(xiàn)該方法或替換方法。此外,可以 從該方法中刪除各個框而不背離本文中所描述的主題的精神和范圍。
在軟件上下文中,各框可以表示當(dāng)由一個或多個處理器執(zhí)行時完成所述操 作的計算機(jī)指令。出于討論的目的,參考圖1中所示的系統(tǒng)100和圖2中所示 的系統(tǒng)200來描述過程300。
在框302處,操作系統(tǒng)調(diào)用對應(yīng)于附加組件的組件代理以便使用該附加組 件的功能。例如,操作系統(tǒng)102調(diào)用組件代理106。在另一示例中,操作系統(tǒng) 202調(diào)用組件代理208。
在框304處,組件代理使用API來與虛擬環(huán)境相關(guān)聯(lián)。例如,組件代理106可以使用RPC 114來與系統(tǒng)IOO中的虛擬環(huán)境104相關(guān)聯(lián);或者組件代理208 可以使用RPC 218來與虛擬環(huán)境204相關(guān)聯(lián)。
在框306處,組件代理確定相關(guān)聯(lián)的虛擬環(huán)境是否是正確的虛擬環(huán)境。為 此,組件代理檢査虛擬環(huán)境是否包括操作系統(tǒng)所請求的相對應(yīng)的附加組件。如 果確定虛擬環(huán)境是正確的虛擬環(huán)境(即沿著自框306的"是"分支),則過程 流程控制繼續(xù)前進(jìn)到框308。否則(即沿著自框306的"否"分支),過程流 程控制繼續(xù)前進(jìn)到框304以便建立與另一虛擬環(huán)境的關(guān)聯(lián),直到找到正確的虛 擬環(huán)境。例如,如果在虛擬環(huán)境104中未檢測到附加組件112,則組件代理106 在其他虛擬環(huán)境中査找附加組件112。在另一實(shí)現(xiàn)中,在系統(tǒng)200上遵循確定 正確的虛擬環(huán)境的同一過程。
在框308處, 一旦找到正確的虛擬環(huán)境,則組件代理在正確的虛擬環(huán)境中 啟動組件服務(wù)器進(jìn)程。例如,組件代理106在確認(rèn)附加組件112主存在虛擬環(huán) 境104中之后,在虛擬環(huán)境104中啟動組件服務(wù)器進(jìn)程108。在另一實(shí)現(xiàn)中, 在系統(tǒng)200上,組件代理208在虛擬環(huán)境204中啟動組件服務(wù)器進(jìn)程210。
對于某些實(shí)現(xiàn),組件代理將使用足夠的信息來注冊以直接連接到在適當(dāng)?shù)?虛擬環(huán)境中運(yùn)行的服務(wù)器。如果服務(wù)器沒有在正確的虛擬環(huán)境中運(yùn)行,則組件 代理可以檢測到這一點(diǎn)并且啟動該服務(wù)器。在其他實(shí)現(xiàn)中,組件代理能夠訪問 每個虛擬環(huán)境的清單,以確定在不啟動虛擬環(huán)境內(nèi)的服務(wù)器并且不與該服務(wù)器 通信情況下支持什么組件。
在框310處,在操作系統(tǒng)中的組件代理和虛擬環(huán)境中的組件服務(wù)器進(jìn)程之 間建立(即設(shè)立)通信鏈路,這樣使得可以在操作系統(tǒng)和虛擬環(huán)境之間傳遞數(shù) 據(jù)和命令。該通信鏈路可以使用RPC或任何其他公知技術(shù)來建立。例如,操作 系統(tǒng)102可以在激活組件服務(wù)器進(jìn)程210之后,建立通信鏈路以便與虛擬環(huán)境 104交換數(shù)據(jù)和命令。在另一實(shí)現(xiàn)中,可以在系統(tǒng)200上使用相同的方法來建 立通信鏈路。
在框312處,組件服務(wù)器進(jìn)程在虛擬環(huán)境中創(chuàng)建對應(yīng)于組件代理的附加組 件的實(shí)例。此外,可以在一個或多個虛擬環(huán)境上創(chuàng)建附加組件的多于一個的實(shí) 例。例如,組件服務(wù)器進(jìn)程108響應(yīng)于從組件代理106處接收到的通信來在虛 擬環(huán)境104中創(chuàng)建附加組件112的實(shí)例。在另一實(shí)現(xiàn)中,可以使用針對系統(tǒng)100 所描述的同一方法來在系統(tǒng)200中創(chuàng)建附加組件的實(shí)例。
在框314處, 一旦創(chuàng)建了附加組件,則組件代理將來自操作系統(tǒng)的命令轉(zhuǎn)
9發(fā)給組件服務(wù)器進(jìn)程,組件服務(wù)器進(jìn)程進(jìn)而將這些命令轉(zhuǎn)發(fā)給附加組件。由此, 操作系統(tǒng)可以訪問附加組件并且可以由附加組件來擴(kuò)展。例如, 一旦操作系統(tǒng)
102在虛擬環(huán)境104中定位了附加組件112,則操作系統(tǒng)102可以使用由附加 組件112所提供的功能。 示例性計算機(jī)環(huán)境
圖4示出了可用于實(shí)現(xiàn)本文中所描述的技術(shù)或者可以整體或部分地代表本 文中所描述的元素的示例性通用計算機(jī)環(huán)境400。例如,通用計算機(jī)環(huán)境可用 于圖1的系統(tǒng)100和圖2的系統(tǒng)200,并且實(shí)現(xiàn)圖3的過程300中所描述的步 驟。
計算機(jī)環(huán)境400僅是計算環(huán)境的一個示例,而非旨在對計算機(jī)和網(wǎng)絡(luò)體系 結(jié)構(gòu)的使用范圍或功能提出任何限制。計算機(jī)環(huán)境400也不應(yīng)被解釋成對于在 示例計算機(jī)環(huán)境400中所示出的任一組件或其組合有任何依賴或要求。
計算機(jī)環(huán)境400包括計算機(jī)402形式的通用的基于計算的設(shè)備。計算機(jī)402 可以例如是臺式計算機(jī)、手持式計算機(jī)、筆記本或膝上型計算機(jī)、服務(wù)器計算 機(jī)、游戲控制臺等。計算機(jī)402的組件可以包括但不限于一個或多個處理器或 處理單元404、系統(tǒng)存儲器406、和將包括處理器404在內(nèi)的各系統(tǒng)組件耦合 到系統(tǒng)存儲器406的系統(tǒng)總線408。
系統(tǒng)總線408表示任何若干種類型的總線結(jié)構(gòu)中的一個或多個,包括存儲 器總線或存儲器控制器、外圍總線、加速圖形端口、和使用各種總線體系結(jié)構(gòu) 中的任意一種的處理器或局部總線。作為示例,這樣的體系結(jié)構(gòu)可以包括工業(yè) 標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線、微通道體系結(jié)構(gòu)(MSA)總線、增強(qiáng)型ISA (EISA) 總線、視頻電子技術(shù)標(biāo)準(zhǔn)協(xié)會(VESA)局部總線和外圍部件互連(PCI)總線(也 稱為夾層(Mezzanine)總線)。
計算機(jī)402通常包括各種計算機(jī)可讀介質(zhì)。這種介質(zhì)可以是能由計算機(jī)402 訪問的任何可用介質(zhì),而且包含易失性和非易失性介質(zhì)、可移動和不可移動介 質(zhì)。
系統(tǒng)存儲器406包括諸如隨機(jī)存取存儲器(RAM) 410等易失性形式的計 算機(jī)存儲介質(zhì),和/或諸如只讀存儲器(ROM) 412等非易失性存儲器形式的計 算機(jī)存儲介質(zhì)?;据斎?輸出系統(tǒng)(BIOS) 414包含有助于諸如啟動時在計算 機(jī)410中的元件之間傳遞信息的基本例程,它通常被存儲在ROM 412中。RAM 410通常包含處理單元404可以立即訪問和/或目前正在操作的數(shù)據(jù)和/或程序模塊。
計算機(jī)402還可以包括其它可移動/不可移動、易失性/非易失性計算機(jī)存
儲介質(zhì)。作為示例,圖4示出了對不可移動、非易失性磁介質(zhì)(未示出)進(jìn)行 讀寫的硬盤驅(qū)動器416,對可移動、非易失性磁盤420 (例如"軟盤")進(jìn)行 讀寫的磁盤驅(qū)動器418,以及對諸如CD-ROM、 DVD-ROM或其它光學(xué)介質(zhì)等 可移動、非易失性光盤424進(jìn)行讀寫的光盤驅(qū)動器422。硬盤驅(qū)動器416、磁 盤驅(qū)動器418和光盤驅(qū)動器422各自通過一個或多個數(shù)據(jù)介質(zhì)接口 426連接到 系統(tǒng)總線408。另選地,硬盤驅(qū)動器416、磁盤驅(qū)動器418和光盤驅(qū)動器422 可以通過一個或多個接口 (未示出)連接到系統(tǒng)總線408
盤驅(qū)動器及其相關(guān)聯(lián)的計算機(jī)可讀介質(zhì)向計算機(jī)402提供對計算機(jī)可讀指 令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的非易失性存儲。盡管該示例示出了硬盤 416、可移動磁盤420和可移動光盤424,然而可以理解,可儲存可由計算機(jī)訪 問的數(shù)據(jù)的其它類型的計算機(jī)可讀介質(zhì)也可用來實(shí)現(xiàn)過示例性計算系統(tǒng)和環(huán) 境,這些介質(zhì)諸如磁帶盒或其它磁存儲設(shè)備、閃存卡、CD-ROM、數(shù)字多功能 盤(DVD)或其它光存儲、隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)、 電可擦除可編程只讀存儲器(EEPROM)等。
多個程序模塊可儲存在硬盤416、磁盤420、光盤424、ROM 412和/或RAM 410中,作為示例,包括操作系統(tǒng)427、 一個或多個應(yīng)用程序428、其它程序模 塊430以及程序數(shù)據(jù)432。這些操作系統(tǒng)427、 一個或多個應(yīng)用程序428、其它 程序模塊430和程序數(shù)據(jù)432 (或其某一組合)中的每一個可實(shí)現(xiàn)支持分布式 文件系統(tǒng)的所有或部分常駐組件。
用戶可以通過諸如鍵盤434和定點(diǎn)設(shè)備436 (如,"鼠標(biāo)")等輸入設(shè)備 向計算機(jī)402輸入命令和信息。其它輸入設(shè)備438 (未具體示出)可包括話筒、 操縱桿、游戲手柄、圓盤式衛(wèi)星天線、掃描儀等等。這些和其它輸入設(shè)備通過 耦合至系統(tǒng)總線408的輸入/輸出接口 440連接到處理單元404,但也可以通過 其它接口和總線結(jié)構(gòu)連接,如并行端口、游戲端口、或通用串行總線(USB)。
監(jiān)視器442或其它類型的顯示設(shè)備也通過接口 ,如視頻適配器444連接到 系統(tǒng)總線408。除監(jiān)視器442之外,其它輸出外圍設(shè)備可包括諸如揚(yáng)聲器(未 示出)和打印機(jī)446等組件,它們可通過輸入/輸出接口 440連接到計算機(jī)402。
計算機(jī)402可以使用到一個或多個遠(yuǎn)程計算機(jī),如遠(yuǎn)程基于計算的設(shè)備448 的邏輯連接在網(wǎng)絡(luò)化環(huán)境中操作。作為示例,遠(yuǎn)程基于計算的設(shè)備448可以是
11個人計算機(jī)、便攜式計算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)計算機(jī)、對等設(shè)備或其它
常見的網(wǎng)絡(luò)節(jié)點(diǎn)等等。遠(yuǎn)程基于計算的設(shè)備448被示為可包括此處相對于計算 機(jī)402所描述的許多或所有元件和特征的便攜式計算機(jī)。
計算機(jī)402和遠(yuǎn)程計算機(jī)448之間的邏輯連接被描述為局域網(wǎng)(LAN) 440 和通用廣域網(wǎng)(WAN) 452。這類網(wǎng)絡(luò)環(huán)境常見于辦公室、企業(yè)范圍計算機(jī)網(wǎng)絡(luò)、 內(nèi)聯(lián)網(wǎng)以及因特網(wǎng)。
當(dāng)在LAN網(wǎng)絡(luò)環(huán)境中實(shí)現(xiàn)時,計算機(jī)402通過網(wǎng)絡(luò)接口或適配器444連接至 局域網(wǎng)440。當(dāng)在WAN網(wǎng)絡(luò)環(huán)境中使用時,計算機(jī)402通常包括調(diào)制解調(diào)器446 或用于通過廣域網(wǎng)442建立通信的其它裝置。調(diào)制解調(diào)器446可以對計算機(jī)102 是內(nèi)置或外置的,它可通過輸入/輸出接口 440或其它適當(dāng)?shù)臋C(jī)制連接至系統(tǒng)總線 408。可以理解,所示出的網(wǎng)絡(luò)連接是示例性的,可以使用在計算機(jī)402和448建 立通信鏈路的其它手段。
在諸如對計算環(huán)境400示出的網(wǎng)絡(luò)化環(huán)境中,相對于計算機(jī)402描述的程序 模塊或其部分可儲存在遠(yuǎn)程存儲器存儲設(shè)備中。作為示例,遠(yuǎn)程應(yīng)用程序駐留在遠(yuǎn) 程計算機(jī)448的存儲器設(shè)備中。出于說明的目的,應(yīng)用程序和諸如操作系統(tǒng)等其它 可執(zhí)行程序組件在此處被示出為離散的框,但可以認(rèn)識到,這些程序和組件在不同 的時刻駐留在基于計算的設(shè)備402的不同存儲組件中,并由計算機(jī)的(諸)數(shù)據(jù)處 理器來執(zhí)行。
各個模塊和技術(shù)可以在諸如程序模塊等由一個或多個計算機(jī)或其它設(shè)備執(zhí)行
的計算機(jī)可執(zhí)行指令的一般上下文中描述。 一般而言,程序模塊包括執(zhí)行特定任務(wù)
或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等。通常,程序模
塊的功能可以在各實(shí)施例中按需進(jìn)行組合或分布。
這些模塊和技術(shù)的實(shí)現(xiàn)可以被存儲在某種形式的計算機(jī)可讀介質(zhì)中或者通過
某種形式的計算機(jī)可讀介質(zhì)傳輸。計算機(jī)可讀介質(zhì)可以是可由計算機(jī)訪問的任何可 用介質(zhì)。作為示例而非限制,計算機(jī)可讀介質(zhì)可以包括計算機(jī)存儲介質(zhì)和通信介質(zhì)。 計算機(jī)存儲介質(zhì)包括以用于存儲諸如計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊 或其它數(shù)據(jù)等信息的任何方法或技術(shù)來實(shí)現(xiàn)的易失性和非易失性、可移動和不可移 動介質(zhì)。計算機(jī)存儲介質(zhì)包括但不限于,RAM、 ROM、 EEPROM、閃存或其它存 儲器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD)或其它光學(xué)存儲、磁帶盒、磁帶、 磁盤存儲或其它磁存儲設(shè)備,或者可用于存儲所需信息并且可由計算設(shè)備訪問的任 何其它介質(zhì)。另選地,框架的各部分可以用硬件或硬件、軟件和/或固件的組合來實(shí)現(xiàn)。例
如可以設(shè)計或編程一個或多個專用集成電路(ASIC)或可編程邏輯器件(PLD) 來實(shí)現(xiàn)該框架的一個或多個部分。
結(jié)論
盡管用對結(jié)構(gòu)特征和/或方法專用的語言描述了用于在虛擬環(huán)境中運(yùn)行附加組 件的各實(shí)施例,但可以理解,所附權(quán)利要求書的主題不必限于所描述的具體特征或 動作。相反,這些具體特征和動作是作為用于在虛擬環(huán)境中運(yùn)行附加組件的示例性 實(shí)現(xiàn)來公開的。
1權(quán)利要求
1.一種在一個或多個計算設(shè)備上實(shí)現(xiàn)的系統(tǒng)(200),包括操作系統(tǒng)(202);包括在所述操作系統(tǒng)中的組件代理(208);與所述組件代理通信的虛擬環(huán)境(204);所述虛擬環(huán)境中的組件服務(wù)器進(jìn)程(210);所述虛擬環(huán)境中的一個或多個虛擬應(yīng)用程序(214);以及與所述一個或多個虛擬應(yīng)用程序(214)相關(guān)聯(lián)的一個或多個附加組件(212),其中所述組件服務(wù)器進(jìn)程接收由所述組件代理轉(zhuǎn)發(fā)的命令并且執(zhí)行所述附加組件。
2. 如權(quán)利要求l所述的系統(tǒng),其特征在于,針對所述附加組件屮的一個或多 個向所述操作系統(tǒng)注冊所述組件代理。
3. 如權(quán)利要求2所述的系統(tǒng),其特征在于,所述注冊是在所述一個或多個計 算設(shè)備上模擬所述虛擬環(huán)境時執(zhí)行的。
4. 如權(quán)利要求1所述的系統(tǒng),其特征在于,所述操作系統(tǒng)調(diào)用所述組件代理 來訪問所述一個或多個附加組件。
5. 如權(quán)利要求l所述的系統(tǒng),其特征在于,所述組件代理檢査在其中啟動所 述組件服務(wù)器進(jìn)程的正確的虛擬環(huán)境,并且如果所述組件代理是使用足夠的信息來 注冊的,則連接到在適當(dāng)?shù)奶摂M環(huán)境中運(yùn)行的服務(wù)器。
6. 如權(quán)利要求1所述的系統(tǒng),其特征在于,所述組件代理訪問虛擬環(huán)境的清 單以確定在不啟動服務(wù)器的情況下所述組件代理所支持的組件。
7. 如權(quán)利要求1所述的系統(tǒng),其特征在于,所述一個或多個附加組件包括外 殼擴(kuò)展。
8. —種具有計算機(jī)可執(zhí)行組件的計算機(jī)可讀介質(zhì),所述計算機(jī)可執(zhí)行組件包括組件代理(208)與所述組件代理通信的虛擬環(huán)境(204); 包括在所述虛擬環(huán)境中的組件服務(wù)器進(jìn)程(210);以及 所述組件服務(wù)器進(jìn)程中的附加組件(212),其中所述附件向應(yīng)用程序提供功能。
9. 如權(quán)利要求8所述的計算機(jī)可讀介質(zhì),其特征在于,所述虛擬環(huán)境是由服務(wù)器組件上的應(yīng)用程序來模擬的。
10. 如權(quán)利要求8所述的計算機(jī)可讀介質(zhì),其特征在于,還包括含有關(guān)于所 述附加組件與操作系統(tǒng)的交互的信息的服務(wù)器組件。
11. 如權(quán)利要求10所述的計算機(jī)可讀介質(zhì),其特征在于,所述服務(wù)器組件將以下中的一個或多個記入日志注冊表設(shè)置、文件、應(yīng)用程序變量、和操作系統(tǒng)變
12. 如權(quán)利要求8所述的計算機(jī)可讀介質(zhì),其特征在于,還包括駐留在服務(wù) 器組件上的應(yīng)用程序的虛擬應(yīng)用程序。
13. —種在虛擬環(huán)境中運(yùn)行附加組件的方法(300),包括調(diào)用(302)對應(yīng)于附加組件的組件代理,其中所述附加組件提供功能; 與所述虛擬環(huán)境相關(guān)聯(lián)(304);確定(306)所述虛擬環(huán)境是否是正確的虛擬環(huán)境;以及 如果確定所述虛擬環(huán)境是正確的,則啟動(308)組件服務(wù)器進(jìn)程。
14. 如權(quán)利要求13所述的方法,其特征在于,在進(jìn)行所述關(guān)聯(lián)時使用應(yīng)用程 序接口。
15. 如權(quán)利要求13所述的方法,其特征在于,所述確定包括檢査所述虛擬環(huán) 境是否包括所述對應(yīng)的附加組件。
16. 如權(quán)利要求13所述的方法,其特征在于,所述啟動是在確認(rèn)所述附加組 件主存在所述虛擬環(huán)境中之后執(zhí)行的。
17. 如權(quán)利要求13所述的方法,其特征在于,還包括如果所述確定發(fā)現(xiàn)所述 虛擬環(huán)境是不正確的,則査找正確的虛擬環(huán)境,以及如果所述組件代理是使用足夠 的信息注冊的,則連接到在適當(dāng)?shù)奶摂M環(huán)境中的運(yùn)行的服務(wù)器。
18. 如權(quán)利要求13所述的方法,其特征在于,所述組件代理訪問虛擬環(huán)境的 清單以確定在不啟動服務(wù)器的情況下所述組件代理所支持的組件。
19. 如權(quán)利要求13所述的方法,其特征在于,還包括在所述虛擬環(huán)境中創(chuàng)建 對應(yīng)于組件代理的所述附加組件的實(shí)例。
20. 如權(quán)利要求15所述的方法,其特征在于,還包括從所述組件代理將命令 轉(zhuǎn)發(fā)給所述組件服務(wù)器進(jìn)程,進(jìn)而轉(zhuǎn)發(fā)給所述附加組件。
全文摘要
描述了用于在虛擬環(huán)境中運(yùn)行附加組件的系統(tǒng)和方法??梢酝ㄟ^在主操作系統(tǒng)中的組件代理和在虛擬環(huán)境中運(yùn)行的服務(wù)器進(jìn)程之間建立通信鏈路來在該虛擬環(huán)境中執(zhí)行附加組件。該服務(wù)器進(jìn)程基于轉(zhuǎn)發(fā)來自操作系統(tǒng)的命令的組件代理所轉(zhuǎn)發(fā)的命令來執(zhí)行附加組件。
文檔編號G06F15/16GK101689165SQ200880022209
公開日2010年3月31日 申請日期2008年6月16日 優(yōu)先權(quán)日2007年6月27日
發(fā)明者J·M·希恩, N·A·雅格布森 申請人:微軟公司