TWI540455B - 滿足應用程式依賴關係 - Google Patents

滿足應用程式依賴關係 Download PDF

Info

Publication number
TWI540455B
TWI540455B TW100142411A TW100142411A TWI540455B TW I540455 B TWI540455 B TW I540455B TW 100142411 A TW100142411 A TW 100142411A TW 100142411 A TW100142411 A TW 100142411A TW I540455 B TWI540455 B TW I540455B
Authority
TW
Taiwan
Prior art keywords
application
dependencies
client device
computer
resource
Prior art date
Application number
TW100142411A
Other languages
English (en)
Other versions
TW201229807A (en
Inventor
巴比馬修克里斯多福
裘華特艾瑞克
瑞利爾森克利斯多夫海利克
安德森安吉拉梅勒
Original Assignee
微軟技術授權有限責任公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 微軟技術授權有限責任公司 filed Critical 微軟技術授權有限責任公司
Publication of TW201229807A publication Critical patent/TW201229807A/zh
Application granted granted Critical
Publication of TWI540455B publication Critical patent/TWI540455B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0806Configuration setting for initial configuration or provisioning, e.g. plug-and-play
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

滿足應用程式依賴關係
本發明係關於滿足應用程式依賴關係。
電腦應用程式(「應用程式」)通常具有一連串的依賴關係,該等依賴關係是成功部署並執行該等應用程式所必需的。該等依賴關係可包括對諸如資料庫、應用程式、硬體元件、網路連接等等資源的存取。當設備在企業的公司網路中進行本地操作時,許多的該等依賴關係是藉由連接到公司網路而存在的。然而,一旦此設備不再連接到公司網路(例如,當此設備離開公司的場地時),此設備將不再連接到公司網路。結果是,藉由設備連接到公司網路而存在的許多應用程式的依賴關係將不再存在。因此,應用程式無法在此設備上部署或執行,直到依賴關係恢復。
一種恢復依賴關係的機制要求與公司網路建立連接。例如,在家工作的公司使用者可能需要經由虛擬專用網路(VPN)連接到公司網路,以重新建立依賴關係。然而,以此方式使用連接會是繁複的,或可能將公司網路暴露於安全威脅中。
此處所呈現的本案正是關於該等和其他考慮事項而提出的。
在此描述了用於滿足虛擬化應用程式的依賴關係的諸個技術。經由在此提供的概念和技術的實施方式,可在應用程式運行時間辨識並恢復應用程式依賴關係。由此,客戶端設備可成功地部署並執行應用程式,而不需要建立設備和公司網路之間的後端連接。如在此所使用的,術語「依賴關係」代表應用程式執行所需要的任何資源。依賴關係可包括但不限於,配置設置、硬體元件、網路連接、存取權限,或任何其他類型的資源。
根據在此所提供的一個態樣,提供了應用程式虛擬化環境,該環境藉由配置客戶端設備使得虛擬化應用程式的所有依賴關係均存在,而能夠執行虛擬化應用程式。應理解,本案的範疇不意欲限於應用程式虛擬化環境中的使用。相反,在此揭示的諸個實施例可被用於滿足在虛擬化或非虛擬化的環境中執行的任何類型的應用程式的依賴性。
根據另一個態樣,當接收到部署虛擬化應用程式的請求時,應用程式虛擬化客戶端元件決定用於部署該虛擬化應用程式的依賴關係必要條件是否存在。若應用程式虛擬化客戶端元件決定依賴關係不存在,則應用程式虛擬化客戶端元件配置客戶端設備使得依賴關係存在。若應用程式虛擬化客戶端元件決定依賴關係存在,則應用程式虛擬化客戶端元件部署該虛擬化應用程式以便執行。
根據另一個態樣,應用程式虛擬化客戶端元件亦被配置為提供虛擬化應用程式和非虛擬化應用程式之間的安全邊界,使得非虛擬化應用程式無法存取特定資源。例如,在一個實施例中,應用程式虛擬化客戶端元件攔截由虛擬化應用程式作出的用於存取資源的應用程式編寫介面(API)呼叫,諸如存取對客戶端設備可供使用的資源的請求。應用程式虛擬化客戶端元件隨後修改所請求的資源的命名空間,使得該資源可在新的位置存取。在一些實施例中,應用程式虛擬化客戶端元件亦可修改與該資源相關聯的存取控制列表(ACL),並將API呼叫傳遞給儲存在新位置上的資源。來自非虛擬化應用程式的對存取資源的請求不能存取在新位置的資源。
根據另一個態樣,藉由執行對應用程式的靜態分析,在運行時間之前辨識應用程式依賴關係。在一個實施例中,虛擬化應用程式被安裝在監控站上,監控站提供了其中虛擬化應用程式的所有依賴關係皆存在的環境。監控站的依賴關係分析引擎監控在虛擬化應用程式的安裝和執行期間對監控站所作出的改變,以辨識依賴關係。在監控虛擬化應用程式之後,依賴關係分析引擎將辨識依賴關係的資料儲存在依賴關係分析資料庫中。依賴關係分析資料庫可在應用程式的運行時間使用,以確保所有要求的依賴關係皆存在。
本發明內容並不意欲辨識所主張標的的關鍵特徵或必要特徵,亦不意欲將本發明內容用來限制所主張標的的範疇。此外,所主張標的不限於解決在本發明的任一部分中提及的任何或所有缺點的實施。
下述詳細描述針對用於滿足應用程式的依賴關係的諸個技術。如以上所簡略論述的,以在此揭示的方式配置的客戶端設備可辨識應用程式依賴關係,並使該等依賴關係在應用程式運行時間可供使用。以此方式,客戶端設備可被配置為執行應用程式而不需要手動動作(諸如,連接到VPN)來滿足依賴關係。
儘管在結合電腦系統上的作業系統和應用程式的執行而執行的程式模組的一般上下文中呈現了此處描述的標的,但是本領域技藝人士將認識到,其他實施例可以結合其他類型的程式模組來執行。一般而言,程式模組包括執行特定任務或實施特定抽象資料類型的常式、程式、元件、資料結構和其它類型的結構。此外,本領域技藝人士將明白,可以利用其他電腦系統配置來實踐此處描述的標的,該等電腦系統配置包括掌上型設備、多處理器系統、基於微處理器的或可程式設計消費者電子產品、小型電腦、大型電腦等等。
在下文的詳細描述中,將參考構成本發明的一部分的附圖,並且在附圖中作為說明圖示各特定實施例或實例。現在參考附圖(在若干附圖中相同的元件符號表示相同的元件),將描述用於滿足應用程式依賴關係的計算系統和方法的各態樣。
圖1是圖示用於此處揭示的各個實施例的一個說明性操作環境100的軟體和網路架構圖。圖1中所示的說明性操作環境100包括:被配置為經由網路106與伺服器104通訊的客戶端設備102。客戶端設備102是被配置為執行作業系統108A和應用程式虛擬化客戶端元件110的計算設備。客戶端設備102可以是標準臺式或膝上型電腦、平板電腦、智慧手機或能執行此處呈現的用於滿足虛擬化應用程式依賴關係的操作的任何其他類型的計算設備。客戶端設備102亦可以是被配置為提供此處揭示的功能的伺服器電腦。
伺服器104是被配置為執行作業系統108B和應用程式虛擬化伺服器元件120的計算系統。應該理解的是伺服器104可以是被配置為執行應用程式虛擬化客戶端元件110的實際伺服器電腦或者可包括被配置為執行由伺服器104所執行的此處描述的功能的另一種類型的電腦系統。
圖1中所示的網路106可包括廣域網路或區域網路。例如,網路106可以是公司區域網路、諸如網際網路之類的廣域網路,或者多個廣域網路和區域網路的組合。應該理解的是,雖然圖1中圖示單個網路106,但可使用許多其他網路。亦應該理解的是,儘管圖1中已經圖示單個客戶端設備102和伺服器104,此處揭示的諸個實施例可使用許多此類設備。
如上所簡要論述的,客戶端設備102被配置為執行應用程式虛擬化客戶端元件110。應用程式虛擬化客戶端元件110是被配置為提供應用程式虛擬化環境的軟體元件。就此而言,應用程式虛擬化客戶端元件110被配置為部署並執行虛擬化應用程式112。
應用程式虛擬化客戶端元件110提供與作業系統108A分開地封裝虛擬化應用程式112之執行的功能。應用程式虛擬化客戶端元件110亦可提供與客戶端設備102的其他應用程式和系統資源分開地封裝虛擬化應用程式112的執行的功能。例如,應用程式虛擬化客戶端元件110可將作業系統108A或客戶端設備102的資源虛擬化。當虛擬化應用程式112嘗試存取實體資源的時候,應用程式虛擬化客戶端組件110將虛擬化資源呈現給應用程式112。以此方式,可以不對由作業系統108A或客戶端設備102所暴露的實際資源產生影響的方式而執行虛擬化應用程式112。
根據其他態樣,應用程式虛擬化客戶端元件110亦提供用於依須求而載入虛擬化應用程式112的部分的功能。特定地,應用程式虛擬化客戶端元件110可與應用程式虛擬化伺服器元件120結合操作,以將虛擬化應用程式112的所需部分從伺服器104串流輸送至客戶端設備102。以此方式,可在客戶端設備102處依須求存取虛擬化應用程式112。此外,因為僅僅虛擬化應用程式112的所需部分可從伺服器104串流輸送至客戶端設備102,則可提供對虛擬化應用程式112的存取而不需要將整個應用程式112從伺服器104串流輸送至客戶端設備102。
有關應用程式虛擬化客戶端元件110所提供的用於封裝虛擬化應用程式112的執行,以及用於將虛擬化應用程式112從伺服器104串流輸送至客戶端設備102的諸個功能的額外細節可在2007年5月29日提出申請的、標題名稱為「Systems and Methods for Delivering Content over a Computer Network(用於經由電腦網路上傳遞內容的系統與方法)」的第7,225,264號的美國專利;在2007年4月3日提出申請的、標題名稱為「Method and System for Serving Software Applications to Client Computers(用於將軟體應用程式提供到客戶端電腦的方法與系統)」的第7,200,632號的美國專利;在2008年11月11日提出申請的、標題名稱為「Operating System Abstraction and Protection Layer(作業系統抽象與保護層)」的第7,451,451號的美國專利;及在2010年9月14日提出申請的、標題名稱為「Serving Software Applications from Servers for Client Computers(將來自伺服器的軟體應用程式提供給客戶端電腦)」的第7,797,372號的美國專利中可找到,上述每一個專利以引用之方式全部併入本文。
如將在此更為詳細地描述的,應用程式虛擬化客戶端元件110亦可被配置為確保虛擬化應用程式112的一或多個依賴關係114在應用程式112的運行時間被滿足。如在此所使用的,術語「依賴關係」代表應用程式112執行所需要的任何資源。依賴關係可包括但不限於:配置設置、硬體元件、網路連接、存取權限、在特定位置的特定檔案的存在、應用程式資源(諸如反病毒軟體的安裝)、硬體元件(諸如監視器或其他設備)、記憶體要求、處理能力,以及其他。
如將在下文中更為詳細地描述的,可在應用程式112的安裝期間、在應用程式112的運行時間之前,或在應用程式112的運行時間中辨識依賴關係114。例如,當接收到執行虛擬化應用程式112的請求時,應用程式虛擬化客戶端元件110決定部署及/或執行該虛擬化應用程式112的依賴關係114之必要條件是否存在。若應用程式虛擬化客戶端元件110決定依賴關係114不存在,則應用程式虛擬化客戶端元件110配置客戶端設備102使得所有依賴關係114皆存在。一旦所有依賴關係114皆存在或被滿足,則虛擬化應用程式112可被部署。如在此所使用的,術語「部署」意謂使應用程式112可用於執行。在下文中參考附圖2-4提供了關於客戶端設備102的配置的額外細節以使得所有依賴關係114皆存在。
應該理解到,客戶端設備102亦可包括可被在作業系統108A上執行的非虛擬化外部應用程式118。如將在下文中更為詳細地描述的,應用程式虛擬化客戶端元件110在一個實施例中提供了用於確保外部應用程式118無法存取由虛擬化應用程式112所使用的資源的功能。例如,應用程式虛擬化客戶端元件110可將存取一資源的請求重定向至不存在該資源的位置。由此,作業系統可對請求作出回應,指示所請求的資源不存在或無法被定位。關於該程序的其他細節將在以下參考圖5-6來提供。
如上所述,伺服器104可包括虛擬化應用程式112、應用程式虛擬化客戶端元件110,以及作業系統108B。此外,伺服器104可包括依賴關係分析引擎122以及依賴關係分析資料庫124,依賴關係分析資料庫124用於儲存辨識依賴關係114的依賴關係資料126。應該理解到,包含依賴關係資料126的依賴關係分析資料庫124亦可被儲存在客戶端設備102上及/或可由客戶端設備102的應用程式虛擬化客戶端元件110存取。根據諸個實施例,伺服器104可操作為監控站,該監控站被配置為安裝並執行虛擬化應用程式112並辨識虛擬化應用程式112的依賴關係114。根據多個實施例,依賴關係分析引擎122可辨識虛擬化應用程式112的依賴關係114,並將辨識依賴關係114的依賴關係資料126儲存在依賴關係分析資料庫124中。亦可提供使用者介面130用於查看並編輯資料庫124的內容。將在下文中參考圖2和圖3提供在此述及之用於辨識依賴關係114的各種程序的額外的細節。
應該理解到,在此述及之諸個實施例僅僅是用於說明性目的,並且不意欲將本發明的範疇限於在此述及之諸個實施例。本領域技藝人士應該理解,在此述及之諸個技術可以與多種類型的應用程式一起使用,並且在此揭示之諸個實施例不被限於滿足虛擬化應用程式112的依賴關係。亦應該理解,在此述及之概念可被用於任何類型的應用程式,包括但不限於,執行在虛擬化和非虛擬化環境中的虛擬化和非虛擬化應用程式。
圖2是圖示根據在此提出的一個實施例的用於辨識當虛擬化應用程式112在一個環境中執行時虛擬化應用程式112的依賴關係的一個程序的示意圖。特定言之,圖2圖示用於辨識依賴關係114的操作的學習模式的諸個態樣。在操作的學習模式中,API呼叫攔截器202攔截由應用程式112作出的用於存取資源的API呼叫。如下文中將要論述的,API呼叫可在應用程式112的運行時間期間或在應用程式112的安裝時作出。
當虛擬化應用程式112被安裝在設備(諸如,客戶端設備102)上時,應用程式112的安裝方可對設備102作出改動。例如,與虛擬化應用程式112有關多種檔案可被儲存,或註冊表檔案可被建立或修改。依賴關係分析引擎122監控應用程式112的安裝以偵測由虛擬化應用程式112的安裝所導致的任何配置改動。依賴關係分析引擎122亦可將在安裝虛擬化應用程式112之前該依賴關係分析引擎122在其上執行的電腦的配置與安裝虛擬化應用程式112之後的配置相比較。依賴關係分析引擎122可隨後使用所偵測到的改動來辨識依賴關係114。辨識依賴關係114的依賴關係資料126隨後被儲存在依賴關係分析資料庫124中。
作為操作的學習模式的一部分,依賴關係分析引擎122可進一步在運行時間期間監控虛擬化應用程式112。當虛擬化應用程式112在執行時,虛擬化應用程式112可作出API呼叫以存取資源。API呼叫攔截器202攔截(hook)由虛擬化應用程式112作出的API呼叫,並將呼叫傳遞至依賴關係分析引擎122,在依賴關係分析引擎122中檢測呼叫以收集與虛擬化應用程式112的額外依賴關係114有關的資訊。API呼叫可包括存取特定資源(諸如,檔案、資料庫,等等)的請求。此外,API呼叫可包括存取特定應用程式的請求。
依賴關係分析引擎122檢測所攔截的API呼叫,以辨識虛擬化應用程式112的運行時間依賴關係114。依賴關係引擎122可將辨識運行時間依賴關係114的資料儲存在依賴關係分析資料庫124中。另外,指示所辨識的依賴關係114是否由作業系統108所提供的資料可被儲存在資料庫124中。在替代實施例中,辨識運行時間依賴關係114的資料可從伺服器104被串流輸送至客戶端設備102。在該等實施例中,辨識依賴關係的資料可被封裝在應用程式套裝軟體中,應用程式套裝軟體可被配置為被串流輸送至客戶端設備102。如下文中將更詳細描述的,在操作的學習模式中所產生的資料在應用程式112的運行時間使用以確保所有的依賴關係114皆可供應用程式112使用。例如,儲存在資料庫124中的依賴關係資料126可被用於決定應用程式的執行是否取決於未由作業系統提供的任何資源。若如此,則可使資源變成可供應用程式使用。
應該理解到,不是所有的資源皆可變成可供應用程式使用。在該等情況中,應用程式可能無法被部署在設備上,直到該等資源變成可供應用程式使用並且應用程式的所有依賴關係皆被適當地滿足。例如,公司可擁有文件,該等文件僅可從公司大樓內存取。當在公司大樓之外的使用者執行與該等文件互動的應用程式時,應用程式虛擬化客戶端元件110可阻止應用程式存取該等文件。在該情況中,依賴關係可以是指示使用者位於公司大樓內的公司IP位址的存在。若使用者不位於公司大樓內,則虛擬化應用程式112可能無法被部署,因為對應於公司IP位址的存在的依賴關係不被滿足。
圖3是圖示在上述的學習模式中的用於辨識虛擬化應用程式112的依賴關係114的在此揭示之一個說明性程序的各個態樣的流程圖。應當理解,此處參考圖3、圖4、圖6所描述的邏輯操作被實施為:(1)一系列電腦實施動作或執行於計算系統上的程式模組,及/或(2)計算系統內的互連機器邏輯電路或電路模組。取決於計算系統的性能及其他要求,可以選擇不同的實施例。因此,此處所描述的邏輯操作被不同地稱為操作、結構設備、動作或模組。該等操作、結構設備、動作和模組可供使用的軟體、韌體、專用數位邏輯,及其任何組合來實施。亦應該明白,可以執行比附圖中圖示並在此處描述的操作更多或更少的操作。該等操作亦可以按與此處所描述的不同的次序來執行。
圖3圖示常式300,圖示了在圖2所示的以及在上文中描述的操作的學習模式中所執行的諸個操作。常式300開始於操作302,其中在監控系統(諸如,伺服器104)上安裝虛擬化應用程式112。伺服器104包括依賴關係分析引擎122,依賴關係分析引擎112提供了上述的用於辨識虛擬化應用程式112的依賴關係114的功能。伺服器104亦可包括虛擬化應用程式112適當安裝和執行的所有依賴關係114必要條件。以此方式,虛擬化應用程式112可以學習模式而在伺服器104上操作。應該理解,除了伺服器104之外的另一電腦可被用作為用於執行在此述及之學習程序的監控站。
根據一個實施例,當伺服器104在學習模式中操作時,依賴關係分析引擎122被配置為監控對伺服器104所作出的改動(該等改動辨識了虛擬化應用程式112的依賴關係114),並將辨識依賴關係114的依賴關係資料126儲存在依賴關係分析資料庫124中。依賴關係114可包括藉由分析應用程式112的安裝和配置來辨識的依賴關係,以及藉由在運行時間攔截由虛擬化應用程式112作出的API呼叫來辨識的依賴關係。
常式300從操作302繼續至操作304,其中依賴關係分析引擎122監控在虛擬化應用程式112的安裝期間所作的改動。依賴關係分析引擎122可藉由將虛擬化應用程式112安裝之後的系統的配置設置與虛擬化應用程式112安裝之前的系統的配置設置相比較來監控改動。此外,依賴關係分析引擎122可監控系統的各種資源以辨識依賴關係114,諸如,對註冊表作出的改動或與虛擬化應用程式112的安裝有關的額外檔案和資料夾的建立。
常式300從操作304繼續至操作306,其中虛擬化應用程式112被執行。在執行期間,依賴關係分析引擎122連續地監控由虛擬化應用程式112作出的存取資源的API呼叫,以及由虛擬化應用程式112的執行所導致的任何配置改動。
常式300從操作306繼續至操作308,其中API呼叫攔截器202攔截由虛擬化應用程式112作出的API呼叫。API呼叫攔截器202隨後可將該等API呼叫提供給依賴關係分析引擎122。常式300從操作308繼續至操作310,其中依賴關係分析引擎122檢測被攔截的API呼叫的參數,以辨識虛擬化應用程式112的依賴關係114。如上述及之,API呼叫可包括存取特定資源(諸如,檔案、應用程式,或諸如揚聲器或顯示器之類的硬體元件)的請求。同樣地,依賴關係分析引擎122能夠藉由檢測被攔截的API呼叫的格式和內容來決定虛擬化應用程式112的運行時間依賴關係。
常式300從操作310繼續至操作312,其中依賴關係分析引擎122將在虛擬化應用程式112的安裝和執行期間所收集的辨識依賴關係114的依賴關係資料126儲存在依賴關係分析資料庫124中。根據一個實施例,依賴關係分析資料庫124可被儲存在伺服器104或可由客戶端設備102或伺服器104經由網路106存取的任何其他位置上。
常式300從操作312繼續至操作314,其中作出虛擬化應用程式112的每個依賴關係114是否在虛擬化應用程式112的安裝或部署期間被添加或被配置的決定。此可例如藉由檢查由作業系統提供的註冊表來完成。或者,此可藉由檢查將API呼叫映射到依賴關係的映射表來完成。該映射表可包括指示每個依賴關係是否由作業系統所提供的資訊。
若依賴關係在應用程式的安裝或部署期間被添加或被配置,則常式300從操作314繼續至操作316。在操作316中,在依賴關係分析資料庫124中儲存資料,該資料指示在虛擬化應用程式112的安裝或部署期間被添加或被配置的依賴關係114將需要在運行時間存在於客戶端設備102處,以成功在客戶端設備102處部署該虛擬化應用程式112。若在操作314中決定依賴關係114在虛擬化應用程式112的安裝或部署期間沒有被添加或配置,則常式300繼續至操作318,在此處常式300結束。類似地,常式300亦從操作316繼續至操作318,在操作318常式結束。
一旦辨識了虛擬化應用程式112的依賴關係114,並且辨識依賴關係114的依賴關係資料126被儲存在依賴關係分析資料庫124中,則虛擬化應用程式112即可被部署在客戶端設備102處。然而,在客戶端設備102處部署虛擬化應用程式112之前,部署虛擬化應用程式112所需的依賴關係114可能需要可由客戶端設備102存取。在一個實施例中,辨識依賴關係114的依賴關係資料126被儲存在客戶端設備102處,並且被應用程式虛擬化客戶端元件110利用,以確保在客戶端設備102上部署虛擬化應用程式112的運行時間,虛擬化應用程式112的依賴關係114存在。以下參考圖4來提供關於此程序的額外細節。
圖4是圖示根據此處提供的一個實施例的用於滿足客戶端設備102上的虛擬化應用程式112的依賴關係的在此揭示的一個說明性程序的各個態樣的流程圖。特定言之,圖4圖示常式400,常式400圖示在應用程式112的運行時間所執行的操作。特定言之,常式400開始在操作402,其中應用程式虛擬化客戶端元件110接收在客戶端設備102上部署虛擬化應用程式112的請求。根據一個實施例,客戶端設備102的使用者可遞交在客戶端設備102上部署虛擬化應用程式112的請求。
常式400從操作402繼續至操作404,其中應用程式虛擬化客戶端元件110藉由查詢依賴關係分析資料庫124來決定虛擬化應用程式112的依賴關係114。應用程式虛擬化客戶端元件110亦可查詢依賴關係分析資料庫124來決定所辨識的依賴關係是否由作業系統108提供。若是,則不需要由應用程式虛擬化客戶端元件110在運行時間恢復該等依賴關係。
常式400從操作404繼續至操作406,其中應用程式虛擬化客戶端元件110決定是否所有依賴關係114皆存在。根據一些實施例,應用程式虛擬化客戶端元件110可藉由將依賴關係分析引擎122在學習模式期間所決定的依賴關係114與客戶端設備102處存在的依賴關係相比較來完成該動作。若應用程式虛擬化客戶端元件110決定所有依賴關係114皆存在,則常式400繼續至操作414,其中應用程式虛擬化客戶端元件110在客戶端設備102上部署虛擬化應用程式112。
然而,若在操作406應用程式虛擬化客戶端元件110決定不是所有依賴關係114皆存在於客戶端設備102,則常式400從操作406繼續至操作408,其中應用程式虛擬化客戶端元件110辨識丟失的依賴關係。丟失的依賴關係可以是不存在的或沒有被適當配置的資源。例如,若依賴關係114中的一個包括在客戶端設備102處開啟防火牆,則應用程式虛擬化客戶端元件110可檢查客戶端設備102以查看防火牆是否被開啟。若防火牆沒有被開啟,則應用程式虛擬化客戶端元件110將防火牆辨識為丟失的依賴關係。
常式400從操作408繼續至操作410,其中應用程式虛擬化客戶端元件110配置客戶端設備102使得丟失的依賴關係被滿足。應用程式虛擬化客戶端元件110可藉由以如下方式配置客戶端設備102來完成此動作:客戶端設備102的配置設置與虛擬化應用程式112在伺服器104上安裝且執行時的伺服器104的配置設置相匹配。使用以上述及之實例,應用程式虛擬化客戶端元件110可藉由改變客戶端設備102的防火牆設置來自動開啟防火牆。在一些實施例中,應用程式虛擬化客戶端元件110亦可使資源可供使用。由此,應用程式虛擬化客戶端元件110可將客戶端設備102配置成滿足部署及/或執行應用程式的依賴關係114必要條件。
常式400從操作410繼續至操作412,其中應用程式虛擬化客戶端元件110決定是否存在任何其它的丟失的依賴關係114。若應用程式虛擬化客戶端元件110決定存在其它的丟失的依賴關係114,則常式400繼續返回操作406,其中常式400辨識另一個丟失的依賴關係。然而,若應用程式虛擬化客戶端元件110決定沒有其它的丟失的依賴關係114,則常式400繼續至操作414,其中應用程式虛擬化客戶端組件110部署虛擬化應用程式112。常式400從操作414繼續至操作416,在操作416常式400結束。應該理解到,應用程式虛擬化客戶端元件110可能無法滿足部署虛擬化應用程式112所需的每個依賴關係。例如,在以上述及之實例中,應用程式虛擬化客戶端元件110可能無法滿足一依賴關係,諸如,公司IP位址的存在,該公司IP位址僅被提供給公司大樓內操作的設備。
圖5是圖示用於提供安全邊界以防止外部應用程式存取可供應用程式112使用的資源的程序的示意圖。根據一些實施例,安裝在客戶端設備102上的非公司應用程式(諸如,外部應用程式118)可嘗試獲得對虛擬化應用程式112所用的資源的存取權。此會引起安全威脅,因此,需要作出努力以防止外部應用程式118與該等資源互動。在一個實施例中,客戶端設備102提供用於將外部應用程式作出的API呼叫重定向以防止外部應用程式118存取該等資源的功能。在一些實施例中,該重定向可藉由修改資源的名稱(在此稱為:「命名空間校正」)來進行。圖5圖示在此提供的一種用於執行該功能的程序。
當虛擬化應用程式112作出存取或修改外部資源的API呼叫時,路由層502攔截該API呼叫並執行兩個功能。第一,路由層502使得原始資源504的名稱被修改,由此建立重新命名的資源506。結果是,在應用程式虛擬化客戶端元件110之外執行的外部應用程式118無法查看資源的所期望的位置。以此方式,將制止好奇的應用程式來嘗試獲得對資源的存取權。然而,所決定的外部應用程式118仍可打開並存取原始資源504。為了防止任何所決定的外部應用程式存取資源,應用程式虛擬化客戶端元件110亦可將原始資源504的存取控制列表(ACL)修改為定製的ACL,使得外部應用程式118無法打開或存取資源504。圖6圖示該程序的其他態樣。
應該理解到,應用程式虛擬化客戶端元件110可具有資源的多個複本,並可將不同的程序重定向以查看該資源的不同版本。例如,客戶端設備102可具有名為「foo」的註冊表值的兩個複本,其中一個複本被設置為0,而另一個複本被設置為1。當一個程序存取該註冊表值時,客戶端設備102透通地將該程序重定向至被設置為0的資源的複本。當另一個程序存取其認為是同一個的註冊表值時,客戶端設備102透通地將該程序重定向至被設置為1的資源的複本。兩個程序皆嘗試存取同一個資源,但客戶端設備102將其重定向至該資源的不同命名的實例,而不讓其發現此情況。以此方式,兩個程序可執行兩個單獨的操作,因為該兩個程序接收到不同的輸入值。結果是,客戶端設備102能夠向授權的應用程式提供正確的輸入值,並向未被授權的應用程式提供不正確的輸入值,此舉可向客戶端設備102提供安全性。
在另一個實例中,當兩個程序皆嘗試存取相同的檔案時,客戶端設備102可將其中一個重定向至該檔案的有效複本,並可通知另一個程序檔案不存在或可替代地將其重定向至不存在檔案的位置並允許作業系統對此作出回應。結果是,可不向未被授權的程序提供對檔案的存取。
圖6是圖示在此所揭示的用於提供安全邊界的一種說明性程序的諸個態樣的流程圖。特定言之,圖6圖示常式600,常式600圖示在一個實施例中所執行的用於以以上參考圖5描述的方式來提供安全邊界的諸個操作。
常式600開始於操作602,其中路由層502攔截由虛擬化應用程式112所作出的存取資源的API呼叫。如上述及之,路由層502可僅僅攔截由虛擬化應用程式112所作出的API呼叫。常式600從操作602繼續至操作604,其中路由層502選擇由虛擬化應用程式112所作出的API呼叫將被重定向至的資源的複本。資源的複本之前就可被作業系統所保存。常式600從操作604繼續至操作606,其中作業系統108A進一步重新配置與該資源相關聯的ACL,使得該資源對在應用程式虛擬化客戶端元件110的外部操作的外部應用程式不可存取。常式600從操作606繼續至操作608,其中被攔截的API呼叫被路由至重命名後的資源506。
常式600從操作608繼續至操作610,其中作業系統108A從外部應用程式118接收請求存取資源的API呼叫。根據諸個實施例,因為外部應用程式118直接與作業系統108A通訊,而不經由應用程式虛擬化客戶端元件110進行,則作業系統108A從外部應用程式118接收API呼叫。然而,應該理解到,外部應用程式可經由應用程式虛擬化客戶端元件110來發送API呼叫。在該等實施例中,應用程式虛擬化客戶端元件110不進行任何重定向,而是將原始API呼叫傳遞給作業系統108A以便作業系統108A來處理。
常式600從操作610繼續至操作612,其中作業系統108A將來自外部應用程式118的API呼叫路由至原始資源504。以此方式,從非企業應用程式(諸如,外部應用程式118)作出的API呼叫可能不能存取資源506。常式600從操作612繼續至操作614,在操作614常式600結束。
圖7是圖示用於能夠實施本文所提出的各種實施例的計算系統的說明性電腦硬體和軟體架構的電腦架構圖。圖7的電腦架構圖示傳統桌上型電腦、膝上型電腦,或伺服器電腦,並可被用來執行此處描述的各種軟體元件。
圖7所示的電腦架構包括中央處理單元702(「CPU」)、包括隨機存取記憶體714(「RAM」)和唯讀記憶體(「ROM」)716的系統記憶體708,以及將記憶體耦合至CPU 702的系統匯流排704。包含諸如在啟動時有助於在電腦700內的元件之間傳輸資訊的基本常式的基本輸入/輸出系統(「BIOS」)被儲存在ROM 716中。電腦700進一步包括用於儲存作業系統718、應用程式和其他程式模組的大容量儲存設備710,其將在以下更為詳細地描述。
大容量儲存設備710經由連接至匯流排704的大容量儲存控制器(未圖示)連接到CPU 702。大容量儲存設備710及其相關聯的電腦可讀取儲存媒體為電腦700提供非揮發性的儲存器。儘管對此處包含的電腦可讀取媒體的描述涉及諸如硬碟或CD-ROM驅動器等大容量儲存設備,但本領域的技藝人士應當理解,電腦可讀取媒體可以是可由電腦700存取的任何可供使用的電腦儲存媒體。
舉例而言(但並非限制),電腦可讀取儲存媒體可包括以用於儲存諸如電腦可讀取指令、資料結構、程式模組或其它資料的資訊的任何方法或技術實施的揮發性和非揮發性、可移除和不可移除媒體。例如,電腦可讀取儲存媒體包括,但並不限於,RAM、ROM、EPROM、EEPROM、快閃記憶體或其他固態記憶體技術、CD-ROM、數位多功能光碟(「DVD」)、HD-DVD、藍光或其他光學儲存器,磁帶盒、磁帶、磁碟儲存器或其他磁性儲存設備,或可以用來儲存所需資訊並可由電腦700存取的任何其他非暫時性媒體。
應理解,此處揭示的電腦可讀取媒體亦包括通訊媒體。通訊媒體通常以諸如載波或其他傳輸機制等已調制資料信號來體現電腦可讀取指令、資料結構、程式模組或其他資料,並包括任何資訊傳遞媒體。術語「已調制資料信號」意謂其一或多個特徵以在信號中編碼資訊的方式來設置或改變的信號。舉例而言(但並非限制),通訊媒體包括諸如有線網路或直接線連接之類的有線媒體,以及諸如聲學、RF、紅外線及其他無線媒體之類的無線媒體。上述中任一組合亦應包括在電腦可讀取媒體的範疇之內。電腦可讀取儲存媒體不包括通訊媒體。
根據各實施例,電腦700可以使用經由諸如網路720之類的網路到遠端電腦的邏輯連接來在聯網環境中操作。電腦700可以經由連接至匯流排704的網路介面單元706來連接到網路720。應當理解,網路介面單元706亦可以被用來連接到其他類型的網路和遠端電腦系統。電腦700亦可包括輸入/輸出控制器712用於接收和處理來自多個其他設備的輸入,該等設備包括鍵盤、滑鼠或者電子觸控筆(未在圖7中圖示)。類似地,輸入/輸出控制器可以提供至顯示螢幕、印表機或其他類型的輸出設備(亦未在圖7中圖示)的輸出。
如前簡述的一般,多個程式模組和資料檔案可以儲存在電腦700的大容量儲存設備710和RAM 714內,包括適於控制聯網的桌上型、膝上型或伺服器電腦的操作的作業系統718。大容量儲存設備710和RAM 714亦可以儲存一或多個程式模組。特定言之,大容量儲存設備710和RAM 714可儲存虛擬化應用程式112、應用程式虛擬化客戶端元件110,及/或上述的其他軟體元件。大容量儲存設備710和RAM 714亦可儲存其他程式模組和資料,諸如依賴關係114。
一般而言,軟體應用程式或模組在載入到CPU 702中並執行時,可將CPU 702和整個電腦700從通用計算系統變換成被定製成執行此處所呈現功能的專用計算系統。CPU 702可以用任何數量的電晶體或其他個別的電路元件(其可以分別地或共同地呈現任何數量的狀態)構建。更特定而言,CPU 702可以回應軟體或模組內包含的可執行的指令,作為一或多個有限狀態機來操作。該等電腦可執行的指令可以藉由指定CPU 702如何在多個狀態之間轉換來變換CPU 702,從而在實體上變換構成CPU 702的電晶體或其他個別的硬體元件。
經由將軟體或模組編碼到大容量儲存設備上,亦可變換大容量儲存設備或相關聯的電腦可讀取儲存媒體的實體結構。在本說明書的不同實施例中,實體結構的特定變換可取決於各種因素。該等因素的實例包括但不限於:用來實施電腦可讀取儲存媒體、電腦可讀取儲存媒體是被表徵為主要儲存器還是次要儲存器等技術。例如,若電腦可讀取的儲存媒體是作為基於半導體的記憶體實施的,則當軟體被編碼到其中時,軟體或模組可以變換半導體記憶體的實體狀態。例如,軟體可以變換構成半導體記憶體的電晶體、電容器或其他個別的電路元件的狀態。
作為另一個實例,電腦可讀取的儲存媒體可以使用磁性或光學技術來實施。在此類實施例中,當軟體被編碼到其中時,軟體或模組可以變換磁性或光學媒體的實體狀態。該等變換可以包括改變給定磁性媒體內的特定位置的磁性。該等變換亦可以包括改變給定光學媒體內的特定位置的實體特徵或特性,以改變該等位置的光學特性。在沒有偏離本說明書的範疇和精神的情況下,實體媒體的其他變換亦是可能的,先前提供的實例只是為了促進此論述。
基於前述內容,應當理解到,在此已經提供了用於確保在運行時間中應用程式依賴關係被滿足的諸個技術。儘管以電腦結構特徵、方法動作,以及電腦可讀取媒體專用的語言描述了本文呈現的標的,但是應該理解,在所附申請專利範圍中所限定的本發明不一定僅限於本文描述的特定特徵、動作、或媒體。相反,該等特定特徵、動作和媒體是作為實施請求項的示例性形式來揭示的。
上述標的僅作為說明提供,並且不應被解釋為限制。可對此處述及之標的作出各種修改和改變,而不必遵循所示和述及之示例性實施例和應用程式,且不背離所附申請專利範圍中述及之本發明的真正精神和範疇。
100...操作環境
102...客戶端設備
104...伺服器
106...網路
108A...作業系統
108B...作業系統
110...虛擬化客戶端元件
112...虛擬化應用程式
114...依賴關係
118...外部應用程式
120...虛擬化伺服器元件
122...依賴關係分析引擎
124...依賴關係分析資料庫
126...依賴關係資料
130...使用者介面
202...攔截器
300...常式
302...操作
304...操作
306...操作
308...操作
310...操作
312...操作
314...操作
316...操作
318...操作
400...常式
402...操作
404...操作
406...操作
408...操作
410...操作
412...操作
414...操作
416...操作
502...路由層
504...原始資源
506...重新命名的資源
600...常式
602...操作
604...操作
606...操作
608...操作
610...操作
612...操作
614...操作
700...電腦
702...中央處理單元(CPU)
706...網路介面單元
710...大容量儲存設備
712...輸入/輸出控制器
714...隨機存取記憶體(RAM)
716...唯讀記憶體(ROM)
718...作業系統
720...網路
圖1是圖示用於此處揭示的各個實施例的一個說明性操作環境的軟體和網路架構圖;
圖2是圖示根據此處提供的一個實施例的用於辨識虛擬化應用程式的依賴關係的一個程序的示意圖;
圖3是圖示根據此處提供的一個實施例的用於在操作的學習模式中辨識虛擬化應用程式的依賴關係的在此所揭示的一個說明性程序的各個態樣的流程圖;
圖4是圖示根據此處提供的一個實施例的用於滿足虛擬化應用程式的依賴關係的在此所揭示的一個說明性程序的各個態樣的流程圖;
圖5是圖示根據此處提供的一個實施例的用於提供安全邊界以防止外部非虛擬化應用程式存取資源的一個程序的示意圖;
圖6是圖示根據此處提供的一個實施例的用於提供單向安全邊界以防止外部應用程式與資源互動的在此所揭示的一個說明性程序的各個態樣的流程圖;
圖7是圖示用於能夠實施本文所提出的各種實施例的計算系統的說明性電腦硬體和軟體架構的電腦架構圖。
100...操作環境
102...客戶端設備
104...伺服器
106...網路
108A...作業系統
108B...作業系統
110...虛擬化客戶端元件
112...虛擬化應用程式
114...依賴關係
118...外部應用程式
120...虛擬化伺服器元件
122...依賴關係分析引擎
124...依賴關係分析資料庫
126...依賴關係資料
130...使用者介面

Claims (28)

  1. 一種電腦實施的方法,包括以下步驟:執行電腦實施的操作,所述電腦實施的操作用於:接收在一客戶端設備處部署一應用程式的一請求,以讓該應用程式能夠在該客戶端設備處執行;決定部署該應用程式的該一或多個依賴關係必要條件中的每一個是否在該客戶端設備處存在;在決定不是部署該應用程式的該一或多個依賴關係必要條件中的每一個皆存在之後,配置該客戶端設備使得該等依賴關係存在,並在該客戶端設備處部署該應用程式;在該客戶端設備處部署該應用程式之後,攔截來自該應用程式的一應用程式編寫介面(API)呼叫,該API呼叫請求存取一資源;選擇該API呼叫將被重定向至該資源的一複本;及將該API呼叫重定向至被儲存在一私人位置處的該資源。
  2. 如請求項1之電腦實施的方法,進一步包括以下步驟:使用與該資源相關聯的一存取控制列表(ACL)來保護該私人位置。
  3. 如請求項1之電腦實施的方法,進一步包括以下步驟:在部署該應用程式之前:將該應用程式安裝在一監控站上; 監控在該應用程式的安裝期間對該監控站作出的改動,以辨識該等依賴關係;及將辨識該等依賴關係的資料儲存在一依賴關係分析資料庫中。
  4. 如請求項3之電腦實施的方法,進一步包括以下步驟:在部署該應用程式之前:在該監控站上執行該應用程式;監控在該應用程式的執行期間對該監控站作出的改動,以辨識該等依賴關係;及將辨識該等依賴關係的資料儲存在該依賴關係分析資料庫中。
  5. 如請求項4之電腦實施的方法,其中監控在該應用程式的執行期間對該監控站作出的改動之步驟包括以下步驟:攔截由該應用程式在執行期間作出的API呼叫;及檢測包含在該等API呼叫中的參數,以辨識該等依賴關係。
  6. 如請求項5之電腦實施的方法,進一步包括以下步驟:決定該一或多個依賴關係中的每一個是否在該應用程式的安裝或部署期間被添加或被配置;在決定該一或多個依賴關係中的每一個在該應用程式的安裝或部署期間被添加或被配置之後,儲存資料,該資料指示在該應用程式的安裝或部署期間被添加或被配置的 該一或多個依賴關係將需要在該應用程式的一運行時間存在。
  7. 如請求項6之電腦實施的方法,其中決定該一或多個依賴關係中的每一個是否在該應用程式的安裝或部署期間被添加或被配置之步驟包括以下步驟:查詢由該作業系統提供的一註冊表。
  8. 如請求項6之電腦實施的方法,其中決定該一或多個依賴關係中的每一個是否在該應用程式的安裝或部署期間被添加或被配置之步驟包括以下步驟:查詢將API呼叫匹配於依賴關係的一內部映射表。
  9. 如請求項1之電腦實施的方法,其中配置該客戶端設備使得該等依賴關係存在之步驟包括以下步驟:當該應用程式安裝在一伺服器上時,配置該客戶端設備,使得該客戶端設備的配置設定匹配該伺服器的配置設定。
  10. 一種儲存電腦可執行指令的光碟、磁儲存裝置、或固態儲存裝置,以使一電腦執行以下動作:接收部署一虛擬化應用程式的一請求,以讓該虛擬化應用程式能夠在該客戶端設備處執行;決定部署該虛擬化應用程式所需的一或多個依賴關係中的每一個是否存在; 在決定不是該一或多個依賴關係中的每一個皆存在之後,配置其上執行該虛擬化應用程式的一客戶端設備,使得該等依賴關係存在,並在該客戶端設備處部署該虛擬化應用程式;在該客戶端設備上部署該虛擬化應用程式之後,攔截來自該虛擬化應用程式的一應用程式編寫介面(API)呼叫,該API呼叫請求存取一資源;選擇該API呼叫將被重定向至該資源的一複本;及將該API呼叫重定向至被儲存在一私人位置處的該資源。
  11. 如請求項10之光碟、磁儲存裝置、或固態儲存裝置,其中進一步儲存電腦可執行指令,以使該電腦執行以下動作:使用與該資源相關聯的一存取控制列表(ACL)來保護該私人位置。
  12. 如請求項10之光碟、磁儲存裝置、或固態儲存裝置,其中進一步儲存電腦可執行指令,以使該電腦執行以下動作:在部署該虛擬化應用程式之前,將該虛擬化應用程式安裝在一監控站上;監控在該虛擬化應用程式的安裝期間對該監控站作出的改動,以辨識該等依賴關係;及將辨識該等依賴關係的資料封裝在一應用程式套裝軟體 中,該應用程式套裝軟體被配置為被串流輸送至該客戶端設備。
  13. 如請求項12之光碟、磁儲存裝置、或固態儲存裝置,其中進一步儲存電腦可執行指令,以使該電腦執行以下動作:執行被安裝在該監控站上的該虛擬化應用程式;監控在該虛擬化應用程式的執行期間對該監控站作出的改動,以辨識該等依賴關係;及將辨識該等依賴關係的資料封裝在該應用程式套裝軟體中,該應用程式套裝軟體被配置為被串流輸送至該客戶端設備。
  14. 如請求項13之光碟、磁儲存裝置、或固態儲存裝置,其中監控在該虛擬化應用程式的執行期間對該監控站作出的改動以辨識該等依賴關係包括:攔截由該虛擬化應用程式在執行期間作出的API呼叫;及檢測包含在該等API呼叫中的參數,以辨識該等依賴關係。
  15. 如請求項14之電腦光碟、磁儲存裝置、或固態儲存裝置,其中進一步儲存電腦可執行指令,以使該電腦執行以下動作:決定該一或多個依賴關係中的每一個是否在該應用程式的安裝或部署期間被添加或被配置; 在決定該一或多個依賴關係中的每一個在該應用程式的安裝或部署期間被添加或被配置之後,儲存資料,該資料指示在該應用程式的安裝或部署期間被添加或被配置的該一或多個依賴關係將需要在該應用程式的一運行時間存在。
  16. 如請求項15之光碟、磁儲存裝置、或固態儲存裝置,其中決定該一或多個依賴關係中的每一個是否在該應用程式的安裝或部署期間被添加或被配置包括:查詢由該作業系統提供的一註冊表。
  17. 如請求項15之光碟、磁儲存裝置、或固態儲存裝置,其中決定該一或多個依賴關係中的每一個是否在該應用程式的安裝或部署期間被添加或被配置包括:查詢將API呼叫匹配於依賴關係的一內部映射表。
  18. 一種儲存電腦可執行指令的光碟、磁儲存裝置、或固態儲存裝置,以使該電腦執行以下動作:在一監控站上安裝並執行一虛擬化應用程式;監控在該虛擬化應用程式的該安裝和執行期間對該監控站作出的改動,以辨識將該虛擬化應用程式部署到一客戶端設備處所必須的該虛擬化應用程式之一或多個依賴關係;將辨識該等依賴關係的資料儲存在一依賴關係分析資料 庫中;接收在該客戶端設備處部署該虛擬化應用程式的一請求,以讓該虛擬化應用程式能夠在該客戶端設備處執行;回應於該請求,使用該資料來決定是否該一或多個依賴關係中的每一個皆存在於該客戶端設備處;在決定不是該一或多個依賴關係中的每一個皆存在於該客戶端設備處之後,配置該客戶端設備使得該一或多個依賴關係中的每一個皆存在;在決定部署該虛擬化應用程式的該一或多個依賴關係必要條件中的每一個皆存在之後,在該客戶端設備處部署該虛擬化應用程式;在該客戶端設備處部署該虛擬化應用程式之後,攔截來自該虛擬化應用程式的一應用程式編寫介面(API)呼叫,該API呼叫請求存取該客戶端設備上的一資源;選擇該API呼叫將被重定向至該資源的一複本;及將該API呼叫重定向至被儲存在一私人位置處的該資源。
  19. 如請求項18之光碟、磁儲存裝置、或固態儲存裝置,其中進一步儲存電腦可執行指令,以使該電腦執行以下動作:使用與該資源相關聯的一存取控制列表(ACL)來保護該私人位置。
  20. 一種電腦系統,包括: 一處理器;及一記憶體,通訊式耦接至該處理器,該記憶體儲存電腦可執行指令,以使該處理器執行以下動作:接收在一客戶端設備處部署一應用程式的一請求,以讓該應用程式能夠在該客戶端設備處執行;決定部署該應用程式的一或多個依賴關係必要條件中的每一個是否在該客戶端設備處存在;在決定不是部署該應用程式的該一或多個依賴關係必要條件中的每一個皆存在之後,配置該客戶端設備使得該等依賴關係符合,並在該客戶端設備處部署該應用程式;在該客戶端設備處部署該應用程式之後,攔截來自該應用程式的一應用程式編寫介面(API)呼叫,該API呼叫請求存取一資源;選擇該API呼叫將被重定向至該資源的一複本;及將該API呼叫重定向至被儲存在一私人位置處的該資源。
  21. 如請求項20之系統,其中該記憶體進一步包括電腦可執行指令以執行以下動作:使用與該資源相關聯的一存取控制列表(ACL)來保護該私人位置。
  22. 如請求項20之系統,其中該記憶體進一步包括電腦可執行指令以執行以下動作:將該應用程式安裝在一監控站上; 監控在該應用程式的安裝期間對該監控站作出的改動,以辨識該等依賴關係;及將辨識該等依賴關係的資料儲存在一依賴關係分析資料庫中。
  23. 如請求項22之系統,其中該記憶體進一步包括電腦可執行指令以執行以下動作:在該監控站上執行該應用程式;監控在該應用程式的執行期間對該監控站作出的改動,以辨識該等依賴關係;及將辨識該等依賴關係的資料儲存在該依賴關係分析資料庫中。
  24. 一種電腦系統,包括:一處理器;及一記憶體,通訊式耦接至該處理器,該記憶體儲存電腦可執行指令,以使該處理器執行以下動作:接收部署一虛擬化應用程式的一請求,以讓該虛擬化應用程式能夠在該客戶端設備處執行;決定部署該虛擬化應用程式所需的一或多個依賴關係中的每一個是否存在;在決定不是所需的該一或多個依賴關係中的每一個皆存在之後,配置執行該虛擬化應用程式的該客戶端設備,使得該等依賴關係存在,並在該客戶端設備處部署該虛擬 化應用程式;在該客戶端設備處部署該虛擬化應用程式之後,攔截來自該虛擬化應用程式的一應用程式編寫介面(API)呼叫,該API呼叫請求存取一資源;選擇該API呼叫將被重定向至該資源的一複本;及將該API呼叫重定向至被儲存在一私人位置處的該資源。
  25. 如請求項24之系統,其中該記憶體進一步儲存電腦可執行指令,以使該處理器執行以下動作:使用與該資源相關聯的一存取控制列表(ACL)來保護該私人位置。
  26. 如請求項24之系統,其中該記憶體進一步儲存電腦可執行指令,以使該處理器執行以下動作:將該虛擬化應用程式安裝在一監控站上;監控在該虛擬化應用程式的安裝期間對該監控站作出的改動,以辨識該等依賴關係;及將辨識該等依賴關係的資料封裝在一應用程式套裝軟體中,該應用程式套裝軟體被配置為被串流輸送至該客戶端設備。
  27. 一種電腦系統,包括:一處理器;及一記憶體,通訊式耦接至該處理器,該記憶體儲存電腦可 執行指令,以使該處理器執行以下動作:在一監控站上安裝並執行一虛擬化應用程式;監控在該虛擬化應用程式的安裝和執行期間對該監控站作出的改動,以辨識將該虛擬化應用程式部署到一客戶端設備處所必須的該虛擬化應用程式之一或多個依賴關係;將辨識該等依賴關係的資料儲存在一依賴關係分析資料庫中;接收在該客戶端設備處部署該虛擬化應用程式的一請求,以讓該應用程式能夠在該客戶端設備處執行;回應於該請求,使用該資料來決定是否該一或多個依賴關係中的每一個皆存在於該客戶端設備處;在決定不是該一或多個依賴關係中的每一個皆存在於該客戶端設備處之後,配置該客戶端設備使得該一或多個依賴關係中的每一個皆存在;在決定部署該虛擬化應用程式的該一或多個依賴關係必要條件中的每一個皆存在之後,在該客戶端設備處部署該虛擬化應用程式;在該客戶端設備處部署該虛擬化應用程式之後,攔截來自該虛擬化應用程式的一應用程式編寫介面(API)呼叫,該API呼叫請求存取該客戶端設備上的一資源;選擇該API呼叫將被重定向至該資源的一複本;及將該API呼叫重定向至被儲存在一私人位置處的該資源。
  28. 如請求項27之系統,其中該記憶體進一步儲存電腦可執行指令,以使該處理器執行以下動作:使用與該資源相關聯的一存取控制列表(ACL)來保護私人位置。
TW100142411A 2010-12-23 2011-11-18 滿足應用程式依賴關係 TWI540455B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12/977,095 US9354852B2 (en) 2010-12-23 2010-12-23 Satisfying application dependencies

Publications (2)

Publication Number Publication Date
TW201229807A TW201229807A (en) 2012-07-16
TWI540455B true TWI540455B (zh) 2016-07-01

Family

ID=46314918

Family Applications (1)

Application Number Title Priority Date Filing Date
TW100142411A TWI540455B (zh) 2010-12-23 2011-11-18 滿足應用程式依賴關係

Country Status (8)

Country Link
US (3) US9354852B2 (zh)
EP (2) EP2656211B1 (zh)
JP (1) JP6081925B2 (zh)
CN (1) CN102567055B (zh)
ES (1) ES2710873T3 (zh)
HK (1) HK1172420A1 (zh)
TW (1) TWI540455B (zh)
WO (1) WO2012088364A2 (zh)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8756293B2 (en) * 2007-04-23 2014-06-17 Nholdings Sa Providing a user with virtual computing services
US9354852B2 (en) 2010-12-23 2016-05-31 Microsoft Technology Licensing, Llc Satisfying application dependencies
US9052961B2 (en) * 2012-03-02 2015-06-09 Vmware, Inc. System to generate a deployment plan for a cloud infrastructure according to logical, multi-tier application blueprint
US9292299B2 (en) * 2012-10-16 2016-03-22 Yahoo! Inc. Methods and systems for package management
US9183120B1 (en) * 2013-06-04 2015-11-10 The Mathworks, Inc. Functional dependency analysis
US9773070B2 (en) * 2014-06-30 2017-09-26 Microsoft Technology Licensing, Llc Compound transformation chain application across multiple devices
US9824136B2 (en) * 2014-09-19 2017-11-21 Microsoft Technology Licensing, Llc Dynamic application containers
US11438278B2 (en) * 2015-06-29 2022-09-06 Vmware, Inc. Container-aware application dependency identification
US9588745B1 (en) * 2015-10-13 2017-03-07 Bank Of America Corporation Customizable service delivery system with scalable workflow
US10432471B2 (en) * 2015-12-31 2019-10-01 Microsoft Technology Licensing, Llc Distributed computing dependency management system
KR102000266B1 (ko) * 2016-01-15 2019-07-15 구글 엘엘씨 애플리케이션 인스턴스들에 걸친 식별자들
CN107220077B (zh) 2016-10-20 2019-03-19 华为技术有限公司 应用启动的管控方法和管控设备
CN108228248A (zh) * 2016-12-14 2018-06-29 阿里巴巴集团控股有限公司 一种依赖关系的确定方法和装置
US10360082B2 (en) * 2017-01-19 2019-07-23 International Business Machines Corporation Analysis of application programming interface usage for improving a computer system
US10656927B2 (en) * 2017-10-27 2020-05-19 Intuit Inc. Methods, systems, and computer program products for automating releases and deployment of a softawre application along the pipeline in continuous release and deployment of software application delivery models
US10599486B1 (en) 2018-09-21 2020-03-24 Citrix Systems, Inc. Systems and methods for intercepting and enhancing SaaS application calls via embedded browser
US10956145B2 (en) * 2019-01-22 2021-03-23 Saudi Arabian Oil Company System and method for determining dynamic dependencies for enterprise it change management, simulation and rollout
US11354222B2 (en) 2019-06-27 2022-06-07 Capital One Services, Llc Discovery crawler for application dependency discovery, reporting, and management tool
US10915428B2 (en) 2019-06-27 2021-02-09 Capital One Services, Llc Intelligent services and training agent for application dependency discovery, reporting, and management tool
US11093378B2 (en) 2019-06-27 2021-08-17 Capital One Services, Llc Testing agent for application dependency discovery, reporting, and management tool
US10747544B1 (en) 2019-06-27 2020-08-18 Capital One Services, Llc Dependency analyzer in application dependency discovery, reporting, and management tool
US10642719B1 (en) 2019-06-27 2020-05-05 Capital One Services, Llc Intelligent services for application dependency discovery, reporting, and management tool
US10521235B1 (en) 2019-06-27 2019-12-31 Capital One Services, Llc Determining problem dependencies in application dependency discovery, reporting, and management tool
US11379292B2 (en) * 2019-06-27 2022-07-05 Capital One Services, Llc Baseline modeling for application dependency discovery, reporting, and management tool
US11687803B2 (en) 2020-06-04 2023-06-27 Capital One Services, Llc Response prediction for electronic communications
CN112882763A (zh) * 2020-12-17 2021-06-01 济南浪潮数据技术有限公司 一种访问控制方法、装置、设备及可读存储介质
CN114826904A (zh) * 2021-01-21 2022-07-29 北京金山云网络技术有限公司 服务依赖信息获得方法、装置及电子设备
US11677810B2 (en) 2021-07-23 2023-06-13 International Business Machines Corporation Configuration tool for deploying an application on a server

Family Cites Families (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5721824A (en) 1996-04-19 1998-02-24 Sun Microsystems, Inc. Multiple-package installation with package dependencies
US20020007347A1 (en) * 1996-10-10 2002-01-17 Michael S. Blumenthal Secured electronic information delivery system having a metering device
US6067558A (en) * 1997-09-18 2000-05-23 Wendt; James Gordon Method and apparatus for providing increased content from a resource constrained device
US6496847B1 (en) * 1998-05-15 2002-12-17 Vmware, Inc. System and method for virtualizing computer systems
US6427208B1 (en) * 1998-10-20 2002-07-30 Gateway, Inc. Image file change capture method and apparatus
US6763370B1 (en) 1998-11-16 2004-07-13 Softricity, Inc. Method and apparatus for content protection in a secure content delivery system
US7017188B1 (en) 1998-11-16 2006-03-21 Softricity, Inc. Method and apparatus for secure content delivery over broadband access networks
US7225264B2 (en) 1998-11-16 2007-05-29 Softricity, Inc. Systems and methods for delivering content over a computer network
US6938096B1 (en) 1999-04-12 2005-08-30 Softricity, Inc. Method and system for remote networking using port proxying by detecting if the designated port on a client computer is blocked, then encapsulating the communications in a different format and redirecting to an open port
US7200632B1 (en) 1999-04-12 2007-04-03 Softricity, Inc. Method and system for serving software applications to client computers
US7370071B2 (en) 2000-03-17 2008-05-06 Microsoft Corporation Method for serving third party software applications from servers to client computers
US7730169B1 (en) 1999-04-12 2010-06-01 Softricity, Inc. Business method and system for serving third party software applications
JP4571253B2 (ja) * 1999-08-09 2010-10-27 株式会社リコー 情報システム
US7111060B2 (en) * 2000-03-14 2006-09-19 Aep Networks, Inc. Apparatus and accompanying methods for providing, through a centralized server site, a secure, cost-effective, web-enabled, integrated virtual office environment remotely accessible through a network-connected web browser
GB0011020D0 (en) * 2000-05-09 2000-06-28 Ibm Intercepting system API calls
US7219304B1 (en) 2000-06-19 2007-05-15 International Business Machines Corporation System and method for developing and administering web applications and services from a workflow, enterprise, and mail-enabled web application server and platform
US20020087883A1 (en) * 2000-11-06 2002-07-04 Curt Wohlgemuth Anti-piracy system for remotely served computer applications
US6918113B2 (en) * 2000-11-06 2005-07-12 Endeavors Technology, Inc. Client installation and execution system for streamed applications
US7028305B2 (en) 2001-05-16 2006-04-11 Softricity, Inc. Operating system abstraction and protection layer
US7096491B2 (en) * 2001-07-20 2006-08-22 Hewlett-Packard Development Company, L.P. Mobile code security architecture in an application service provider environment
US20030037030A1 (en) * 2001-08-16 2003-02-20 International Business Machines Corporation Method and system for storage, retrieval and execution of legacy software
US7779405B2 (en) * 2003-03-14 2010-08-17 At&T Intellectual Property I, L.P. Run-time determination of application delivery
US7340739B2 (en) 2003-06-27 2008-03-04 International Business Machines Corporation Automatic configuration of a server
US20050114870A1 (en) * 2003-11-21 2005-05-26 Song Dong H. System and method for executing an application on a secured run-time environment
US7590743B2 (en) 2003-12-23 2009-09-15 Softricity, Inc. Method and system for associating a process on a multi-user device with a host address unique to a user session associated with the process
US7539686B2 (en) 2004-03-12 2009-05-26 Microsoft Corporation Tag-based schema for distributing update metadata in an update distribution system
JP2005339070A (ja) 2004-05-25 2005-12-08 Sony Corp インストール方法,情報処理装置,プログラム
WO2006020094A2 (en) 2004-07-20 2006-02-23 Softricity, Inc. Method and system for minimizing loss in a computer application
US7954090B1 (en) 2004-12-21 2011-05-31 Zenprise, Inc. Systems and methods for detecting behavioral features of software application deployments for automated deployment management
US20060161582A1 (en) 2005-01-18 2006-07-20 Microsoft Corporation Application object as primitive of operating system
US7802294B2 (en) 2005-01-28 2010-09-21 Microsoft Corporation Controlling computer applications' access to data
US7624086B2 (en) 2005-03-04 2009-11-24 Maxsp Corporation Pre-install compliance system
US8949388B2 (en) 2005-04-25 2015-02-03 Dell Products L.P. System and method for information handling system image network communication
US8549172B2 (en) * 2005-08-19 2013-10-01 International Business Machines Corporation Distribution of software based on scheduled time to deploy software dynamic resource state of systems involved in deployment of software and based upon environmental conditions
CN1936849A (zh) 2005-09-19 2007-03-28 国际商业机器公司 资源动态调整方法及设备
US20070083610A1 (en) * 2005-10-07 2007-04-12 Treder Terry N Method and a system for accessing a plurality of files comprising an application program
US8199900B2 (en) * 2005-11-14 2012-06-12 Aspect Software, Inc. Automated performance monitoring for contact management system
US20070143339A1 (en) 2005-12-20 2007-06-21 Springett John C Architecture for a smart enterprise framework and methods thereof
US20070180433A1 (en) * 2006-01-27 2007-08-02 International Business Machines Corporation Method to enable accurate application packaging and deployment with optimized disk space usage
US8151323B2 (en) * 2006-04-12 2012-04-03 Citrix Systems, Inc. Systems and methods for providing levels of access and action control via an SSL VPN appliance
US20070255798A1 (en) * 2006-04-26 2007-11-01 Sap Ag Brokered virtualized application execution
US20080059631A1 (en) * 2006-07-07 2008-03-06 Voddler, Inc. Push-Pull Based Content Delivery System
US7856654B2 (en) * 2006-08-11 2010-12-21 Novell, Inc. System and method for network permissions evaluation
US8296758B2 (en) 2006-09-20 2012-10-23 Sap Ag Deployment and versioning of applications
WO2008131456A1 (en) * 2007-04-24 2008-10-30 Stacksafe, Inc. System and method for managing an assurance system
JP2008310610A (ja) * 2007-06-15 2008-12-25 Hitachi Ltd システム構成管理方法
US8132247B2 (en) 2007-08-03 2012-03-06 Citrix Systems, Inc. Systems and methods for authorizing a client in an SSL VPN session failover environment
US9262366B2 (en) * 2007-09-21 2016-02-16 Microsoft Technology Licensing, Llc Software deployment in large-scale networked systems
US8196137B2 (en) * 2007-10-15 2012-06-05 Microsoft Corporation Remote auto provisioning and publication of applications
US8418138B2 (en) * 2007-11-07 2013-04-09 International Business Machines Corporation Method, system and computer-usable medium for tracking and recording modifications to a software solution
US20090183182A1 (en) * 2008-01-10 2009-07-16 Microsoft Corporation Dynamic Composition of Virtualized Applications
US9753712B2 (en) * 2008-03-20 2017-09-05 Microsoft Technology Licensing, Llc Application management within deployable object hierarchy
US8434093B2 (en) * 2008-08-07 2013-04-30 Code Systems Corporation Method and system for virtualization of software applications
US9286083B2 (en) 2008-09-10 2016-03-15 Microsoft Technology Licensing, Llc Satisfying missing dependencies on a running system
GB2465784B (en) 2008-11-28 2012-07-11 Vmware Inc Computer system and method for configuring an application program in a computer system
US8930953B2 (en) * 2009-01-16 2015-01-06 International Business Machines Corporation Dynamic checking of hardware resources for virtual environments
US8533151B2 (en) * 2009-05-26 2013-09-10 Microsoft Corporation Generating a local copy of a virtualized application package from a local installation
US8484728B2 (en) * 2009-06-03 2013-07-09 Apple Inc. Managing securely installed applications
US8285949B2 (en) * 2009-06-03 2012-10-09 Apple Inc. Secure software installation
US20110041124A1 (en) * 2009-08-17 2011-02-17 Fishman Neil S Version Management System
US20110088011A1 (en) * 2009-10-14 2011-04-14 Vermeg Sarl Automated Enterprise Software Development
US20110126197A1 (en) * 2009-11-25 2011-05-26 Novell, Inc. System and method for controlling cloud and virtualized data centers in an intelligent workload management system
US9477531B2 (en) * 2010-01-27 2016-10-25 Vmware, Inc. Accessing virtual disk content of a virtual machine without running a virtual desktop
US8468542B2 (en) * 2010-03-04 2013-06-18 Microsoft Corporation Virtual environment for server applications, such as web applications
US9218359B2 (en) * 2010-07-02 2015-12-22 Code Systems Corporation Method and system for profiling virtual application resource utilization patterns by executing virtualized application
US20120102103A1 (en) * 2010-10-20 2012-04-26 Microsoft Corporation Running legacy applications on cloud computing systems without rewriting
US9354852B2 (en) * 2010-12-23 2016-05-31 Microsoft Technology Licensing, Llc Satisfying application dependencies
US9826049B2 (en) * 2011-03-03 2017-11-21 Life In Mobile Innovations, Inc. Method and apparatus for dynamically presenting content using an interface for setting conditional network destinations
US9015188B2 (en) * 2011-09-28 2015-04-21 Bmc Software, Inc. Methods and apparatus for monitoring execution of a database query program
US8949923B2 (en) * 2012-02-21 2015-02-03 Time Warner Cable Enterprises Llc Remote media streaming
US10666533B2 (en) * 2012-07-20 2020-05-26 Oracle International Corporation Tag latency monitoring and control system for enhanced web page performance

Also Published As

Publication number Publication date
CN102567055B (zh) 2016-01-27
US9977665B2 (en) 2018-05-22
ES2710873T3 (es) 2019-04-29
EP2656211A2 (en) 2013-10-30
EP3166018A1 (en) 2017-05-10
EP3166018B1 (en) 2019-01-30
US20180260205A1 (en) 2018-09-13
EP2656211B1 (en) 2018-11-21
US9354852B2 (en) 2016-05-31
US10402182B2 (en) 2019-09-03
JP2014501410A (ja) 2014-01-20
EP2656211A4 (en) 2015-03-04
WO2012088364A3 (en) 2012-11-29
US20120166597A1 (en) 2012-06-28
WO2012088364A2 (en) 2012-06-28
HK1172420A1 (zh) 2013-04-19
US20160328224A1 (en) 2016-11-10
TW201229807A (en) 2012-07-16
JP6081925B2 (ja) 2017-02-15
CN102567055A (zh) 2012-07-11

Similar Documents

Publication Publication Date Title
TWI540455B (zh) 滿足應用程式依賴關係
US10607007B2 (en) Micro-virtual machine forensics and detection
US20180032720A1 (en) Detection of malicious software packages
KR101152227B1 (ko) 클라이언트 및 서버의 보안방법
US20170270313A1 (en) Managing applications in non-cooperative environments
US20160132351A1 (en) Micro-virtual machine forensics and detection
US9928010B2 (en) Methods and apparatus to re-direct detected access requests in a modularized virtualization topology using virtual hard disks
US20100107160A1 (en) Protecting computing assets with virtualization
US20160378348A1 (en) Methods and apparatus to manage inter-virtual disk relations in a modularized virtualization topology using virtual hard disks
JP2018531459A (ja) 仮想プライベートコンテナを生成する技法
JP2018531459A6 (ja) 仮想プライベートコンテナを生成する技法
US20130024944A1 (en) Confidential information leakage prevention system, confidential information leakage prevention method and confidential information leakage prevention program
WO2006124239A2 (en) Disk protection using enhanced write filter
US9804789B2 (en) Methods and apparatus to apply a modularized virtualization topology using virtual hard disks
US20170308492A1 (en) Isolating a redirected usb device to a set of applications
US9350596B2 (en) On-demand tethered greedy virtual application appliance
JP5951002B2 (ja) 選択的ポリシーによるホストと複数のゲストとの間での構成要素伝播の実現
US8881291B2 (en) System and method for inhibiting the processing of new code modules by an outdated runtime environment
US10782952B1 (en) Generating machine images from software packages
US10126983B2 (en) Methods and apparatus to enforce life cycle rules in a modularized virtualization topology using virtual hard disks
JP6781126B2 (ja) 仮想マシン設定投入システム、仮想マシン設定投入方法、及びプログラム
US20240061960A1 (en) Remote management over security layer
Griffiths et al. Fireguard-A secure browser with reduced forensic footprint
WO2024044005A1 (en) Remote management over security layer

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees