專利名稱:應(yīng)用程序改變的狀態(tài)分離的制作方法
應(yīng)用程序改變的狀態(tài)分離
背景技術(shù):
應(yīng)用程序可用許多不同的方式來修改。在某些情況下,應(yīng)用程序可通過更新注冊 表、修改配置文件、更新動態(tài)鏈接庫、或其他機制來修改。對應(yīng)用程序的每一改變可影響操 作系統(tǒng)的各部分,這可進而影響在操作系統(tǒng)環(huán)境中執(zhí)行的其他應(yīng)用程序。
發(fā)明內(nèi)容
應(yīng)用程序狀態(tài)可使用策略來存儲和檢索,這些策略定義了在其中使用該應(yīng)用程序 的各種上下文。應(yīng)用程序狀態(tài)可定義該應(yīng)用程序的配置或使用,包括到其他應(yīng)用程序的連 接和與其他應(yīng)用程序的交互。被虛擬化的應(yīng)用程序可具有在使用上下文中所定義的狀態(tài), 且可基于使用上下文來存儲和回想的多個狀態(tài)或配置。策略可定義該上下文以及要保存什 么參數(shù),并且可在以虛擬化方式來操作應(yīng)用程序時被應(yīng)用。提供本發(fā)明內(nèi)容是為了以簡化的形式介紹將在以下具體實施方式
中進一步描述 的一些概念。本發(fā)明內(nèi)容并不旨在標識出所要求保護的主題的關(guān)鍵特征或必要特征,也不 旨在用于限定所要求保護的主題的范圍。
在附圖中圖1是示出用于基于應(yīng)用程序的上下文來存儲不同的配置的系統(tǒng)的實施例的示 圖。圖2是示出用于與不同的上下文配置一起操作的方法的實施例的流程圖。
具體實施例方式應(yīng)用程序可在不同的狀態(tài)或配置中操作。一個這樣的機制是通過應(yīng)用程序虛擬 化。當(dāng)針對特定上下文來配置應(yīng)用程序時,配置信息可被保存并被回想以供稍后使用。應(yīng) 用程序可被配置成在許多不同的狀態(tài)中操作,并且一組策略管理該配置。應(yīng)用程序所執(zhí)行的狀態(tài)可包括操作系統(tǒng)配置、各種其他應(yīng)用程序的存在和操作、 通過網(wǎng)絡(luò)或其他連接所訪問的服務(wù)的配置、以及許多其他因素。對于不同的狀態(tài),應(yīng)用程序 的配置和操作可以是不同的。例如,某些應(yīng)用程序可與其他應(yīng)用程序具有共生關(guān)系。應(yīng)用程序的行為或性能其 自己可與具有另一集成應(yīng)用程序的應(yīng)用程序的行為或性能不同。在這一示例中,可為在單 獨操作狀態(tài)中的應(yīng)用程序定義配置,并且當(dāng)?shù)诙采鷳?yīng)用程序存在且操作時可為該應(yīng)用程 序定義單獨的配置。在典型的實施例中,應(yīng)用程序可在虛擬環(huán)境中操作。該虛擬環(huán)境可以能夠基于特 定上下文接受不同組的配置設(shè)置。在某些情況下,虛擬環(huán)境可以是虛擬機環(huán)境。在其他情 況下,虛擬環(huán)境可以是虛擬應(yīng)用程序環(huán)境。出于本說明書和權(quán)利要求書的目的,應(yīng)用程序配置可以指設(shè)置或配置應(yīng)用程序的方式。應(yīng)用程序配置可包括可被改變或設(shè)置的任何元素,包括影響該應(yīng)用程序的性能、功 能、外觀或其他可操作的特征的那些元素。出于本說明書和權(quán)利要求書的目的,應(yīng)用程序狀態(tài)可以指在其中執(zhí)行應(yīng)用程序的 上下文。該狀態(tài)可包操作系統(tǒng)、以及該操作系統(tǒng)的任何設(shè)置或配置、或所安裝或執(zhí)行的任何 應(yīng)用程序。該狀態(tài)可包括可與該應(yīng)用程序交互的任何其他元素的條件和配置,包括硬件組 件、通過網(wǎng)絡(luò)可用的服務(wù)、其他執(zhí)行的應(yīng)用程序、外圍設(shè)備、以及任何其他項目。出于本說明書和權(quán)利要求書的目的,應(yīng)用程序上下文可以是應(yīng)用程序狀態(tài)的類 別。盡管該狀態(tài)可包括可影響應(yīng)用程序的任何變量,但上下文可以是可用于分類并且存儲 配置的寬泛的類別。例如,可為會話、虛擬應(yīng)用程序環(huán)境、虛擬機環(huán)境、用戶專用上下文、機 器專用上下文、用戶組或機器組專用上下文、其中兩個或多個交互應(yīng)用程序互操作的上下 文、以及其他上下文定義上下文。本說明書通篇中,在所有附圖的描述中,相同的附圖標記表示相同的元素。在將元素稱為“連接”或“耦合”的時候,這些元素可以直接連接或耦合在一起,或 者也可以存在一個或多個中間元素。相反,在將元素稱為“直接連接”或“直接耦合”的時 候,不存在中間元素。本發(fā)明可被具體化為設(shè)備、系統(tǒng)、方法、和/或計算機程序產(chǎn)品。因此,本發(fā)明的部 分或全部能以硬件和/或軟件(包括固件、常駐軟件、微碼、狀態(tài)機、門陣列等)來具體化。 此外,本發(fā)明可以采用其上包含有供指令執(zhí)行系統(tǒng)使用或結(jié)合其使用的計算機可使用或計 算機可讀程序代碼的計算機可使用或計算機可讀存儲介質(zhì)上的計算機程序產(chǎn)品的形式。在 本文的上下文中,計算機可使用或計算機可讀介質(zhì)可以是可包含、存儲、傳遞、傳播、或傳輸 程序以供指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用或結(jié)合其使用的任何介質(zhì)。計算機可使用或計算機可讀介質(zhì)可以是,例如,但不限于,電、磁、光、電磁、紅外、 或半導(dǎo)體系統(tǒng)、裝置、設(shè)備或傳播介質(zhì)。作為示例而非限制,計算機可讀介質(zhì)可以包括計算 機存儲介質(zhì)和通信介質(zhì)。計算機存儲介質(zhì)包括以用于存儲諸如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其 他數(shù)據(jù)等信息的任何方法或技術(shù)實現(xiàn)的易失性和非易失性、可移動和不可移動介質(zhì)。計算 機存儲介質(zhì)包括,但不限于,RAM、ROM、EEPR0M、閃存或其他存儲器技術(shù)、CD-ROM、數(shù)字多功能 盤(DVD)或其他光盤存儲、磁帶盒、磁帶、磁盤存儲或其他磁性存儲設(shè)備、或能用于存儲所 需信息且可以由指令執(zhí)行系統(tǒng)訪問的任何其他介質(zhì)。注意,計算機可使用或計算機可讀介 質(zhì)可以是其上打印有程序的紙張或另一合適的介質(zhì),因為程序可以經(jīng)由例如對紙張或其他 介質(zhì)的光學(xué)掃描而電子地捕獲,隨后如有必要被編譯、解釋,或以其他合適的方式處理,并 隨后存儲在計算機存儲器中。通信介質(zhì)通常體現(xiàn)諸如載波或其他傳輸機制等已調(diào)制數(shù)據(jù)信號中的計算機可讀 指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù),并包括任何信息傳遞介質(zhì)。術(shù)語“已調(diào)制數(shù)據(jù)信號” 指的是其一個或多個特征以在信號中編碼信息的方式被設(shè)定或更改的信號。作為示例而非 限制,通信介質(zhì)包括有線介質(zhì),如有線網(wǎng)絡(luò)或直接線連接,以及諸如聲學(xué)、射頻(RF)、紅外線 及其他無線介質(zhì)之類的無線介質(zhì)。上述中任一組合也應(yīng)包括在計算機可讀介質(zhì)的范圍之 內(nèi)。當(dāng)本發(fā)明在計算機可執(zhí)行指令的一般上下文中具體化時,該實施例可以包括由一個或多個系統(tǒng)、計算機、或其他設(shè)備執(zhí)行的程序模塊。一般而言,程序模塊包括執(zhí)行特定任 務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等。通常,程序模塊的功能 可以在各個實施例中按需進行組合或分布。圖1是示出具有狀態(tài)分離和管理系統(tǒng)的系統(tǒng)的實施例100的示圖。實施例100是 可基于應(yīng)用程序的上下文或狀態(tài)來存儲和管理該應(yīng)用程序的配置的系統(tǒng)的示例。圖1的示圖示出系統(tǒng)的各個功能組件。在某些情況下,組件可以是硬件組件、軟件 組件、或硬件和軟件的組合。某些組件可以是應(yīng)用層軟件,而其他組件可以是操作系統(tǒng)層組 件。在某些情況下,一個組件到另一個組件的連接可以是緊密連接,其中兩個或更多個組件 在單個硬件平臺上操作。在其他情況下,連接可以通過跨長距離的網(wǎng)絡(luò)連接來進行。各實 施例可以使用不同的硬件、軟件、以及互連體系結(jié)構(gòu)來實現(xiàn)所描述的功能。實施例100是可構(gòu)成應(yīng)用程序的多狀態(tài)執(zhí)行系統(tǒng)的功能元素的示例。應(yīng)用程序 102的不同配置104可基于應(yīng)用程序要在其中執(zhí)行的上下文來在執(zhí)行系統(tǒng)106中執(zhí)行。各種實施例可具有可為應(yīng)用程序執(zhí)行的不同級別的配置。例如,在操作系統(tǒng)環(huán)境 中安裝并且執(zhí)行的應(yīng)用程序可具有定義配置的一組配置文件。不同的一組配置文件可用于 基于與配置文件相關(guān)聯(lián)的上下文來啟動應(yīng)用程序102。在另一示例中,應(yīng)用程序可在虛擬環(huán)境中執(zhí)行,并且除了先前示例的配置文件之 外,注冊表設(shè)置、動態(tài)鏈接庫、以及許多其他配置元素可在上下文之間變化。這樣的虛擬環(huán) 境可以是虛擬機環(huán)境或虛擬應(yīng)用程序環(huán)境。當(dāng)使用虛擬環(huán)境來執(zhí)行應(yīng)用程序時,非常寬泛 且豐富的一組配置元素可以在上下文之間變化。應(yīng)用程序102可以是在計算環(huán)境中執(zhí)行的任何類型的可執(zhí)行程序或程序集、服 務(wù)、或其他操作。在許多情況下,應(yīng)用程序可具有可執(zhí)行元素的集合,諸如可在操作系統(tǒng)環(huán) 境中直接執(zhí)行或在應(yīng)用程序環(huán)境中執(zhí)行的文件,諸如腳本、子例程、庫、或其他組件。許多應(yīng)用程序102可結(jié)合其他應(yīng)用程序或服務(wù)來操作。例如,應(yīng)用程序102可與 通過因特網(wǎng)訪問的web服務(wù)一起操作。在這一示例中,應(yīng)用程序可執(zhí)行某些操作,并且web 服務(wù)可執(zhí)行其他操作以便傳送用戶體驗。在另一示例中,應(yīng)用程序102其自己可操作、或可與“插件”的另一應(yīng)用程序一起 操作、或至少部分地與第一應(yīng)用程序集成。一示例可以是諸如文字處理程序等當(dāng)文檔發(fā)布 應(yīng)用程序操作時可顯示工具欄、菜單項、或到文檔發(fā)布應(yīng)用程序的其他鏈接的應(yīng)用程序。當(dāng) 文檔發(fā)布應(yīng)用程序不可用時,文字處理應(yīng)用程序可具有一個用戶界面,但當(dāng)文檔發(fā)布應(yīng)用 程序可用時,文字處理應(yīng)用程序可具有可用的第二用戶界面和第二組功能。在這一示例中,應(yīng)用程序102可具有為在單獨操作時的狀態(tài)或上下文定義一個配 置104,以及為在與第二應(yīng)用程序一起操作時的第二狀態(tài)或上下文定義的第二配置104。可 結(jié)合一組策略110使用改變監(jiān)視系統(tǒng)108來分開地定義和管理每個配置104。改變監(jiān)視系統(tǒng)108可檢測并存儲對應(yīng)用程序配置104的改變。改變監(jiān)視系統(tǒng)108 可檢測改變、將改變分類、并且確定改變是否適用于在其中應(yīng)用程序102正執(zhí)行或?qū)?zhí)行 的一個或多個上下文??梢栽诓呗?10中定義對如何分類改變和上下文以及如何部署改變 的定義。實施例100示出了分開的應(yīng)用程序102和一組配置104。在某些實施例中,配置 104可被存儲為可在默認配置上實現(xiàn)的一組文件或設(shè)置,這些默認配置可在應(yīng)用程序102中定義。在這些實施例中,配置104可被看作源自默認的“ Δ (delta),,文件或一組改變。在其他實施例中,應(yīng)用程序可被定義為包括配置104中的一個的包。可為每一配 置創(chuàng)建不同的應(yīng)用程序包。這些實施例可用于其中配置中的設(shè)置是普遍的情形下或其中當(dāng) 啟動應(yīng)用程序時使用配置改變的情形下。這些配置改變的一示例可以是定義應(yīng)用程序在初 始啟動期間使用的選項的注冊表設(shè)置。執(zhí)行系統(tǒng)106可以是任何環(huán)境、工作空間、或能夠執(zhí)行應(yīng)用程序102的機制。在某 些實施例中,執(zhí)行系統(tǒng)106可以是包括例如改變監(jiān)視系統(tǒng)108等許多其他應(yīng)用程序和服務(wù) 在其中操作的操作系統(tǒng)環(huán)境。在一些實施例中,執(zhí)行系統(tǒng)106可以是諸如虛擬機或虛擬應(yīng) 用程序環(huán)境等虛擬環(huán)境。在另外一些實施例中,執(zhí)行系統(tǒng)106可以是執(zhí)行應(yīng)用程序102的 分開的硬件平臺。實施例100的體系結(jié)構(gòu)可以是任何類型的計算體系結(jié)構(gòu)。在一些實施例中,在實 施例100中所示出的組件中的許多可在諸如個人計算機或服務(wù)器計算機等單個硬件平臺 上執(zhí)行。在其他實施例中,組件中的一些可在一個硬件平臺上執(zhí)行,而其他組件可在分開的 硬件平臺上執(zhí)行。一些此類實施例中可使用許多不同的硬件平臺來實現(xiàn)實施例100。這些 實施例可被稱為跨機器的配置。在一些跨機器的體系結(jié)構(gòu)中,實施例100的組件中的一些可被實現(xiàn)為虛擬機或在 虛擬應(yīng)用程序環(huán)境中操作。虛擬機可以是硬件平臺的軟件模擬,并且可包含操作系統(tǒng),且可 如同虛擬機是分開且專用的硬件平臺那樣來工作。應(yīng)用程序虛擬化可創(chuàng)建所有共享資源的應(yīng)用程序?qū)S酶北尽C恳粦?yīng)用程序可具有 諸如注冊表項、動態(tài)鏈接庫、以及可與應(yīng)用程序一起被打包的其他對象等潛在可能的共享 資源的單獨的配置。該包可在高速緩存中執(zhí)行,從而創(chuàng)建虛擬應(yīng)用程序。當(dāng)虛擬應(yīng)用程序 被部署,它可使用其自己的這些共享資源的副本。上下文管理器112可確定在其中應(yīng)用程序正在操作或?qū)⒉僮鞯纳舷挛摹I舷挛墓?理器112可監(jiān)視應(yīng)用程序102可能可用的許多不同資源的存在、配置、以及其他參數(shù)。上下 文管理器112可確定可被改變監(jiān)視系統(tǒng)108用來適當(dāng)?shù)卮鎯ε渲玫膽?yīng)用程序的狀態(tài)。上下 文管理器112還可定義可基于狀態(tài)或上下文在各種配置104之間選擇的應(yīng)用程序啟動器 126的狀態(tài)。上下文管理器112可以是持續(xù)地監(jiān)視系統(tǒng)的各種方面的應(yīng)用程序或服務(wù)。在一些 實施例中,這一上下文管理器112可在單個硬件平臺上操作,并且監(jiān)視各種狀況。硬件平臺 可以是可在其上執(zhí)行應(yīng)用程序102的相同的硬件平臺。在其他實施例中,上下文管理器112 可以是距在其上執(zhí)行應(yīng)用程序102的硬件平臺遠程地操作的服務(wù)。上下文管理器112可收集關(guān)于應(yīng)用程序正被操作或?qū)⒈徊僮鞯臓顟B(tài)的各種信息、 元數(shù)據(jù)、和參數(shù)。上下文管理112可收集在策略110中可使用的任何相關(guān)信息來以不同方 式處理配置。不同的實施例可收集不同組的信息和元數(shù)據(jù)來確定當(dāng)前狀態(tài)。上下文元數(shù)據(jù)的示例可包括存在或不存在什么虛擬應(yīng)用程序114、各種虛擬機 116的存在、操作系統(tǒng)118的存在和配置、各種其他應(yīng)用程序120和網(wǎng)絡(luò)服務(wù)122的存在和 配置、以及其他狀態(tài)信息124。其他狀態(tài)信息可以是在其中操作應(yīng)用程序的會話、一組用戶 或設(shè)備中的成員資格、或其他參數(shù)。其他狀態(tài)信息IM可包括關(guān)于會話的信息,該信息可包括關(guān)于會話的元數(shù)據(jù)。例如,狀態(tài)信息1 可包括可以是連接兩個或多個專用設(shè)備或用戶的會話、或連接兩個或多 個通用設(shè)備或用戶的會話的類型的會話。會話元數(shù)據(jù)還可包括各種連接參數(shù),諸如在會話 中使用的協(xié)議、或用于建立會話的地址或端口。在某些實施例中,應(yīng)用程序可創(chuàng)建與其他應(yīng) 用程序或服務(wù)的若干不同類型的會話,并且會話的存在、缺少、或配置可被定義為應(yīng)用程序 的上下文的一部分。其他交互式組件的存在和配置可定義應(yīng)用程序的上下文的一部分。應(yīng)用程序102 可與不同容量中的虛擬應(yīng)用程序114、虛擬機116、應(yīng)用程序120和網(wǎng)絡(luò)服務(wù)122進行交互。 在一些情況下,應(yīng)用程序的性能或操作可受到應(yīng)用程序102外部的各種交互式組件的存 在、缺少或配置的影響。應(yīng)用程序與其交互的組件的存在、缺少、以及在某些情況下的配置可定義應(yīng)用程 序的新狀態(tài)。例如,應(yīng)用程序可添加或移除其他應(yīng)用程序或服務(wù)的用戶界面組件。當(dāng)另一 應(yīng)用程序存在并被配置時,第一應(yīng)用程序可提供鏈接到或使用由其他應(yīng)用程序提供的功能 的特定一組用戶界面組件或功能。當(dāng)其他應(yīng)用程序不存在或被不同地配置時,第一應(yīng)用程 序可呈現(xiàn)替換的用戶界面或功能。應(yīng)用程序與其交互的組件可以是虛擬組件。在某些情況下,應(yīng)用程序可使用執(zhí)行 系統(tǒng)106來被虛擬地執(zhí)行,而另一應(yīng)用程序也可被虛擬地執(zhí)行。由于兩個應(yīng)用程序都是被 虛擬地執(zhí)行的,因此每一應(yīng)用程序可操作而無需在默認配置中彼此交互。然而,當(dāng)兩個應(yīng)用 程序都在操作的時候,每一應(yīng)用程序可被配置成在每一應(yīng)用程序之間傳遞數(shù)據(jù)、控制或其 他信號。在這一情況下,即使在兩個應(yīng)用程序都是虛擬地且分開地來操作時,每一應(yīng)用程序 也可具有定義交互點并使得該交互能發(fā)生的指定配置104。在這一情況下,兩個應(yīng)用程序都 可以與適當(dāng)配置同時或順序地啟動,以使得應(yīng)用程序可進行交互。虛擬組件可呈現(xiàn)與被安裝在同應(yīng)用程序102相同的操作系統(tǒng)內(nèi)并在其內(nèi)操作的 組件不同的配置選項。一般而言,虛擬組件可能對其他組件不可知地操作,并且可以用特定 方式被配置成在包括傳統(tǒng)操作系統(tǒng)環(huán)境或其他虛擬環(huán)境的分開的環(huán)境中與其他應(yīng)用程序 交互。上下文可包括操作系統(tǒng)118的各種參數(shù)或配置。例如,上下文可包括關(guān)于操作系 統(tǒng)的一般信息,諸如操作系統(tǒng)的類型、特定版本、以及關(guān)于本地操作系統(tǒng)的其他參數(shù)。上下 文還可包括對操作系統(tǒng)環(huán)境的添加或改變,諸如注冊表設(shè)置、諸如動態(tài)鏈接庫等文件的存 在和配置、被操作系統(tǒng)用來訪問各種硬件外圍設(shè)備和接口的設(shè)置、以及任何其他類型的參數(shù)。在一些實施例中,配置104可在啟動應(yīng)用程序時應(yīng)用。一些實施例還可使得配置 104能夠在應(yīng)用程序開始執(zhí)行之后被應(yīng)用于應(yīng)用程序102。一些實施例可使得某些配置104能夠在開始執(zhí)行之后被應(yīng)用,而其他配置104可 僅在應(yīng)用程序啟動時被應(yīng)用。在這些實施例中,兩個或多個配置104可被應(yīng)用于應(yīng)用程序 102的單個實例。例如,可以定義公司范圍的配置,該配置設(shè)置應(yīng)用程序的公司范圍的默認 設(shè)置??梢詰?yīng)用包含用戶專用設(shè)置的第二配置,該第二配置可以進一步調(diào)整或可以不進一 步調(diào)整出于用戶的個人偏好的公司范圍的配置。在另一示例中,應(yīng)用程序102可與若干其他應(yīng)用程序或網(wǎng)絡(luò)服務(wù)進行交互。每一 網(wǎng)絡(luò)服務(wù)或應(yīng)用程序可以在分開的配置104中被定義,以使得當(dāng)啟動應(yīng)用程序102時,可應(yīng)用許多不同的配置104,每一配置使得單獨的應(yīng)用程序或服務(wù)能夠被訪問。應(yīng)用程序120還可與通過局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)或包括因特網(wǎng)的任何其他 網(wǎng)絡(luò)可獲得的各種網(wǎng)絡(luò)服務(wù)122進行交互。在許多情況下,web服務(wù)可用于響應(yīng)于查詢和 其他操作或服務(wù)來提供數(shù)據(jù)??啥x配置104用于當(dāng)web服務(wù)或其他網(wǎng)絡(luò)服務(wù)122存在時 執(zhí)行應(yīng)用程序102。這一配置可包括各種參數(shù),諸如端口、協(xié)議、地址、以及其他通信配置信 息、以及通過應(yīng)用程序102可獲得的配置專用功能。配置104可包括可使得網(wǎng)絡(luò)服務(wù)122在某些實例中能夠被訪問的用戶界面組件、 鏈接、或其他可配置項目。例如,文字處理程序可使用作為網(wǎng)絡(luò)服務(wù)122所提供的辭典服務(wù)。當(dāng)辭典服務(wù)可 用時,文字處理程序可在用戶界面中具有到辭典服務(wù)的鏈接,諸如用于訪問該辭典服務(wù)的 菜單選擇。當(dāng)選擇了該辭典服務(wù)時,可將查詢發(fā)送到該網(wǎng)絡(luò)服務(wù)并且接收響應(yīng)。該響應(yīng)可 如同辭典服務(wù)是文字處理程序的一部分那樣在文字處理程序中顯示。在這一情況下,用戶 可能沒有意識到網(wǎng)絡(luò)服務(wù)已被調(diào)用。當(dāng)該辭典服務(wù)不可用時,配置104可替換本地版本,或 可使辭典功能不活動、不可見、或以其他方式不可訪問。上下文管理器112可定義一上下文,在其中應(yīng)用程序當(dāng)前正在操作或打算被操 作。該上下文可結(jié)合策略110來使用,以便創(chuàng)建在應(yīng)用程序啟動器1 啟動應(yīng)用程序102 時可以被回想的特定配置104。上下文管理器112還可檢測可被應(yīng)用程序啟動器1 用來 選擇適當(dāng)?shù)呐渲?04或配置組104的當(dāng)前上下文。應(yīng)用程序在其中執(zhí)行的上下文可由策略110來定義。上下文可以是狀態(tài)的分類或 類型。在許多情況下,狀態(tài)可具有若干上下文。例如,應(yīng)用程序102可與在虛擬機116上操 作的另一應(yīng)用程序進行交互,以及與網(wǎng)絡(luò)服務(wù)122進行交互。虛擬機116的存在可定義虛 擬機上下文,以及網(wǎng)絡(luò)服務(wù)的存在可定義啟用網(wǎng)絡(luò)的上下文。在某些情況下,可應(yīng)用兩個或 多個不同的上下文。當(dāng)多個配置104可被應(yīng)用于應(yīng)用程序102的單個實例時,可為特定實例定義多個 獨立的上下文。在上述示例中,虛擬機上下文和啟用網(wǎng)絡(luò)的上下文可被分開且獨立地定義。當(dāng)單獨的配置104可被應(yīng)用于應(yīng)用程序102的實例時,可定義作為若干不同因素 的聯(lián)合的上下文。在上述示例中,可定義包括虛擬機和啟用網(wǎng)絡(luò)的服務(wù)的單個上下文,并且 可創(chuàng)建單個配置104??蔀樘摂M機(沒有啟用網(wǎng)絡(luò)的服務(wù))創(chuàng)建分開的配置,并且可為啟用 網(wǎng)絡(luò)的服務(wù)(沒有虛擬機)創(chuàng)建分開的配置。策略110可定義上下文的類型以及基于該上下文要如何處理對應(yīng)用程序配置的 改變。例如,可丟棄某些改變而可保存其它類型的改變。當(dāng)使用多個獨立的配置時,策略可 定義將在一個上下文中存儲的一種類型的改變而不是另一種類型的改變。圖2是示出用于與上下文依存配置一起操作的方法的實施例200的流程圖。實 施例200是可由實施例100的組件執(zhí)行的各種操作的示例,這些組件包括應(yīng)用程序啟動器 126、上下文管理器112、改變監(jiān)視系統(tǒng)108、以及執(zhí)行系統(tǒng)106。其他實施例可以使用不同的序列、更多或更少的步驟、以及不同的命名或術(shù)語,來 完成相似功能。在一些實施例中,各種操作或操作集合可以或是以同步方式或是以異步方 式與其他操作并行執(zhí)行。此處所選的步驟是為了以簡化的形式示出一些操作原理來選擇 的。CN 102105861 A
說明書
7/8頁實施例200示出了用于啟動應(yīng)用程序、檢測對該應(yīng)用程序配置的改變、并且將這 些改變存儲在配置存儲中以供稍后重用的方法。在框202中可接收啟動應(yīng)用程序的命令。在許多情況下,可由諸如選擇圖標或在 命令行上輸入命令等用戶輸入發(fā)起命令。在其他情況下,啟動應(yīng)用程序的命令可由包括網(wǎng) 絡(luò)服務(wù)的另一應(yīng)用程序或服務(wù)來發(fā)起。在框204中可確定該應(yīng)用程序的上下文。該上下文可以在策略中定義,并且可為 特定上下文創(chuàng)建該應(yīng)用程序的配置參數(shù)集。該上下文可用任何方式來確定。在某些實施例 中,諸如實施例100中的上下文管理器112等上下文管理器可用于確定當(dāng)前或預(yù)期上下文。該上下文可以是當(dāng)前上下文或預(yù)期上下文。當(dāng)前上下文可通過感測應(yīng)用程序可與 其交互的各種參數(shù)、系統(tǒng)和服務(wù)的當(dāng)前狀態(tài)來確定。預(yù)期上下文可以是當(dāng)應(yīng)用程序正在執(zhí) 行時可存在的上下文??稍谶B續(xù)地或基本上同時地啟動可彼此交互的若干應(yīng)用程序時使用預(yù)期上下文。 所啟動的應(yīng)用程序組中的每一應(yīng)用程序可被配置成與其他應(yīng)用程序一起操作,但這一上下 文可在所有應(yīng)用程序已經(jīng)啟動并且已使彼此進行了連接時存在。如果在框206中沒有為該上下文定義的配置,則在框208中可選擇默認配置。如 果在框206中定義了該上下文的配置,則在框210中可加載該配置。在某些實施例中,可基于該上下文來加載并且應(yīng)用兩個或多個配置。在這些實施 例中,可連續(xù)地應(yīng)用各種配置,且最后所應(yīng)用的配置能夠蓋寫先前配置的設(shè)置。某些實施例可應(yīng)用優(yōu)先級方案來確定當(dāng)多于一個配置設(shè)定了參數(shù)時可應(yīng)用哪個 配置的哪些參數(shù)。在順序優(yōu)先級方案中,所應(yīng)用的最后的配置可占支配地位。然而,在其他 方案中,可應(yīng)用不同的度量或規(guī)則。這些規(guī)則可在一組策略中被定義。一旦定義了配置,在框212中該 應(yīng)用程序可使用這些配置來執(zhí)行。在其中使用多個配置的許多實施例中,可在諸如專用虛擬機等虛擬環(huán)境中或在應(yīng) 用程序虛擬化環(huán)境中執(zhí)行該應(yīng)用程序。與若該應(yīng)用程序同許多其他應(yīng)用程序一起在傳統(tǒng)操 作系統(tǒng)環(huán)境中操作相比,通過對應(yīng)用程序虛擬化,可按更容易的方式來改變或配置許多設(shè) 置。例如,虛擬環(huán)境可啟用可用其他方式與另一應(yīng)用程序共享的要為虛擬應(yīng)用程序所改變 的注冊表設(shè)置或動態(tài)鏈接庫。如果在框214中檢測到改變,則可開始用于基于應(yīng)用程序的上下文來創(chuàng)建或修改 配置設(shè)置的過程。在框216中可對該上下文進行分類。在某些實施例中,特定實例可包括若干不同 的上下文,每一上下文具有可與其他上下文獨立的一個或少量參數(shù)。在其他實施例中,可為 任何情形定義單個上下文,該單個上下文可包含許多不同的參數(shù)或描述符。一組策略可定 義這些上下文。在框218中可按類型對該改變進行分類。該改變類型可以是如在策略所定義的改 變的通用分類,以使得可以適當(dāng)?shù)夭渴鹪摳淖?。在?20中對于每一上下文分類,可在以下框中部署該改變。實施例200是其中 對特定情形可存在兩個或多個上下文的實施例的示例。在其他實施例中,可定義單個上下 文,并且對該上下文可執(zhí)行一次該框220的對于-循環(huán)(for-loop)。在框222中如果策略沒有指定如何處理該類型的改變,則在框224中可應(yīng)用默認
9策略。否則,可應(yīng)用當(dāng)前策略。在框2 中當(dāng)前策略或默認策略可規(guī)定是將被保存還是被忽視。在框2 中,如果 要忽視該改變,則在框230中可不保存該改變。在框226中如果要保存該改變,則在框2 中可針對該上下文更新配置。在框220中對于下一個上下文(若存在一個上下文),則為該下一個上下文繼續(xù)該 過程。當(dāng)在框220中已經(jīng)處理了每一上下文,該過程可返回到框212以便應(yīng)用程序的進一 步執(zhí)行。實施例200是可用于確定上下文并且基于該上下文保存對應(yīng)用程序的改變的過 程的示例。當(dāng)在相同的上下文中重啟應(yīng)用程序時,可回想該配置,并且該應(yīng)用程序可符合該 改變來運作。以上對本發(fā)明的描述是出于說明和描述的目的而提出的。它不旨在窮舉本主題或 將本主題限于所公開的精確形式,且鑒于以上教導(dǎo)其他修改和變型都是可能的。選擇并描 述實施例來最好地解釋本發(fā)明的原理及其實踐應(yīng)用,從而使本領(lǐng)域的其他技術(shù)人員能夠在 各種實施例和各種適于所構(gòu)想的特定用途的修改中最好地利用本發(fā)明的技術(shù)。所附權(quán)利要 求書旨在包括除受現(xiàn)有技術(shù)所限的范圍之外的其他替換實施例。
權(quán)利要求
1.一種方法,包括在第一設(shè)備上執(zhí)行應(yīng)用程序012),所述應(yīng)用程序具有第一配置和第一狀態(tài); 檢測對所述應(yīng)用程序的改變014),所述改變定義第二狀態(tài);確定所述第二狀態(tài)的第一上下文016),所述第一上下文不是用戶上下文或機器上下文;引用為所述第一上下文定義的策略022);以及如所述策略中所定義地來基于所述第一上下文存儲所述改變(228)。
2.如權(quán)利要求1所述的方法,其特征在于,所述上下文包括會話專用上下文。
3.如權(quán)利要求1所述的方法,其特征在于,所述上下文包括跨機器上下文。
4.如權(quán)利要求3所述的方法,其特征在于,所述跨機器上下文包括至少一個虛擬機。
5.如權(quán)利要求1所述的方法,其特征在于,所述應(yīng)用程序包括多個資源,并且所述改變 影響所述資源中的至少一個。
6.如權(quán)利要求5所述的方法,其特征在于,所述多個資源中的一個是第二應(yīng)用程序。
7.如權(quán)利要求5所述的方法,其特征在于,所述應(yīng)用程序在第一硬件平臺上執(zhí)行,所述 資源中的一個在第二硬件平臺上執(zhí)行。
8.如權(quán)利要求5所述方法,其特征在于,所述應(yīng)用程序在第一虛擬上下文中執(zhí)行。
9.如權(quán)利要求8所述的方法,其特征在于,所述多個資源中的至少一個在第二虛擬上 下文中。
10.如權(quán)利要求9所述的方法,其特征在于,所述第一虛擬上下文是應(yīng)用程序虛擬化上 下文。
11.如權(quán)利要求10所述的方法,其特征在于,所述第二虛擬上下文是應(yīng)用程序虛擬化 上下文。
12.如權(quán)利要求10所述的方法,其特征在于,所述第二虛擬上下文是虛擬機上下文。
13.如權(quán)利要求8所述的方法,其特征在于,所述第一虛擬上下文是第一虛擬機上下文。
14.一種系統(tǒng),包括策略(110),所述策略包括基于多個上下文中的至少一個的改變實現(xiàn); 執(zhí)行系統(tǒng)(106),所述執(zhí)行系統(tǒng)被配置成在所述多個上下文中執(zhí)行第一應(yīng)用程序; 改變監(jiān)視系統(tǒng)(108),所述改變監(jiān)視系統(tǒng)被配置成 確定已經(jīng)對所述第一應(yīng)用程序作出了改變; 針對所述改變確定至少一個上下文;存儲所述改變,以使得所述改變在所述至少一個上下文是當(dāng)前上下文時可被實現(xiàn)。
15.如權(quán)利要求14所述的系統(tǒng),其特征在于,所述多個上下文包括由以下各項構(gòu)成的 組中的至少一個會話專用上下文; 會話類型專用上下文; 跨機器上下文;以及 雙重應(yīng)用程序上下文。
全文摘要
應(yīng)用程序狀態(tài)可使用策略來存儲和檢索,這些策略定義了在其中使用該應(yīng)用程序的各種上下文。應(yīng)用程序狀態(tài)可定義該應(yīng)用程序的配置或使用,包括到其他應(yīng)用程序的連接和與其他應(yīng)用程序的交互。虛擬化的應(yīng)用程序可具有在使用上下文中所定義的狀態(tài),且可基于使用上下文來存儲和回想的多個狀態(tài)或配置。策略可定義該上下文以及要保存什么參數(shù),并且可在以虛擬化方式來操作應(yīng)用程序時被應(yīng)用。
文檔編號G06F9/06GK102105861SQ200980130465
公開日2011年6月22日 申請日期2009年7月16日 優(yōu)先權(quán)日2008年7月28日
發(fā)明者J·M·希恩, K·H·雷厄森 申請人:微軟公司