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