專利名稱:基于io解耦的分布式部署應(yīng)用程序的實現(xiàn)方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及虛擬機(jī),特別是涉及一種基于IO (Input Output,輸入輸出)解f禹的分布式部署應(yīng)用程序的實現(xiàn)方法及系統(tǒng)。
背景技術(shù):
隨著云計算技術(shù)的日益普及和大量工業(yè)化應(yīng)用,云計算在實現(xiàn)服務(wù)的高可用性、處理能力的可擴(kuò)展性等方面的優(yōu)勢被業(yè)界認(rèn)可。虛擬機(jī)(即虛擬計算機(jī))作為云計算技術(shù)的重要實現(xiàn),已經(jīng)得到廣泛的應(yīng)用。但是,在實際應(yīng)用的過程中,虛擬機(jī)存在以下缺點(I)虛擬機(jī)與本地程序的交互不是很好,例如,使用很廣泛的虛擬機(jī)軟件VirtualBox不支持虛擬機(jī)和宿主機(jī)之間的復(fù)制粘貼,虛擬機(jī)軟件vmware必須在虛擬機(jī)上安裝增強(qiáng)工具包才支持復(fù)制粘貼拖拽等。(2)多個用戶同時使用虛擬機(jī)時,虛擬機(jī)的操作系統(tǒng)所占系統(tǒng)資源的開銷較大。
發(fā)明內(nèi)容
本發(fā)明的目的是為了克服上述背景技術(shù)的不足,提供一種基于IO解耦的分布式部署應(yīng)用程序的實現(xiàn)方法及系統(tǒng),將應(yīng)用程序的邏輯部分與顯示、IO部分分離,不改變應(yīng)用程序的其他部分,使應(yīng)用程序虛擬化,虛擬的粒度相對較小,虛擬程序執(zhí)行效果跟本地程序一樣,與本地其他程序交互性比較好,減少虛擬機(jī)操作系統(tǒng)資源的消耗。本發(fā)明提供的 基于IO解耦的分布式部署應(yīng)用程序的實現(xiàn)方法,包括以下步驟S1、在服務(wù)器端的可執(zhí)行程序和系統(tǒng)動態(tài)鏈接庫之間插入一層分離動態(tài)鏈接庫,通過遠(yuǎn)程過程調(diào)用協(xié)議RPC將關(guān)于顯示、IO部分的函數(shù)調(diào)用轉(zhuǎn)移到本地端執(zhí)行,所述顯示、IO部分的函數(shù)包括所有涉及人機(jī)界面交互、圖形顯示、文件IO和網(wǎng)絡(luò)IO的函數(shù);根據(jù)本地計算機(jī)上應(yīng)用程序的可執(zhí)行程序,得到應(yīng)用程序的所有加載庫信息;S2、拷貝可執(zhí)行程序及所有加載庫作為副本,傳輸?shù)椒?wù)器;S3、修改服務(wù)器端可執(zhí)行程序,分離邏輯部分和顯示、IO部分部署分離動態(tài)鏈接庫到可執(zhí)行程序所在的目錄下,根據(jù)所有與人機(jī)交互、圖形顯示、網(wǎng)絡(luò)10、文件IO有關(guān)的函數(shù)調(diào)用來創(chuàng)建一個過濾列表,在可執(zhí)行程序文件里根據(jù)過濾列表查找需要修改的函數(shù)入口地址,將這些函數(shù)入口地址修改為指向分離動態(tài)鏈接庫;S4、在服務(wù)器端部署修改后的可執(zhí)行程序及所有的加載庫;S5、在本地端部署客戶端軟件。在上述技術(shù)方案中,所述加載庫信息包括加載庫名字、函數(shù)入口地址、函數(shù)名字信
肩、O本發(fā)明還提供一種基于IO解耦的分布式部署應(yīng)用程序的實現(xiàn)系統(tǒng),包括客戶端軟件、分離動態(tài)鏈接庫和虛擬程序管理單元,其中,所述分離動態(tài)鏈接庫位于服務(wù)器端的可執(zhí)行程序和系統(tǒng)動態(tài)鏈接庫之間,分離動態(tài)鏈接庫通過RPC將關(guān)于顯示、IO部分的函數(shù)調(diào)用轉(zhuǎn)移到本地端執(zhí)行,所述顯示、IO部分的函數(shù)包括所有涉及人機(jī)界面交互、圖形顯示、文件IO和網(wǎng)絡(luò)IO的函數(shù);位于本地計算機(jī)的客戶端軟件通過網(wǎng)絡(luò)與分離動態(tài)鏈接庫連接,接收轉(zhuǎn)發(fā)過來的、與IO相關(guān)的函數(shù)調(diào)用,調(diào)用系統(tǒng)動態(tài)鏈接庫執(zhí)行這些函數(shù)調(diào)用,并返回結(jié)果給分離動態(tài)鏈接庫;位于非本地計算機(jī)的分離動態(tài)鏈接庫與客戶端軟件連接,將與IO相關(guān)的函數(shù)調(diào)用轉(zhuǎn)發(fā)給客戶端軟件并接收結(jié)果,同時將結(jié)果返回給應(yīng)用程序的可執(zhí)行文件,并通過調(diào)用本計算機(jī)的系統(tǒng)動態(tài)鏈接庫完成與IO無關(guān)的其他功能;虛擬程序管理單元用于修改第三方可執(zhí)行程序,傳輸、部署服務(wù)器端軟件和客戶端軟件。在上述技術(shù)方案中,所述虛擬程序管理單元常駐在計算機(jī)內(nèi)存中,以服務(wù)的方式隨機(jī)啟動。在上述技術(shù)方案中,每個計算機(jī)節(jié)點都部署有客戶端軟件、分離動態(tài)鏈接庫和虛擬程序管理單元。在上述技術(shù)方案中,所述虛擬程序管理單元包括分析模塊、分離模塊、傳輸模塊和監(jiān)控模塊,在本地計算機(jī)和服務(wù)器端啟動虛擬程序管理單元后,在本地計算機(jī)側(cè),用戶選擇應(yīng)用程序a作為虛擬程序?qū)ο螅凰龇治瞿K,用于根據(jù)應(yīng)用程序a的可執(zhí)行文件及所調(diào)用的動態(tài)鏈接庫查找所有調(diào)用的動態(tài)鏈接庫,獲取需要IO解耦的函數(shù)調(diào)用信息;所述傳輸模塊,用于將應(yīng)用程序a及所有的調(diào)用的動態(tài)鏈接庫拷貝到服務(wù)器端;所述分離模塊,用于用于修改應(yīng)用程序a,分離邏輯部分和顯示、IO部分部署分離動態(tài)鏈接庫到應(yīng)用程序a所在的目錄下,根據(jù)所有與人機(jī)交互、圖形顯示、網(wǎng)絡(luò)10、文件IO有關(guān)的函數(shù)調(diào)用來創(chuàng)建一個過濾列表;在應(yīng)用程序a的可執(zhí)行文件及所有的調(diào)用的動態(tài)鏈接庫里,根據(jù)過濾列表查找需要修改的函數(shù)入口地址;將這些函數(shù)入口地址修改為指向分離動態(tài)鏈接庫,將應(yīng)用程序a修改成al ; 所述傳輸模塊,用于在本地部署客戶端軟件及系統(tǒng)動態(tài)鏈接庫。在上述技術(shù)方案中,所述虛擬程序的運行過程如下在本地以虛擬程序方式啟動應(yīng)用程序a,實質(zhì)上啟動客戶端軟件,客戶端軟件通過本地計算機(jī)的監(jiān)控模塊傳送啟動命令給服務(wù)器端的監(jiān)控模塊;服務(wù)器端的監(jiān)控模塊啟動應(yīng)用程序al,加載所有動態(tài)鏈接庫,包括分離動態(tài)鏈接庫,與本地客戶端軟件通過遠(yuǎn)程過程調(diào)用建立連接;用戶正常使用客戶端軟件,本地計算機(jī)的監(jiān)控模塊和服務(wù)器端的監(jiān)控模塊共同維護(hù)線路通暢,處理延時消息、重發(fā)消息;本地關(guān)閉客戶端軟件,本地計算機(jī)的監(jiān)控模塊傳送關(guān)閉命令給服務(wù)器端的監(jiān)控模塊,服務(wù)器端的監(jiān)控模塊傳送關(guān)閉命令給應(yīng)用程序al,應(yīng)用程序al收到關(guān)閉命令后關(guān)閉進(jìn)程退出運行,服務(wù)器端的監(jiān)控模塊監(jiān)測到應(yīng)用程序al的關(guān)閉,發(fā)送已關(guān)閉消息給本地計算機(jī)的監(jiān)控模塊,本地計算機(jī)的監(jiān)控模塊關(guān)閉客戶端軟件的運行。與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點如下(I)本發(fā)明針對目前常用的虛擬機(jī)技術(shù)提出虛擬程序的概念及實現(xiàn)方法,聯(lián)網(wǎng)條件下,在本地計算機(jī)運行應(yīng)用程序的顯示部分及IO部分,在其他計算機(jī)上運行應(yīng)用程序的邏輯部分,將應(yīng)用程序的邏輯部分與顯示、IO部分分離,不改變應(yīng)用程序的其他部分,使應(yīng)用程序虛擬化,虛擬的粒度相對較小,虛擬程序執(zhí)行效果跟本地程序一樣,與本地其他程序交互性比較好。 (2)虛擬程序所有對外10,包括文件10、網(wǎng)絡(luò)IO等都在本地執(zhí)行,保證了運行效果和執(zhí)行結(jié)果與本地程序一樣。(3)應(yīng)用程序的邏輯部分與顯示部分、IO部分運行在不同的計算機(jī)上,多個應(yīng)用程序的邏輯部分可以運行在同一臺計算機(jī)上,互不干擾,運行結(jié)果與本地程序一樣,方便用戶使用虛擬化技術(shù),提高虛擬資源的共享能力。(4)多個用戶使用虛擬程序時,只要操作系統(tǒng)一樣,就可以共享同一個服務(wù)器的操作系統(tǒng),與創(chuàng)建若干個虛擬機(jī)相比,本發(fā)明能夠減少虛擬機(jī)操作系統(tǒng)資源的消耗。
圖1是現(xiàn)有技術(shù)中一般應(yīng)用程序的運行場景。圖2是本發(fā)明實施例中虛擬應(yīng)用程序的運行場景。圖3是本發(fā)明實施例中虛擬程序的部署示意圖。圖4是本發(fā)明實施例中虛擬程序管理單元的結(jié)構(gòu)框圖。
具體實施例方式下面結(jié)合附圖及具體實施例對本發(fā)明作進(jìn)一步的詳細(xì)描述。參見圖1所示,一般的應(yīng)用程序在運行過程中通過調(diào)用包括系統(tǒng)動態(tài)鏈接庫在內(nèi)的各種動態(tài)鏈接庫,實現(xiàn)讀寫各種文件、與用戶交互等功能?,F(xiàn)有應(yīng)用程序的邏輯部分和顯示、IO部分一般是集中在一臺計算機(jī)里執(zhí)行,邏輯部分和顯示、IO部分的連接通過執(zhí)行系統(tǒng)動態(tài)鏈接庫里部分與顯示、IO相關(guān)的函數(shù)調(diào)用來實現(xiàn)的。本發(fā)明實施例提供一種基于IO解耦的分布式部署應(yīng)用程序的實現(xiàn)方法,包括以下步驟S1、參見圖2所示,在服務(wù)器端的可執(zhí)行程序和系統(tǒng)動態(tài)鏈接庫之間插入一層分離動態(tài)鏈接庫,通過RPC(Remote Procedure Call Protocol,遠(yuǎn)程過程調(diào)用協(xié)議)將關(guān)于顯示、IO部分的函數(shù)調(diào)用轉(zhuǎn)移到本地端執(zhí)行,顯示、IO部分的函數(shù)包括所有涉及人機(jī)界面交互、圖形顯示、文件IO和網(wǎng)絡(luò)IO的函數(shù)。由于應(yīng)用程序必須通過調(diào)用系統(tǒng)函數(shù)接口,即系統(tǒng)動態(tài)鏈接庫來實現(xiàn),因此在應(yīng)用程序和系統(tǒng)動態(tài)鏈接庫之間插入一層分離動態(tài)鏈接庫,通過遠(yuǎn)程調(diào)用方式將所有于對外出入口有關(guān)的函數(shù)調(diào)用轉(zhuǎn)移到本地計算機(jī)實現(xiàn),就能實現(xiàn)應(yīng)用程序的虛擬化,必須要求所有對外的出入口在本地計算機(jī)執(zhí)行,否則會影響程序運行結(jié)果的正確性,對外的出入口包括所有與人機(jī)界面交互、圖形顯示、網(wǎng)絡(luò)10、文件IO有關(guān)的函數(shù)調(diào)用。以下統(tǒng)稱這些對外的出入口為10。根據(jù)本地計算機(jī)上應(yīng)用程序的可執(zhí)行程序,得到應(yīng)用程序的所有加載庫信息,包括加載庫名字、函數(shù)入口地址、函數(shù)名字信息等。S2、拷貝可執(zhí)行程序及所有加載庫作為副本, 傳輸?shù)椒?wù)器。S3、修改服務(wù)器端可執(zhí)行程序,分離邏輯部分和顯示、IO部分部署分離動態(tài)鏈接庫到可執(zhí)行程序所在的目錄下,根據(jù)所有與人機(jī)交互、圖形顯示、網(wǎng)絡(luò)10、文件IO有關(guān)的函數(shù)調(diào)用來創(chuàng)建一個過濾列表,在可執(zhí)行程序文件里根據(jù)過濾列表查找需要修改的函數(shù)入口地址,將這些函數(shù)入口地址修改為指向分離動態(tài)鏈接庫。S4、在服務(wù)器端部署修改后的可執(zhí)行程序及所有的加載庫。S5、在本地端部署客戶端軟件。本發(fā)明實施例提供一種基于IO解耦的分布式部署應(yīng)用程序的實現(xiàn)系統(tǒng),包括客戶端軟件、分離動態(tài)鏈接庫和虛擬程序管理單元,其中,分離動態(tài)鏈接庫位于服務(wù)器端的可執(zhí)行程序和系統(tǒng)動態(tài)鏈接庫之間,分離動態(tài)鏈接庫通過RPC將關(guān)于顯示、IO部分的函數(shù)調(diào)用轉(zhuǎn)移到本地端執(zhí)行,顯示、IO部分的函數(shù)包括所有涉及人機(jī)界面交互、圖形顯示、文件IO和網(wǎng)絡(luò)IO的函數(shù);位于本地計算機(jī)的客戶端軟件通過網(wǎng)絡(luò)與分離動態(tài)鏈接庫連接,接收轉(zhuǎn)發(fā)過來的、與IO相關(guān)的函數(shù)調(diào)用,調(diào)用系統(tǒng)動態(tài)鏈接庫執(zhí)行這些函數(shù)調(diào)用,并返回結(jié)果給分離動態(tài)鏈接庫;位于非本地計算機(jī)的分離動態(tài)鏈接庫與客戶端軟件連接,將與IO相關(guān)的函數(shù)調(diào)用轉(zhuǎn)發(fā)給客戶端軟件并接收結(jié)果,同時將結(jié)果返回給應(yīng)用程序的可執(zhí)行文件,并通過調(diào)用本計算機(jī)的系統(tǒng)動態(tài)鏈接庫完成與IO無關(guān)的其他功能;虛擬程序管理單元用于修改第三方可執(zhí)行程序,傳輸、部署服務(wù)器端軟件和客戶端軟件,虛擬程序管理單元常駐在計算機(jī)內(nèi)存中,以服務(wù)的方式隨機(jī)啟動。參見圖3所示,每個計算機(jī)節(jié)點都部署有客戶端軟件、分離動態(tài)鏈接庫和虛擬程序管理單元,這樣就既可以將本節(jié)點的應(yīng)用程序虛擬化,也可以當(dāng)作非本節(jié)點應(yīng)用程序虛擬化的服務(wù)器端。參見圖4所示,虛擬程序管理單元包括分析模塊、分離模塊、傳輸模塊和監(jiān)控模塊,在本地計算機(jī)和服務(wù)器端啟動虛擬程序管理單元后,在本地計算機(jī)側(cè),用戶選擇應(yīng)用程序a作為虛擬程序?qū)ο?;分析模塊根據(jù)應(yīng)用程序a的可執(zhí)行文件及所調(diào)用的動態(tài)鏈接庫查找所有調(diào)用的動態(tài)鏈接庫,獲取需要IO解耦的函數(shù)調(diào)用信息;
傳輸模塊將應(yīng)用程序a及所有的調(diào)用的動態(tài)鏈接庫拷貝到服務(wù)器端;分離模塊用于修改應(yīng)用程序a,分離邏輯部分和顯示、IO部分部署分離動態(tài)鏈接庫到應(yīng)用程序a所在的目錄下,根據(jù)所有與人機(jī)交互、圖形顯示、網(wǎng)絡(luò)10、文件IO有關(guān)的函數(shù)調(diào)用來創(chuàng)建一個過濾列表;在應(yīng)用程序a的可執(zhí)行文件及所有的調(diào)用的動態(tài)鏈接庫里,根據(jù)過濾列表查找需要修改的函數(shù)入口地址;將這些函數(shù)入口地址修改為指向分離動態(tài)鏈接庫,將應(yīng)用程序a修改成al。傳輸模塊在本地部署客戶端軟件及系統(tǒng)動態(tài)鏈接庫。虛擬程序運行過程如下在本地以虛擬程序方式啟動應(yīng)用程序a,實質(zhì)上啟動客戶端軟件,客戶端軟件通過本地計算機(jī)的監(jiān)控模塊傳送啟動命令給服務(wù)器端的監(jiān)控模塊;服務(wù)器端的監(jiān)控模塊啟動應(yīng)用程序al,加載所有動態(tài)鏈接庫,包括分離動態(tài)鏈接庫,與本地客戶端軟件通過遠(yuǎn)程過程調(diào)用建立連接;用戶正常使用客戶端軟件,本地計算機(jī)的監(jiān)控模塊和服務(wù)器端的監(jiān)控模塊共同維護(hù)線路通暢,處理延時消息、重發(fā)消息等;本地關(guān)閉客戶端軟件,本地計算機(jī)的監(jiān)控模塊傳送關(guān)閉命令給服務(wù)器端的監(jiān)控模塊,服務(wù)器端的監(jiān)控模塊傳送關(guān)閉命令給應(yīng)用程序al,應(yīng)用程序al收到關(guān)閉命令后關(guān)閉進(jìn)程退出運行,服務(wù)器端的監(jiān)控模塊監(jiān)測到應(yīng)用程序al的關(guān)閉,發(fā)送已關(guān)閉消息給本地計算機(jī)的監(jiān)控模塊,本地計算機(jī)的監(jiān)控模塊關(guān)閉客戶端軟件的運行。本領(lǐng)域的技術(shù)人員可以對本發(fā)明實施例進(jìn)行各種修改和變型,倘若這些修改和變型屬在本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則這些修改和變型也在本發(fā)明的保護(hù)范圍之內(nèi)。說明書中未詳細(xì)描述的內(nèi)容為本領(lǐng)域技術(shù)人員公知的現(xiàn)有技術(shù)。
權(quán)利要求
1.一種基于IO解耦的分布式部署應(yīng)用程序的實現(xiàn)方法,其特征在于,包括以下步驟51、在服務(wù)器端的可執(zhí)行程序和系統(tǒng)動態(tài)鏈接庫之間插入一層分離動態(tài)鏈接庫,通過遠(yuǎn)程過程調(diào)用協(xié)議RPC將關(guān)于顯示、IO部分的函數(shù)調(diào)用轉(zhuǎn)移到本地端執(zhí)行,所述顯示、IO部分的函數(shù)包括所有涉及人機(jī)界面交互、圖形顯示、文件IO和網(wǎng)絡(luò)IO的函數(shù);根據(jù)本地計算機(jī)上應(yīng)用程序的可執(zhí)行程序,得到應(yīng)用程序的所有加載庫信息;52、拷貝可執(zhí)行程序及所有加載庫作為副本,傳輸?shù)椒?wù)器;53、修改服務(wù)器端可執(zhí)行程序,分離邏輯部分和顯示、IO部分部署分離動態(tài)鏈接庫到可執(zhí)行程序所在的目錄下,根據(jù)所有與人機(jī)交互、圖形顯示、網(wǎng)絡(luò)10、文件IO有關(guān)的函數(shù)調(diào)用來創(chuàng)建一個過濾列表,在可執(zhí)行程序文件里根據(jù)過濾列表查找需要修改的函數(shù)入口地址,將這些函數(shù)入口地址修改為指向分離動態(tài)鏈接庫;54、在服務(wù)器端部署修改后的可執(zhí)行程序及所有的加載庫;55、在本地端部署客戶端軟件。
2.如權(quán)利要求1所述的基于IO解耦的分布式部署應(yīng)用程序的實現(xiàn)方法,其特征在于 所述加載庫信息包括加載庫名字、函數(shù)入口地址、函數(shù)名字信息。
3.一種基于IO解耦的分布式部署應(yīng)用程序的實現(xiàn)系統(tǒng),其特征在于包括客戶端軟件、分離動態(tài)鏈接庫和虛擬程序管理單元,其中,所述分離動態(tài)鏈接庫位于服務(wù)器端的可執(zhí)行程序和系統(tǒng)動態(tài)鏈接庫之間,分離動態(tài)鏈接庫通過RPC將關(guān)于顯示、IO部分的函數(shù)調(diào)用轉(zhuǎn)移到本地端執(zhí)行,所述顯示、IO部分的函數(shù)包括所有涉及人機(jī)界面交互、圖形顯示、文件 IO和網(wǎng)絡(luò)IO的函數(shù);位于本地計算機(jī)的客戶端軟件通過網(wǎng)絡(luò)與分離動態(tài)鏈接庫連接,接收轉(zhuǎn)發(fā)過來的、與IO相關(guān)的函數(shù)調(diào)用,調(diào)用系統(tǒng)動態(tài)鏈接庫執(zhí)行這些函數(shù)調(diào)用,并返回結(jié)果給分離動態(tài)鏈接庫;位于非本地計算機(jī)的分離動態(tài)鏈接庫與客戶端軟件連接,將與IO相關(guān)的函數(shù)調(diào)用轉(zhuǎn)發(fā)給客戶端軟件并接收結(jié)果,同時將結(jié)果返回給應(yīng)用程序的可執(zhí)行文件,并通過調(diào)用本計算機(jī)的系統(tǒng)動態(tài)鏈接庫完成與IO無關(guān)的其他功能;虛擬程序管理單元用于修改第三方可執(zhí)行程序,傳輸、部署服務(wù)器端軟件和客戶端軟件。
4.如權(quán)利要求3所述的基于IO解耦的分布式部署應(yīng)用程序的實現(xiàn)系統(tǒng),其特征在于 所述虛擬程序管理單元常駐在計算機(jī)內(nèi)存中,以服務(wù)的方式隨機(jī)啟動。
5.如權(quán)利要求4所述的基于IO解耦的分布式部署應(yīng)用程序的實現(xiàn)系統(tǒng),其特征在于 每個計算機(jī)節(jié)點都部署有客戶端軟件、分離動態(tài)鏈接庫和虛擬程序管理單元。
6.如權(quán)利要求5所述的基于IO解耦的分布式部署應(yīng)用程序的實現(xiàn)系統(tǒng),其特征在于 所述虛擬程序管理單元包括分析模塊、分離模塊、傳輸模塊和監(jiān)控模塊,在本地計算機(jī)和服務(wù)器端啟動虛擬程序管理單元后,在本地計算機(jī)側(cè),用戶選擇應(yīng)用程序a作為虛擬程序?qū)ο螅凰龇治瞿K,用于根據(jù)應(yīng)用程序a的可執(zhí)行文件及所調(diào)用的動態(tài)鏈接庫查找所有調(diào)用的動態(tài)鏈接庫,獲取需要IO解耦的函數(shù)調(diào)用信息;所述傳輸模塊,用于將應(yīng)用程序a及所有的調(diào)用的動態(tài)鏈接庫拷貝到服務(wù)器端;所述分離模塊,用于用于修改應(yīng)用程序a,分離邏輯部分和顯示、IO部分部署分離動態(tài)鏈接庫到應(yīng)用程序a所在的目錄下,根據(jù)所有與人機(jī)交互、圖形顯示、網(wǎng)絡(luò)10、文件IO有關(guān)的函數(shù)調(diào)用來創(chuàng)建一個過濾列表;在應(yīng)用程序a的可執(zhí)行文件及所有的調(diào)用的動態(tài)鏈接庫里,根據(jù)過濾列表查找需要修改的函數(shù)入口地址;將這些函數(shù)入口地址修改為指向分離動態(tài)鏈接庫,將應(yīng)用程序a修改成al ;所述傳輸模塊,用于在本地部署客戶端軟件及系統(tǒng)動態(tài)鏈接庫。
7.如權(quán)利要求6所述的基于IO解耦的分布式部署應(yīng)用程序的實現(xiàn)系統(tǒng),其特征在于 所述虛擬程序的運行過程如下在本地以虛擬程序方式啟動應(yīng)用程序a,實質(zhì)上啟動客戶端軟件,客戶端軟件通過本地計算機(jī)的監(jiān)控模塊傳送啟動命令給服務(wù)器端的監(jiān)控模塊;服務(wù)器端的監(jiān)控模塊啟動應(yīng)用程序al,加載所有動態(tài)鏈接庫,包括分離動態(tài)鏈接庫,與本地客戶端軟件通過遠(yuǎn)程過程調(diào)用建立連接;用戶正常使用客戶端軟件,本地計算機(jī)的監(jiān)控模塊和服務(wù)器端的監(jiān)控模塊共同維護(hù)線路通暢,處理延時消息、重發(fā)消息;本地關(guān)閉客戶端軟件,本地計算機(jī)的監(jiān)控模塊傳送關(guān)閉命令給服務(wù)器端的監(jiān)控模塊,服務(wù)器端的監(jiān)控模塊傳送關(guān)閉命令給應(yīng)用程序al,應(yīng)用程序al收到關(guān)閉命令后關(guān)閉進(jìn)程退出運行,服務(wù)器端的監(jiān)控模塊監(jiān)測到應(yīng)用程序al的關(guān)閉,發(fā)送已關(guān)閉消息給本地計算機(jī)的監(jiān)控模塊,本地計算機(jī)的監(jiān)控模塊關(guān)閉客戶端軟件的運行。
全文摘要
本發(fā)明公開了一種基于IO解耦的分布式部署應(yīng)用程序的實現(xiàn)方法及系統(tǒng),涉及虛擬機(jī),該實現(xiàn)系統(tǒng)包括客戶端軟件、分離動態(tài)鏈接庫和虛擬程序管理單元,分離動態(tài)鏈接庫位于服務(wù)器端的可執(zhí)行程序和系統(tǒng)動態(tài)鏈接庫之間,分離動態(tài)鏈接庫通過RPC將關(guān)于顯示、IO部分的函數(shù)調(diào)用轉(zhuǎn)移到本地端執(zhí)行,顯示、IO部分的函數(shù)包括所有涉及人機(jī)界面交互、圖形顯示、文件IO和網(wǎng)絡(luò)IO的函數(shù)。本發(fā)明將應(yīng)用程序的邏輯部分與顯示、IO部分分離,不改變應(yīng)用程序的其他部分,使應(yīng)用程序虛擬化,虛擬的粒度相對較小,虛擬程序執(zhí)行效果跟本地程序一樣,與本地其他程序交互性比較好,減少虛擬機(jī)操作系統(tǒng)資源的消耗。
文檔編號G06F9/455GK103036959SQ20121052376
公開日2013年4月10日 申請日期2012年12月7日 優(yōu)先權(quán)日2012年12月7日
發(fā)明者陳浩, 陳亮, 王若舟, 肖凌 申請人:武漢郵電科學(xué)研究院