專利名稱:通過隱式應用模型來標識應用資源的制作方法
技術領域:
本發明涉及一種在計算環境中實施的方法,更具體地,涉及通過隱式應用模型來標識應用資源。
背景技術:
計算機和計算系統已經影響了現代生活的幾乎每個方面。計算機通常在工作、休閑、保健、運輸、娛樂、家政管理等中都有涉獵。計算機應用由眾多獨立的組件(例如,文件、注冊表鍵、服務、網站、用戶等)組成,這些組件被遍布放置在系統中,但不帶有各獨立部分之間的清楚的鏈接。各獨立部分之間的斷開使得諸如標識應用資產、備份、修復以及應用移除之類的動作變得復雜。在此要求保護的主題不限于解決任何缺點或僅在諸如上述環境中操作的各個實施例。相反,提供該背景僅用以示出在其中可實踐在此描述的部分實施例的一個示例性技術領域。
發明內容
此處示出的一個實施例涉及一種在計算環境中實施的方法。方法包括用于確定離散應用邊界的動作。方法包括標識應用的一個或多個最初組件。方法還包括標識所述應用的一個或多個最初組件的靜態相關的組件。方法還包括標識所述應用的一個或多個最初組件的動態相關的組件。標識靜態相關組件和標識動態相關組件被迭代執行。方法還包括基于靜態相關組件和動態相關組件來標識應用的離散邊界。提供本發明內容以便以簡化形式介紹將在以下具體實施方式
中進一步描述的一些概念。本發明內容既不旨在標識要求保護的主題的關鍵特征或必要特征,也不旨在用于幫助確定要求保護的主題的范圍。另外的特征和優點將在以下的描述中闡述,并且部分可從該描述中顯而易見,或者可以從此處的教示實踐中習得。本發明的特征和優點可以通過在所附權利要求中特別指出的手段和組合來實現并獲取。本發明的特征將從以下描述和所附權利要求書中變得完全顯而易見,或者可通過如下所述對本發明的實踐而獲知。
為了描述可獲得本主題的上述和其它優點和特征的方式,將通過參考附圖中示出的本主題的具體實施例來呈現以上簡要描述的本主題的更具體描述。應該理解,這些附圖僅描繪了各典型實施例,因此其不應被認為是對范圍的限制,各實施例將通過使用附圖用附加特征和細節來描述并解釋,在附圖中圖1示出確定系統資源的示例;以及圖2示出確定離散應用邊界的方法。
具體實施例方式各實施例可包括構建隱式的應用模型來標識應用的資源的功能。各實施例可包括使用ー組獨立或以各種組合形式使用的試探來標識與任意軟件應用相關聯的資產。各種可用的發現機制可被一起用來構建應用模型。應用模型可被用于各種目的,包括但不限于將工作中的應用安裝移動到另一機器、驗證應用的安裝、創建應用的可重分發包、修復不工作的或損壞的應用安裝等等。為了構建應用模型,各實施例可實現標識過程,過程包括(在一些示例實施例中)可被分解成三個類別的試探,三個類別是靜態發現試探、動態發現試探以及選擇細化試探。靜態方法包括檢查系統上的人工產品以確定屬于給定應用的系統內容的子集。動態方法包括監視應用使用以確定應用訪問哪些資源。細化方法被用于改進應用模型的精確度。這些試探通過移除其它標識技術檢測到的假陽性以及用與被發現的內容有關的額外資源來擴充應用模型以改進應用模型的準確性。
靜態和動態技術關注于向系統提供有趣的內容。這些技術用作為應用模型發現過程的入口點。細化技術進ー步處理由靜態和動態發現標識的信息。盡管細化技術中的許多都采用靜態分析,但由于它們的迭代性質,與靜態發現部分分開地調用它們。現在參考圖1,示出了ー個示例。圖1示出應用102。靜態發現可被用于表征應用102的ー些部分。例如,靜態發現的使用使得包括靜態標識模塊的應用模型生成器104能夠查找應用資源,而無需真正地運行應用102。這包括查看諸如例如安裝器或卸載數據之類的イ目息以標識遍布在系統中的資源。例如,一個實施方式可使用MSI Windows Installer(由華盛頓州雷蒙德市的微軟公司提供)的卸載信息來定位資源。在一些實施例中,靜態發現可額外地或替換地包括處理應用文件內容以及配置設置(諸如基于Windows 的應用的注冊■表內容)來定位資源。例如,文件可在XML或其它配置文檔中被引用。動態發現可被用于表征應用102的ー些部分。為了更好地理解應用102,實施例可將監視層106注入到應用102中,監視層106有效地截取并解釋資源請求。在一些實施例中,這ー監視層可被實現為DLL,其掛鉤系統API的一個子集以截取文件請求和/或配置請求(諸如基于Windows 的應用中的注冊表請求)。監視層106可利用應用102本身的動作來構建對應用102用來操作的資源的準確描述。這一信息可被提供給應用模型生成器104。各實施例可被實現成使用監視層106來監視以下動作中的ー個或多個文件訪問;配置訪問;C0M對象實例化;規范使用;細化等等。對于配置訪問,一些實施例可被實現在Wmdows 環境中,使得配置訪問可包括對注冊表條目的訪問。對于規范使用,一些實施例可使用 WMI (Windows Management Instrumentation, Windows 管理規范)。一些實施例可為應用模型細化使用兩種高級技術即黑名單110以及隱含包含的使用中的ー個或多個。黑名單110提供用于從應用模型中移除實際上不是應用的一部分的內容。通常,這一列表包含屬于共享的基礎系統的一部分的內容,諸如共享的庫或配置條目(諸如在實施基于微軟的系統的應用中的共享的DLL或注冊■表條目),但它可包括任何內容。這ー過濾器的使用可被用在流水化化應用模型的內容中以僅包括真正屬于應用的一部分的信息。存在眾多其中可以實施黑名單110的方式。一些實施例使用主動運行的系統來生成這一列表。另有一些實施例可使用現有應用模型來填充黑名單。例如,現有模型可具有與其相關聯的黑名單用于標識系統資源(與應用資源相對)。這一現有黑名單可被用來填充其它黑名單。作為補充或替代,可使用其它數據源。一些可能的替代包括休眠圖像(例如,虛擬硬盤)、數據庫、基于文本的表示和/或用戶提供的信息。隱含包括技術通過尋找與已經被發現的內容相關的內容來對應用模型進行補充。可被實施的一些示例包括基于應用類型的標識的對服務器或服務元數據的標識;基于文件包括的對服務、網站以及COM對象的標識;基于文件ACL(訪問控制列表)信息的對本地用戶/組的標識;基于本地組成員關系的對本地用戶的標識等等。在一個特定實施例中,網站數據(即構成網站內容的文件)可通過標識來自由華盛頓州雷蒙德市的微軟公司提供的HS服務器(因特網信息服務)的元數據來標識。細化技術可被迭代地應用。例如,對文件的標識可導致對本地組的添加,這又可進一步導致對本地用戶的標識。在這種情況下,通過迭代應用,挑選單個文件將該文件、本地組以及本地用戶添加到應用模型中一些實施例可使用范圍調整機制來執行細化。范圍擴展可擴展特定模型條目的范圍以覆蓋更大的數據集。說明性地,如果一個實施例確定單個文件是應用的足跡的一部分,則該實施例可調整范圍以表明與該文件處于相同目錄中的所有文件都應當是足跡的一部分。例如,如果發現c: \program files\my app\foo. exe是應用的一部分,貝U可以假設像c:\program files\my app\bar.1ni之類的其它內容也都是應用的一部分,因為它們位于相同的目錄中。此外,各實施例可查看所選擇的項目的路徑(諸如文件路徑,或在微軟公司提供的各種技術中的注冊表路徑)并且確定在碰到不應當位于模型中的資源之前其父層實施例可向上經過多遠。例如,如果 c: \programf iles\application\subdir\service. exe 位于應用模型中。各實施例可采用這一路徑并開始向回走以確定c:\program files\application\subdir是否應當在模型內,然后是c:\program f iles\application,再然后是c:\programfiles。可以知道c: \program files不應當在模型內,因為它目前在黑名單中。各實施例可因此調整service, exe的初始條目的范圍以覆蓋c:\program files\application中的全部內容,該目錄是假設應當在模型內的最后一個目錄。在另一范圍調整示例中,如果實施例確定信息服務應用池是應用的足跡的一部分,則各實施例可確定屬于池的一部分的任何信息服務網站也都是應用的一部分。作為替換或補充,一些實施例可使用依賴性走查來執行細化。以下示例示出一個示例實施例。該示例追蹤由于包括單個文件而引起的對應用模型的影響。這一示例開始于靜態分析標識用于包括在應用模型中的文件(在這一示例中,是“default, aspx”)。當文件被添加到模型中時,隱式的包括試探被執行并用于將該文件標識為屬于web應用。知道該文件屬于web應用之后,標識可包括更多關于該應用的附加數據存儲,在這一示例中,該附加數據存儲是信息服務器,在示出的示例中,該信息服務器是華盛頓州雷蒙德市的微軟公司提供的HS。各實施例可通過IIS搜索引用該文件的網站,并在應用模型中包括關于所標識的網站的信息以及與該網站相關聯的其它文件。網站元數據和文件的包括觸發對網站本身以及已被帶入到應用模型中的新文件的隱式包括試探。關注于網站本身,各實施例可確定網站的應用池在特定本地用戶帳戶下執行。各實施例可隨后將該用戶帳戶添加到應用模型。在這ー過程的末尾,各實施例將基于單個文件的發現標識出多個應用資產(例如,文件、Iis元數據以及本地用戶)。各實施例可實施利用用于構建應用模型的集中過程的集中模型構建。這ー過程可接收來自多個源的輸入并將這ー輸入聚集到單個綜合應用模型中。這ー方法在一些實施例中是有用的,因為現代軟件應用包括多個過程,并且依賴于來自該應用的單個方面的輸入可能不能提供與查看應用整體相同的畫面。盡管ー些實施例使用這ー集中過程來構建更全面的模型,但所描述的技術不限于這ー集中過程。以下討論現涉及可以執行的多種方法以及方法動作。雖然用特定次序討論或用以特定次序發生的流程圖示出了各個方法動作,但除非明確規定否則不需要特定次序,或因為ー動作依賴于另一動作在執行該動作之前完成而需要特定次序。現在參考圖2,示出了方法200。可以在計算環境中實施方法200。方法200包括用于確定離散應用邊界的動作。方法200包括標識應用的ー個或多個最初組件(動作202)。例如,如以上所說明的,與應用相關聯的文件(諸如以上示出的“default, aspx”)可被標識。這可以是用于定義應用邊界的最初開始。方法200還包括標識所述應用的ー個或多個最初組件的靜態相關的組件(動作204)。例如,可執行靜態分析來靜態標識什么組件與最初標識的組件相關。上文以及以下示出的示例中討論了各種靜態分析技木。值得注意的是,標識靜態相關組件可通過標識與最初組件直接靜態相關的靜態相關組件或者通過標識與在執行靜態和/或動態分析時發現的組件靜態相關的靜態相關組件來完成。方法200還包括標識所述應用的ー個或多個最初組件的動態相關的組件(動作206)。可執行方法200,其中標識動態相關組件包括在運行時監視被標識的應用組件的資源訪問。圖1示出可被用于標識動態相關組件的監視層106。具體來說,如以上所示的,監視層可發現應用執行的動態調用以幫助標識應用的各部分。值得注意的是,標識動態相關組件可通過標識與最初組件直接動態相關的動態相關組件或者通過標識與在執行靜態和/或動態分析時發現的組件動態相關的動態相關組件來完成。標識靜態相關組件(動作204)和標識動態相關組件(動作206)可迭代執行。例如,可對由步驟204和206發現的與最初組件相關的組件進行分析以發現與相關組件相關的組件。如前面所提到的,迭代地執行靜態和動態標識可包括采用一遍靜態或動態標識的結果并將同樣的試探應用于該結果,從而生成更大的將被包括的組件集合。方法200還包括基于靜態相關組件和動態相關組件來標識應用的離散邊界(動作208)。具體來說,通過方法200的各動作標識的組件(包括最初組件)可被用于離散地標識特定應用的邊界。例如,在一些實施例中,離散邊界定義了應用的功能性實例所需的組件。例如,如果被標識的組件全部都被傳輸到被配置成主控該應用的一不同機器或設備,可使該應用工作而無需添加附加應用組件。方法200還可包括基于離散邊界創建可再分發的包。例如,被標識的組件可被打包成可再分發的包。可再分發的包可被用于部署或修復應用。例如,可再分發的包可被放置在安裝介質上并被用于安裝應用。作為替換,可再分發的包可由系統用于標識缺失的、損壞的、或過時的應用部件,并且隨后使用可再分發的包來替換損壞的或缺失的應用部件或者提供缺失的應用部件。
方法200還可包括基于離散邊界內的組件對應用的正確性或完整性中的至少一個進行驗證。例如,可以知道什么組件應當對于給定應用可用。將基于分析什么組件實際可用與什么組件應當可用進行比較來幫助確定組件是否缺失、損壞、過期等。在一些實施例中,這可通過標識應用的另一已知正工作的安裝的第二離散邊界來實現。可對應用的兩個不同安裝進行比較。此外,第二離散邊界中標識的組件可被用于修復第一離散邊界中的缺失、損壞或過時的組件。可執行方法200,其中標識靜態相關組件包括檢查公知的擴展點。這樣的擴展點可以是操作系統、服務器注冊(諸如IIS服務器注冊)或對象注冊(諸如COM注冊)的擴展點。方法200還可包括將標識的組件放入黑名單以從應用邊界中排除組件。例如,如圖1中所示,黑名單110可被創建以移除靜態和動態分析期間發現的、但已知不是應用本身的一部分的組件。例如,應用所使用的操作系統組件可被標識在黑名單中以防止它們被包括在應用邊界中。可執行方法200,其中標識應用的一個或多個最初組件包括接收用戶輸入。具體來說,用戶可指定已知是應用的一部分的組件。被指定的組件可隨后被用于標識應用的其它組件。作為替換或補充,各實施例可使用諸如MSI數據之類的安裝器日志來標識應用的組件。在又一作為替換或補充的實施例中,可使用白名單來標識應用的組件。這樣的被標識的組件可隨后被用來尋找其它組件。可執行方法200,其中標識離散組件包括接收用戶輸入。例如,用戶可指定屬于應用的應用的特定部分。這一用戶輸入可被簡單地添加到離散邊界,或被用于使用以上概括的各種方式尋找應用的附加部分。此外,各種方法可由包括一個或多個處理器和諸如計算機存儲器等計算機可讀介質的計算機系統來實施。具體而言,計算機存儲器可存儲計算機可執行指令,這些指令在由一個或多個處理器執行時使得諸如各實施例中所述的各個動作等各種功能被執行。本發明的各實施例可以包括或利用包含計算機硬件的專用或通用計算機,這將在下文中更詳細地討論。本發明范圍內的各個實施例還包括用于承載或存儲計算機可執行指令和/或數據結構的物理以及其他計算機可讀介質。這種計算機可讀介質可以是可由通用或專用計算機系統訪問的任何可用介質。存儲計算機可執行指令的計算機可讀介質是物理存儲介質。承載計算機可執行指令的計算機可讀介質是傳輸介質。由此,作為示例而非限制,本發明的各個實施例可包括至少兩種明顯不同的計算機可讀介質物理計算機可讀存儲介質和傳輸計算機可讀介質。物理計算機存儲介質包括RAM、ROM、EEPROM、CD-ROM或其他光盤存儲(如CD、DVD
等)、磁盤存儲或其他磁存儲設備、或可用于存儲計算機可執行指令或數據結構形式的所需程序代碼裝置且可由通用或專用計算機訪問的任何其他介質。“網絡”被定義為允許在計算機系統和/或模塊和/或其他電子設備之間傳送電子數據的一個或多個數據鏈路。當信息通過網絡或另一個通信連接(硬連線、無線、或者硬連線或無線的組合)傳輸或提供給計算機時,該計算機將該連接適當地視為傳輸介質。傳輸介質可包括可用于承載計算機可執行指令或數據結構形式的期望程序代碼裝置且可由通用或專用計算機訪問的網絡和/或數據鏈路。以上介質的組合也被包括在計算機可讀介質的范圍內。
此外,在到達各種計算機系統組件之后,計算機可執行指令或數據結構形式的程序代碼裝置可從傳輸計算機可讀介質自動轉移到物理計算機可讀存儲介質(或者相反)。例如,通過網絡或數據鏈路接收到的計算機可執行指令或數據結構可被緩存在網絡接ロ模塊(例如,“NIC”)內的RAM中,然后最終被傳送到計算機系統RAM和/或計算機系統處的較不易失性的計算機可讀物理存儲介質。因此,計算機可讀物理存儲介質可被包括在同樣(或甚至主要)利用傳輸介質的計算機系統組件中。計算機可執行指令包括,例如使通用計算機、專用計算機、或專用處理設備執行某一功能或某組功能的指令和數據。計算機可執行指令可以是例如ニ進制代碼、諸如匯編語言之類的中間格式指令、或者甚至源代碼。雖然用結構特征和/或方法動作專用的語言描述了本主題,但是應當理解,所附權利要求書中定義的主題不必限于以上所述的特征或動作。相反,所述的特征和動作是作為實現權利要求的示例形式而公開的。本領域的技術人員將理解,本發明可以在具有許多類型的計算機系統配置的網絡計算環境中實踐,這些計算機系統配置包括個人計算機、臺式計算機、膝上型計算機、消息處理器、手持式設備、多處理器系統、基于微處理器的或可編程消費電子設備、網絡PC、小型計算機、大型計算機、移動電話、PDA、尋呼機、路由器、交換機等等。本發明也可在其中通過網絡(通過硬連線數據鏈路、無線數據鏈路,或者通過硬連線和無線數據鏈路的組合)鏈接的本地和遠程計算機系統兩者都執行任務的分布式系統環境中實踐。在分布式系統環境中,程序模塊可位于本地和遠程存儲器存儲設備兩者中。本發明可具體化為其他具體形式而不背離其精神或特征。所述實施例在所有方面都應被認為只是說明性而非限制性的。因此,本發明的范圍由所附權利要求書而非以上描述指示。落入權利要求書的等效方案的含義和范圍內的所有改變都涵蓋在權利要求書的范圍內。
權利要求
1.一種在計算環境中的用于確定離散應用(102)邊界的方法(200),所述方法(200)包括標識應用(102)的一個或多個最初組件(202);標識與所述應用(102)的一個或多個最初組件靜態相關的組件(204);標識與所述應用(102)的一個或多個最初組件動態相關的組件(206);其中,標識靜態相關組件和標識動態相關組件被迭代執行;以及基于所述一個或多個最初組件、所述靜態相關組件以及所述動態相關組件來標識所述應用(102)的離散邊界。
2.如權利要求1所述的方法,其特征在于,所述離散邊界定義應用的功能性實例所需的組件。
3.如權利要求1所述的方法,其特征在于,還包括基于所述離散邊界創建可再分發的包。
4.如權利要求1所述的方法,其特征在于,還包括基于所述離散邊界內的組件對應用的正確性或完整性中的至少一個進行驗證。
5.如權利要求1所述的方法,其特征在于,標識靜態相關組件包括檢查操作系統或操作系統的組件的公知擴展點。
6.如權利要求1所述的方法,其特征在于,標識靜態相關組件包括檢查資源間的公知關系。
7.如權利要求1所述的方法,其特征在于,標識動態相關組件包括在運行時監視被標識的應用組件的資源訪問。
8.如權利要求1所述的方法,其特征在于,還包括將標識的組件放入黑名單以從應用邊界中排除組件。
9.如權利要求1所述的方法,其特征在于,標識應用的一個或多個最初組件包括接收用戶輸入。
10.如權利要求1所述的方法,其特征在于,標識離散組件包括接收用戶輸入。
全文摘要
本發明涉及通過隱式應用模型來標識應用資源。確定離散應用邊界。方法包括標識應用的一個或多個最初的組件。方法還包括標識所述應用的一個或多個最初組件的靜態和/或動態相關的組件。標識靜態相關組件和標識動態相關組件被反復執行。方法還包括基于靜態相關組件和動態相關組件來標識應用的離散邊界。
文檔編號G06F9/44GK103019717SQ20121054459
公開日2013年4月3日 申請日期2012年12月14日 優先權日2011年12月15日
發明者J·東克爾, E·杰瓦特, D·T·伊索卡 申請人:微軟公司