午夜毛片免费看,老师老少妇黄色网站,久久本道综合久久伊人,伊人黄片子

遠(yuǎn)程存儲本地執(zhí)行的軟件使用方法、系統(tǒng)、服務(wù)器及客戶端的制作方法

文檔序號:6431775閱讀:224來源:國知局
專利名稱:遠(yuǎn)程存儲本地執(zhí)行的軟件使用方法、系統(tǒng)、服務(wù)器及客戶端的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及云計算應(yīng)用領(lǐng)域,尤其涉及一種遠(yuǎn)程存儲本地執(zhí)行的軟件使用方法、 系統(tǒng)、服務(wù)器及客戶端。
背景技術(shù)
云計算就是一種通過互聯(lián)網(wǎng)向使用者提供IT資源的應(yīng)用模式。在這一模式中,使用者如何利用“云”端提供的資源是決定云計算應(yīng)用前景的關(guān)鍵技術(shù)之一。在現(xiàn)階段,云計算應(yīng)用的客戶端到云解決方案主要有遠(yuǎn)程虛擬機訪問、Web應(yīng)用與中間件應(yīng)用三種模式,尤其以前兩大模式為主。但這些模式存在兼容性與高性能不可兼得的問題,限制了云計算的推廣使用。遠(yuǎn)程虛擬機訪問模式,如Amazon提供的EC2,就是在云計算中心運行各類虛擬機以及虛擬機上的應(yīng)用軟件,并通過遠(yuǎn)程桌面訪問協(xié)議來給用戶提供訪問與使用接口。一方面,用戶可以靈活的按需部署其所需的虛擬機資源;同時因為虛擬機屏蔽了底層硬件系統(tǒng)的差異,所以這一模式可以兼容現(xiàn)有軟件,即用戶可以通過遠(yuǎn)程虛擬機訪問模式來使用云端的現(xiàn)有軟件資源。但另一方面,在這一模式下虛擬機及其上的軟件實際上是運行在云計算中心的服務(wù)器上(簡稱云端,下同),用戶所在的客戶端僅僅是作為一個圖形界面來使用,這樣就存在著網(wǎng)絡(luò)響應(yīng)延遲以及遠(yuǎn)程集中計算所可能引起的性能降低問題,尤其是前者對于桌面軟件的操作而言是致命的,而且難以通過高速網(wǎng)絡(luò)建設(shè)來解決——延遲主要取決于網(wǎng)絡(luò)傳輸經(jīng)過的hop數(shù)目,而不僅僅是帶寬。Web模式,如Google App Engine,則是以客戶端的瀏覽器為主要運行平臺, 通過一系列Web 2.0程序(與云端相配合)來提供全面的應(yīng)用解決方案,著名的有G oogleDoc&SpreadSheet, Web OS等。這樣,應(yīng)用是運行在本地瀏覽器上,性能較高,但是現(xiàn)有的軟件卻無法被直接使用,需要重新開發(fā),因此兼容性不好。中間件應(yīng)用模式以微軟推出的^ure云計算服務(wù)平臺為代表,用戶需要采用.Net 技術(shù)來實現(xiàn)基于該平臺的應(yīng)用(不限于web應(yīng)用),因此同樣存在著兼容性問題。由此可見,現(xiàn)有模式存在應(yīng)用兼容性與運行高性能不可兼得的問題,限制了云計算的推廣使用。

發(fā)明內(nèi)容
基于這些現(xiàn)有模式的分析,本發(fā)明提出了一種新的軟件使用方法、系統(tǒng)、服務(wù)器及客戶端,使得現(xiàn)有軟件不用修改源代碼就能夠遠(yuǎn)程存儲(在云端)、本地(客戶端)運行,實現(xiàn)兼容性與高性能的兼得。根據(jù)本發(fā)明的第一方面,提供一種遠(yuǎn)程存儲本地執(zhí)行的軟件使用方法,所述軟件運程存儲于云端并能夠在本地客戶端執(zhí)行,該方法包括步驟一確定按需軟件運行時所需要的軟件資源,其中按需軟件被定義為無需將所述軟件運行所需要的軟件資源注入到本地客戶端操作系統(tǒng)就能在本地客戶端運行;
其中所述軟件資源包括以下三個部分第一部分,所有由本地客戶端操作系統(tǒng)提供的已有軟件資源;第二部分,軟件運行過程所創(chuàng)建、修改的軟件資源;第三部分,軟件運行過程中創(chuàng)建新的軟件資源或者修改的第一和/或第二部分的軟件資源,其中第一部分軟件資源由本地客戶端操作系統(tǒng)提供,且該操作系統(tǒng)為初始安裝的操作系統(tǒng);其中第二部分軟件資源通過在上述初始安裝的操作系統(tǒng)上安裝目標(biāo)軟件,記錄下安裝過程所創(chuàng)建、修改的軟件資源并將其單獨存儲而提供;第三部分軟件資源按照如下方式獲得,通過使用系統(tǒng)調(diào)用插裝顯示用戶層虛擬化運行環(huán)境,從而實時截獲所述軟件運行時的系統(tǒng)調(diào)用,并將系統(tǒng)調(diào)用重定向到軟件資源的實際存儲位置,步驟二 采用用戶層文件系統(tǒng)將遠(yuǎn)程存儲于云端的按需軟件的存儲位置加載為本地客戶端的一個虛擬文件系統(tǒng)從而可以在本地客戶端直接啟動按需軟件。根據(jù)本發(fā)明第一方面,其中用戶層文件系統(tǒng)定義為在系統(tǒng)內(nèi)核空間插入文件系統(tǒng)過濾驅(qū)動,截獲所有的文件系統(tǒng)訪問請求,將其中的訪問目標(biāo)位于虛擬文件系統(tǒng)上的所有訪問請求重定向到用戶空間,由用戶層文件系統(tǒng)來完成實質(zhì)的數(shù)據(jù)/元數(shù)據(jù)訪問于操作。根據(jù)本發(fā)明第一方面,其中用戶層虛擬化運行環(huán)境定義為在本地客戶端操作系統(tǒng)之上通過系統(tǒng)調(diào)用包裹,在應(yīng)用與系統(tǒng)之間實現(xiàn)一個虛擬層,由該虛擬層來重新實現(xiàn)或者擴展原有的系統(tǒng)調(diào)用,從而實現(xiàn)不同的功能,其中通過應(yīng)用程序透明插裝來實現(xiàn)應(yīng)用層虛擬化,對可遷移軟件的相關(guān)軟件資源訪問API進(jìn)行包裹,實現(xiàn)虛擬資源層。根據(jù)本發(fā)明第一方面,其中所述虛擬資源層對各類軟件資源進(jìn)行如下訪問操作(1)所有讀取操作都在存儲的當(dāng)前位置完成;(2)如果是修改操作,則采取Copy-on-Write機制,即首先將被修改的軟件資源移至第三部分軟件資源所在的位置,再進(jìn)行修改,從而避免對于本地資源的直接修改;(3)瀏覽或者枚舉操作則分別列出這三個部分的相關(guān)內(nèi)容并進(jìn)行合并;如果有重復(fù)項,其優(yōu)先級從高往低依次是第三部分、第二部分、第一部分。根據(jù)本發(fā)明第二方面,提供一種遠(yuǎn)程存儲本地執(zhí)行的軟件使用系統(tǒng),所述軟件運程存儲于云端并能夠在本地客戶端執(zhí)行,該系統(tǒng)包括第一裝置,用于確定按需軟件運行時所需要的軟件資源,其中按需軟件被定義為無需將所述軟件運行所需要的軟件資源注入到本地客戶端操作系統(tǒng)就能在本地客戶端運行;其中所述軟件資源包括以下三個部分第一部分,所有由本地客戶端操作系統(tǒng)提供的已有軟件資源;第二部分,軟件運行過程所創(chuàng)建、修改的軟件資源;第三部分,軟件運行過程中創(chuàng)建新的軟件資源或者修改的第一和/或第二部分的軟件資源,其中第一部分軟件資源由本地客戶端操作系統(tǒng)提供,且該操作系統(tǒng)為初始安裝的操作系統(tǒng);
其中第二部分軟件資源通過在上述初始安裝的操作系統(tǒng)上安裝目標(biāo)軟件,記錄下安裝過程所創(chuàng)建、修改的軟件資源并將其單獨存儲而提供;其中第三部分軟件資源按照如下方式獲得,通過使用系統(tǒng)調(diào)用插裝顯示用戶層虛擬化運行環(huán)境,從而實時截獲所述軟件運行時的系統(tǒng)調(diào)用,并將系統(tǒng)調(diào)用重定向到軟件資源的實際存儲位置,第二裝置,用于采用用戶層文件系統(tǒng)將遠(yuǎn)程存儲于云端的按需軟件的存儲位置加載為本地客戶端的一個虛擬文件系統(tǒng)從而可以在本地客戶端直接啟動按需軟件。根據(jù)本發(fā)明第二方面,其中用戶層文件系統(tǒng)定義為在系統(tǒng)內(nèi)核空間插入文件系統(tǒng)過濾驅(qū)動,截獲所有的文件系統(tǒng)訪問請求,將其中的訪問目標(biāo)位于虛擬文件系統(tǒng)上的所有訪問請求重定向到用戶空間,由用戶層文件系統(tǒng)來完成實質(zhì)的數(shù)據(jù)/元數(shù)據(jù)訪問于操作。根據(jù)本發(fā)明第二方面,其中用戶層虛擬化運行環(huán)境定義為在本地客戶端操作系統(tǒng)之上通過系統(tǒng)調(diào)用包裹,在應(yīng)用與系統(tǒng)之間實現(xiàn)一個虛擬層,由該虛擬層來重新實現(xiàn)或者擴展原有的系統(tǒng)調(diào)用,從而實現(xiàn)不同的功能,其中通過應(yīng)用程序透明插裝來實現(xiàn)應(yīng)用層虛擬化,對可遷移軟件的相關(guān)軟件資源訪問API進(jìn)行包裹,實現(xiàn)虛擬資源層。根據(jù)本發(fā)明第二方面,其中所述虛擬資源層對各類軟件資源進(jìn)行如下訪問操作(1)所有讀取操作都在存儲的當(dāng)前位置完成;(2)如果是修改操作,則采取Copy-on-Write機制,即首先將被修改的軟件資源移至第三部分軟件資源所在的位置,再進(jìn)行修改,從而避免對于本地資源的直接修改;(3)瀏覽或者枚舉操作則分別列出這三個部分的相關(guān)內(nèi)容并進(jìn)行合并;如果有重復(fù)項,其優(yōu)先級從高往低依次是第三部分、第二部分、第一部分。根據(jù)本發(fā)明第三方面,提供一種應(yīng)用本發(fā)明第二方面的服務(wù)器。根據(jù)本發(fā)明第四方面,提供一種應(yīng)用本發(fā)明第二方面的客戶端。本發(fā)明技術(shù)方案的技術(shù)效果如下本發(fā)明提出了一種新的軟件使用模式,使得現(xiàn)有軟件不用修改源代碼就能夠遠(yuǎn)程存儲、本地(客戶端)運行,實現(xiàn)兼容性與高性能的兼得?!矫?,用戶可以以使用本地軟件的模式來直接使用這些存儲在遠(yuǎn)程的軟件;另一方面,軟件本地運行,能夠充分客戶端的處理能力,降低服務(wù)端負(fù)載;再者,因為軟件存儲在遠(yuǎn)程,用戶可以在不同的機器上使用其習(xí)慣使用的軟件而無需安裝。


圖1示意性示出了按需軟件運行時候所需要的軟件資源及用戶層虛擬化運行環(huán)境框圖;圖2示意性示出了根據(jù)本發(fā)明所述方法的流程圖;圖3示意性示出了根據(jù)本發(fā)明所述系統(tǒng)的框圖;圖4示意性示出了根據(jù)本發(fā)明的用戶層文件系統(tǒng)的數(shù)據(jù)訪問;圖5示意性示出了根據(jù)本發(fā)明的用戶層虛擬化環(huán)境中應(yīng)用程序操作注冊表的流程圖,以及圖6示意性示出了根據(jù)本發(fā)明的用戶層虛擬化環(huán)境中應(yīng)用程序操作注冊表的另一流程圖。五具體實施例方式接下來,將參考圖1-6對本申請進(jìn)行詳細(xì)的描述。本領(lǐng)域技術(shù)人員應(yīng)該清楚,本發(fā)明不限于這些示出的實施方式,而是本發(fā)明還包括各種修改和實施方式。因此,應(yīng)將本描述看作示范性而非限制性。雖然易于對本發(fā)明進(jìn)行各種修改和替換構(gòu)造,但是應(yīng)該理解,不存在將本發(fā)明限制到具體公開形式的意圖,相反,本發(fā)明覆蓋落在如由權(quán)利要求書限定的本發(fā)明的精神和范圍內(nèi)的修改、替換構(gòu)造和等同物。實現(xiàn)軟件存儲于云端(稱之為遠(yuǎn)程軟件,下同)并能夠在本地運行這一方案的關(guān)鍵在于分離軟件的運行環(huán)境與存儲位置(分別在客戶端與云端),使得現(xiàn)有軟件不修改代碼,就能夠透明的訪問非本地資源,且完全在本地運行。為實現(xiàn)這一方案,需要解決兩個關(guān)鍵問題(一 )解決現(xiàn)有軟件無需安裝就能運行的問題。( 二)解決這類軟件在網(wǎng)絡(luò)環(huán)境下的透明使用問題。(一 )解決現(xiàn)有軟件無需安裝就能運行的問題是整個方案的前提。一般情況下,大多數(shù)軟件需要在本地安裝后才能運行。而在上述的遠(yuǎn)程虛擬機模式或者Web模式中,使用者均不需要在本地實際安裝所需使用的軟件,而是通過遠(yuǎn)程客戶端軟件或者瀏覽器來使用云端提供的軟件應(yīng)用。因此在本模式中必須實現(xiàn)軟件無需安裝就能本地執(zhí)行的功能。軟件安裝的過程實際上就是把軟件運行所需的資源注入到操作系統(tǒng)中??梢源_定,只要能夠讓軟件完全透明地訪問到這些資源,軟件不用安裝就可以運行。一般而言,一個軟件運行所關(guān)系到的軟件資源(對于Windows系統(tǒng),資源一般指文件與注冊表;而對于Linux等系統(tǒng),則主要是文件資源)可分為三個部分(1)第一部分指的是所有由本地操作系統(tǒng)提供的已有資源(而不是新安裝的);(2)第二部分包含軟件安裝過程所創(chuàng)建、修改的資源;(3)軟件運行過程中會創(chuàng)建新資源或者修改1)與2~)的資源,這些被歸為第三部分。因此,要使得軟件不用安裝就能在本地運行(這些軟件稱為按需軟件,下同),其必須能夠在不安裝的前提下可以直接訪問到這三部分資源,本文稱之為“按需訪問”。這樣就可以把問題1)的解決方案分成兩步,一是分離出這三個部分;二是使之可按需訪問。本發(fā)明只支持用戶在兼容的計算機上使用,所以客戶端操作系統(tǒng)默認(rèn)為可以提供第一部分資源,無需對其做特殊處理;對于第二部分,本發(fā)明采用軟件安裝監(jiān)控的方法—— 在一個新安裝的操作系統(tǒng)上安裝目標(biāo)軟件,記錄下安裝過程所創(chuàng)建/修改的資源并將其單獨存儲,從而可以獲得完整的第二部分。對于第三部分,使用系統(tǒng)調(diào)用插裝的方法實現(xiàn)用戶層的虛擬化運行環(huán)境,從而可以實時截獲軟件運行實例的系統(tǒng)調(diào)用,并將系統(tǒng)調(diào)用重定向到資源的實際存儲位置,也即這一部分的分離與按需訪問是一并實現(xiàn)的。詳細(xì)介紹如下用戶層虛擬化運行環(huán)境,指的是在操作系統(tǒng)之上通過系統(tǒng)調(diào)用包裹等方法,在應(yīng)用與系統(tǒng)之間實現(xiàn)一個虛擬層,由該虛擬層來重新實現(xiàn)或者擴展原有的系統(tǒng)調(diào)用,從而實現(xiàn)不同的功能。此處所需的主要功能是對于軟件各部分資源的按需訪問。
本發(fā)明采用應(yīng)用程序透明插裝的方法實現(xiàn)應(yīng)用層虛擬化,對可遷移軟件的相關(guān)資源訪問API (如文件/目錄/注冊表相關(guān)的系統(tǒng)調(diào)用)等進(jìn)行包裹,實現(xiàn)虛擬資源層。這一虛擬資源層對各類資源訪問的處理流程是(1)所有讀取操作都在存儲的當(dāng)前位置完成;(2)如果是修改操作,則采取Copy-on-Write機制,即首先將被修改的資源移至第三部分所在的位置,再進(jìn)行修改,從而避免對于本地資源的直接修改;(3)瀏覽或者枚舉操作則分別列出這三個部分的相關(guān)內(nèi)容并進(jìn)行合并;如果有重復(fù)項,其優(yōu)先級從高往低依次是第三部分、第二部分、第一部分。具體的“應(yīng)用程序透明插裝的方法”詳見本發(fā)明優(yōu)選實施例的說明。( 二)解決這類軟件在網(wǎng)絡(luò)環(huán)境下的透明使用問題。接下來需要解決的問題就是如何對用戶提供一個透明、友好的界面來訪問與操作 “按需軟件”。本發(fā)明采用用戶層文件系統(tǒng)技術(shù)來提供解決方案,其將遠(yuǎn)程的按需軟件的存儲位置加載為客戶端本地的一個虛擬文件系統(tǒng),這種方式對于使用者與軟件而言都是透明的。用戶層文件系統(tǒng)一般是指在系統(tǒng)內(nèi)核空間插入文件系統(tǒng)過濾驅(qū)動,截獲所有的文件系統(tǒng)訪問請求,將其中的訪問目標(biāo)位于虛擬文件系統(tǒng)上的所有訪問請求重定向到用戶空間,由一個用戶層文件系統(tǒng)程序來完成實質(zhì)的數(shù)據(jù)/元數(shù)據(jù)訪問與操作。這種方式的優(yōu)點在于其開發(fā)工作可以避開復(fù)雜的內(nèi)核編程而在用戶空間實現(xiàn),而且與操作系統(tǒng)的耦合度較小,如圖2所示。本發(fā)明的用戶層文件系統(tǒng)的總體運行策略是1)讀操作會被定向到遠(yuǎn)程位置以獲取數(shù)據(jù);2)對于任何寫操作,Copy-on-ffrite機制被觸發(fā)整個目標(biāo)文件將會從遠(yuǎn)程被取回來,緩存于本地,后續(xù)操作會直接針對這個本地版本進(jìn)行。具體的“用戶層文件系統(tǒng)實現(xiàn)方法”詳見本發(fā)明優(yōu)選實施例的說明。本發(fā)明優(yōu)選實施例針對Windows應(yīng)用軟件,本發(fā)明的一個實施例如下運行環(huán)境客戶端是一臺安裝有Windows XP的PC機;遠(yuǎn)程的用于存儲按需軟件的服務(wù)器是一臺運行Windows 2003 krver的X86服務(wù)器,安裝有Apache Web服務(wù)。兩者間通過互聯(lián)網(wǎng)連接。支持的遠(yuǎn)程軟件=OpenOffice,VLC、7Zip、UltraEdit, ClamWin(反病毒程序)、 FileZilla、Gimp開源的圖形編輯器)、Coolplayer等具體的實施流程如下——1)確定軟件運行時所需的資源軟件運行所需要的資源(指的是第二部分資源),就是軟件安裝后的系統(tǒng)與原系統(tǒng)的差集,必須把這個集合成功地抽取出來。為實現(xiàn)上述目的,我們在一臺剛安裝完系統(tǒng)的Windows XP系統(tǒng)上安裝軟件——在安裝前采用系統(tǒng)快照方式,掃描操作系統(tǒng)的資源狀態(tài)并保存下來;安裝后,再掃描一次,并與安裝之前的快照進(jìn)行比較,從而可以得到軟件安裝過程中對操作系統(tǒng)的修改,并將修改分為文件系統(tǒng)資源與注冊表資源兩類,分別單獨存儲起來。
具體的存儲方式為假設(shè)安裝一個名為AppA的軟件,其默認(rèn)的安裝目錄為C Aprogram file\AppA,并且在系統(tǒng)注冊表的\HKEY_CURRENT_USER\Software\AppA下存儲了其注冊表資源。那么通過快照方式,我們就把其所有安裝的文件拷貝到服務(wù)器的一個單獨目錄下,設(shè)為d 遠(yuǎn)程目錄\program file\AppA ;同時將其注冊表資源存于一個文件中,放于服務(wù)器的d : \遠(yuǎn)程目錄\注冊表\AppA目錄下。2)用戶層虛擬化的實現(xiàn)為程序構(gòu)建用戶層虛擬化環(huán)境的關(guān)鍵在于對其訪問相關(guān)資源的系統(tǒng)調(diào)用的截獲與插裝,這些系統(tǒng)調(diào)用包括對文件、注冊表等系統(tǒng)配置、資源的訪問。仍以AppA為例,因為我們不對AppA程序本身進(jìn)行修改(所謂兼容性就體現(xiàn)在這兒),這樣AppA運行的時候就會在\HKEY_CURRENT_USER\Software\AppA下訪問其注冊表資源(文件資源也是類似),如果不處理的話訪問肯定是失敗的(因為客戶端上沒有安裝,實際的資源在服務(wù)器上)。這就要對這些系統(tǒng)調(diào)用進(jìn)行包裹,并且使這個過程對程序本身透明。本實施例在應(yīng)用程序的執(zhí)行文件中插入代碼,通過重寫所要包裹的系統(tǒng)調(diào)用在文件中的入口來實現(xiàn)系統(tǒng)調(diào)用插裝。這樣一旦應(yīng)用程序使用此調(diào)用,就會先進(jìn)入插入的代碼,由后者進(jìn)行適當(dāng)?shù)奶幚砗笤僬{(diào)用真正的系統(tǒng)函數(shù)或直接返回。微軟的開發(fā)工具Detours可以通過為目標(biāo)函數(shù)重寫在內(nèi)存中的代碼從而截獲Win32系統(tǒng)調(diào)用以實現(xiàn)這一功能,其他類似的工具還有不少。適當(dāng)?shù)奶幚砹鞒痰墓8乓言谇笆鰞?nèi)容給出給出,不是一般性,這兒以注冊表訪問為例來給出詳細(xì)流程本實施例對軟件安裝時修改的注冊表項進(jìn)行分類處理。一種是向系統(tǒng)注冊表添加的注冊表項,把這一類記作AddecLRegistry ;另一種是對系統(tǒng)注冊表已有項進(jìn)行修改,把這一類記作Modified_Registry。兩者的內(nèi)容統(tǒng)稱為Private_Registry。本實施例實現(xiàn)了一組針對!Private—Registry操作的調(diào)用接口(以MyReg_XXXX() 表不),以 Private 表不 Private_Registry, Local 表不 Windows Registry, RealReg_XXX () 表示原裝的Windows系統(tǒng)調(diào)用。本實施例主要包裹Windows中與注冊表相關(guān)的部分API,基本涵蓋了應(yīng)用程序?qū)ψ员淼乃胁僮?。我們針對?yīng)用程序操作注冊表對象的屬性,選擇不同的操作策略。如圖5所示,注冊表操作為讀操作(包括RegQueryValue、RegEnumKey、 RegEnumValue, RegQueryInfoKey),若操作對象存在于私有配置中,則調(diào)用MyReg—XXX(); 若操作對象存在于Modified_Registry,則在必要時需要同時操作Local和I^rivate,然后返回合并之后的信息;若既不是AddecLRegistry也不是ModifiecLRegistry,則直接調(diào)用 RealReg—XXXO 操作 Local。如圖6所示,若注冊表操作為寫操作(包括RegCreateKey、RegDeleteKey, RegSetValue。RegDeleteValue等),則流程與讀類似,但刪除操作例外。刪除的對象為 Added_Registry 時,直接調(diào)用 MyReg—XXX ()刪除 Private ;刪除對象為 Modified, Regsitry時,除了刪除I^ivate,還需要置一標(biāo)志位表示該項已被刪除;若刪除對象為 Local,則只是置一標(biāo)志位表示該項已被刪除,并不真正刪除此項。3)用戶層文件系統(tǒng)的實現(xiàn)在本實施例中,用戶層文件系統(tǒng)把遠(yuǎn)程服務(wù)器上的存儲按需軟件的目錄映射為本地的一個虛擬盤(如把服務(wù)器上的d:\遠(yuǎn)程目錄“!“呢儀!!! file\映射為本地的X盤),這樣使用者可以像直接啟動本地已安裝的軟件那樣,直接啟動按需軟件。我們使用針對Windows系統(tǒng)的開源用戶層文件系統(tǒng)開發(fā)框架DOKAN來實現(xiàn)這一用戶層文件系統(tǒng)。DOKAN提供了一個內(nèi)核文件系統(tǒng)訪問過濾模塊,同時要求開發(fā)者針對其接口開發(fā)一個用戶層文件系統(tǒng)程序,該程序需要實現(xiàn)一系列的文件訪問回調(diào)函數(shù)(callback function),其中絕大多數(shù)與Windows的文件系統(tǒng)API相對應(yīng),包括CreateFile、CloseFile、 ReadFile JriteFILE、FindFiles等。這樣一旦內(nèi)核文件系統(tǒng)訪問過濾模塊截獲到針對X盤的文件訪問請求,就可以回調(diào)用戶層文件系統(tǒng)程序?qū)崿F(xiàn)的相應(yīng)函數(shù)進(jìn)行實際的數(shù)據(jù)處理。在這個實施例中,遠(yuǎn)程服務(wù)器就是一個普通的HTTP服務(wù)器所有的數(shù)據(jù)讀取,都被轉(zhuǎn)換為HTTP的GET請求。選擇HTTP作為后端主要是出于實現(xiàn)簡便性考慮,而不是設(shè)計上的必須——即也可以使用其他的數(shù)據(jù)發(fā)布機制作為服務(wù)端存儲。具體的處理流程如下——任何一個存儲于該用戶層虛擬文件系統(tǒng)之上的文件都被賦予一個屬性——· Remote 該文件存于遠(yuǎn)程服務(wù)端;· New 該文件是新建的或者是被修改過的;· Deleted 已被刪除。當(dāng)某個用戶的文件系統(tǒng)第一次被啟動時,所有的文件與目錄都被認(rèn)為具有remote 屬性,即存儲在服務(wù)端。在運行過程中,當(dāng)任何文件/目錄被刪除時,這些文件/目錄屬性會被設(shè)為deleted (而不是物理上被刪除)。任何修改或者新創(chuàng)建的文件則會被至為new。 特別的,當(dāng)某一遠(yuǎn)程文件被修改時,它會首先被下載到本地緩存,后續(xù)操作將針對此本地版本進(jìn)行。用戶層虛擬文件系統(tǒng)的整個運行過程如下所述 系統(tǒng)初始化
用戶選擇某一按需軟件部署后,虛擬文件系統(tǒng)首先下載這個按需軟件的元數(shù)據(jù)包。后者包括該軟件的所有文件、目錄的層次結(jié)構(gòu)信息、路徑名、以及文件屬性(大小、訪問權(quán)限、時間戳等)。因為服務(wù)端實際上是個只讀存儲,這類元數(shù)據(jù)包可以事先在服務(wù)端壓縮好,以隨時訪問。原型系統(tǒng)的測試表明,元數(shù)據(jù)包壓縮后的尺寸非常有限系統(tǒng)中的所有按需軟件共有約11600個文件(包括目錄),包壓縮后的大小為190KB。下載完成后,虛擬文件系統(tǒng)程序會在本地某個事先指定的位置創(chuàng)建一個“錨文件目錄”(anchor folders)在這一目錄下,按需軟件所有的文件(包括目錄)均會被創(chuàng)建,其目錄結(jié)構(gòu)、名字、文件屬性均與服務(wù)端的一樣;唯一的區(qū)別在于所有的“錨文件”都是空的。與前一工作比較,這一設(shè)計的優(yōu)點在于所有與文件元數(shù)據(jù)相關(guān)的操作(如 SetFileAttributes/GetFileAttributes/SetFileTime/FindxxxFile 等)可以直接在“錨文件系統(tǒng)”上完成,使得虛擬文件系統(tǒng)程序?qū)W⒂谔幚頂?shù)據(jù)操作;同時,“錨文件”也可以直接作為相應(yīng)文件的緩存以簡化其管理。 運行時總的設(shè)計原則是服務(wù)端的內(nèi)容為只讀;客戶端采用Copy-onirite機制,即任何用戶使用軟件過程中的修改都存于本地的錨文件系統(tǒng),包括新文件/新目錄以及修改的原有遠(yuǎn)程文件。幾個主要函數(shù)的操作流程如下
(I)CreateFile如果一個新的文件被創(chuàng)建,則其被賦予new屬性,且存于錨文件目錄中;如果一個remote文件被打開且被清空,其被賦予new屬性,原先的remote屬性無效,該文件存于錨文件目錄中;如果一個屬性為new的文件被打開,那么所有的后續(xù)操作都會在本地完成;如果是一個remote文件被打開,后續(xù)操作如何完成取決于其操作的具體類型。(2) WriteFi Ie如果是針對屬性為new的文件,則寫入的內(nèi)容保存在本地(的錨文件目錄中)。如果是針對remote文件,則整個文件會首先被下載到本地緩存,后續(xù)操作將針對此本地版本進(jìn)行,其屬性置為new。(3) ReadFile如果是針對屬性為new的文件,則在本地完成讀取。如果是針對remote文件,那么就從遠(yuǎn)程服務(wù)器讀取,而且數(shù)據(jù)會緩存在本地,以便下次使用。(4) FindFiles因為所有的元數(shù)據(jù)信息已經(jīng)提前獲得,而且所有的new屬性文件都在本地,所以這個操作可以直接在錨文件目錄中完成。 系統(tǒng)退出用戶層文件系統(tǒng)退出時,所有的“錨文件系統(tǒng)”內(nèi)容以及所有的文件屬性都會被保存在客戶端本地以便下次使用。 本地緩存為管理方便起見,所有遠(yuǎn)程文件訪問的數(shù)據(jù)大小與起始位置都被設(shè)為8KB的整數(shù)倍,而所獲取的數(shù)據(jù)塊(8KB的整數(shù)倍)都將被緩存在本地(即錨文件目錄中)。本地緩存(錨文件目錄)保存有二類數(shù)據(jù),一是具有new屬性文件的數(shù)據(jù)(即屬于本地修改的或者新創(chuàng)建的文件);二是具有remote屬性文件的緩存于本地的數(shù)據(jù)。第一類數(shù)據(jù)實際上就是一個完整的文件,可以對其進(jìn)行直接的文件層次訪問;重點是第二類數(shù)據(jù)——本實施例維護(hù)了單獨的緩存信息,以文件的全路徑名為鍵值,建立一個Hash表,來記錄哪些文件的哪些數(shù)據(jù)塊已被緩存。進(jìn)一步的,每個文件的歷史訪問信息都被記錄下來。 當(dāng)本地緩存的總?cè)萘拷咏到y(tǒng)預(yù)設(shè)的上限時,會向用戶提出警告以擴大容量,或者采用LRU 策略來刪除文件以騰出空間;但是第一類數(shù)據(jù)是不會被刪除的。4)性能測試在上述的運行環(huán)境下部署了本實施例,這樣使用者就可以以使用本地軟件的模式來直接使用按需軟件。測試表明,如果客戶端與服務(wù)器都部署在某大學(xué)的校園網(wǎng)內(nèi),那么在客戶端本地緩存為空(相當(dāng)于是這個系統(tǒng)第一次運行)時,按需軟件啟動時間被大大延長平均是基準(zhǔn)時間(即如果相同的軟件被安裝在本地,直接啟動)的7. 65倍。這是因為本地緩存為空, 導(dǎo)致大量的虛擬文件系統(tǒng)訪問被轉(zhuǎn)換為遠(yuǎn)程HTTP訪問。而在運行測試中,這一狀況好了很多運行時間平均被延長約87%。這是因為啟動過程緩存了大量數(shù)據(jù)。
一次運行后,再次運行一遍并記錄時間(相當(dāng)于在緩存已填充的情況下運行)。這一測試情況好了很多啟動時間被延長了約90% ;而運行時的額外時間開銷僅為12%。這明顯歸功于第一次運行已將大部分所需數(shù)據(jù)填入了本地緩存,使得遠(yuǎn)程數(shù)據(jù)訪問次數(shù)大大降低。另外,第一次運行后本地緩存的容量為260MB,而所有測試軟件的總的大小為 900MB。本發(fā)明技術(shù)方案帶來的有益效果本發(fā)明提出了一種新的軟件使用模式,使得現(xiàn)有軟件不用修改源代碼就能夠遠(yuǎn)程存儲、本地(客戶端)運行,實現(xiàn)兼容性與高性能的兼得。一方面,用戶可以以使用本地軟件的模式來直接使用這些存儲在遠(yuǎn)程的軟件;另一方面,軟件本地運行,能夠充分客戶端的處理能力,降低服務(wù)端負(fù)載;再者,因為軟件存儲在遠(yuǎn)程,用戶可以在不同的機器上使用其習(xí)慣使用的軟件而無需安裝。本發(fā)明的技術(shù)關(guān)鍵點 采用用戶層虛擬化技術(shù)在不改變軟件的前提下,實現(xiàn)了其運行時訪問所需資源的重定向; 采用虛擬文件系統(tǒng)技術(shù),使得按需軟件在網(wǎng)絡(luò)環(huán)境下的能被直接使用; 采用Copy-on-write技術(shù)與本地緩存技術(shù),使得運行時按需軟件的修改以及經(jīng)常訪問的數(shù)據(jù)被緩存于本地,提升了實際的使用性能。雖然已經(jīng)示出并描述了本發(fā)明的各種優(yōu)選實施方式,但是應(yīng)當(dāng)清楚地理解本發(fā)明不限于此,而是可以多樣地具體化在以下權(quán)利要求書的范圍內(nèi)實現(xiàn)。根據(jù)上述描述,應(yīng)當(dāng)理解可以進(jìn)行各種改變而不脫離如由權(quán)利要求書限定的本發(fā)明的精神和范圍。
權(quán)利要求
1.一種遠(yuǎn)程存儲本地執(zhí)行的軟件使用方法,所述軟件運程存儲于云端并能夠在本地客戶端執(zhí)行,該方法包括步驟一確定按需軟件運行時所需要的軟件資源,其中按需軟件被定義為無需將所述軟件運行所需要的軟件資源注入到本地客戶端操作系統(tǒng)就能在本地客戶端運行; 其中所述軟件資源包括以下三個部分 第一部分,所有由本地客戶端操作系統(tǒng)提供的已有軟件資源; 第二部分,軟件運行過程所創(chuàng)建、修改的軟件資源;第三部分,軟件運行過程中創(chuàng)建新的軟件資源或者修改的第一和/或第二部分的軟件資源,其中第一部分軟件資源由本地客戶端操作系統(tǒng)提供,且該操作系統(tǒng)為初始安裝的操作系統(tǒng);其中第二部分軟件資源通過在上述初始安裝的操作系統(tǒng)上安裝目標(biāo)軟件,記錄下安裝過程所創(chuàng)建、修改的軟件資源并將其單獨存儲而提供;其中第三部分軟件資源按照如下方式獲得,通過使用系統(tǒng)調(diào)用插裝顯示用戶層虛擬化運行環(huán)境,從而實時截獲所述軟件運行時的系統(tǒng)調(diào)用,并將系統(tǒng)調(diào)用重定向到軟件資源的實際存儲位置,步驟二 采用用戶層文件系統(tǒng)將遠(yuǎn)程存儲于云端的按需軟件的存儲位置加載為本地客戶端的一個虛擬文件系統(tǒng)從而可以在本地客戶端直接啟動按需軟件。
2.如權(quán)利要求1所述的方法,其中用戶層文件系統(tǒng)定義為在系統(tǒng)內(nèi)核空間插入文件系統(tǒng)過濾驅(qū)動,截獲所有的文件系統(tǒng)訪問請求,將其中的訪問目標(biāo)位于虛擬文件系統(tǒng)上的所有訪問請求重定向到用戶空間,由用戶層文件系統(tǒng)來完成實質(zhì)的數(shù)據(jù)/元數(shù)據(jù)訪問操作。
3.如權(quán)利要求1所述的方法,其中用戶層虛擬化運行環(huán)境定義為在本地客戶端操作系統(tǒng)之上通過系統(tǒng)調(diào)用包裹,在應(yīng)用與系統(tǒng)之間實現(xiàn)一個虛擬層,由該虛擬層來重新實現(xiàn)或者擴展原有的系統(tǒng)調(diào)用,從而實現(xiàn)不同的功能,其中通過應(yīng)用程序透明插裝來實現(xiàn)應(yīng)用層虛擬化,對可遷移軟件的相關(guān)軟件資源訪問API進(jìn)行包裹,實現(xiàn)虛擬資源層。
4.如權(quán)利要求3所述的方法,其中所述虛擬資源層對各類軟件資源進(jìn)行如下訪問操作(1)所有讀取操作都在存儲的當(dāng)前位置完成;(2)如果是修改操作,則采取Copy-onirite機制,即首先將被修改的軟件資源移至第三部分軟件資源所在的位置,再進(jìn)行修改,從而避免對于本地資源的直接修改;(3)瀏覽或者枚舉操作則分別列出這三個部分的相關(guān)內(nèi)容并進(jìn)行合并;如果有重復(fù)項,其優(yōu)先級從高往低依次是第三部分、第二部分、第一部分。
5.一種遠(yuǎn)程存儲本地執(zhí)行的軟件使用系統(tǒng),所述軟件運程存儲于云端并能夠在本地客戶端執(zhí)行,該系統(tǒng)包括第一裝置,用于確定按需軟件運行時所需要的軟件資源,其中按需軟件被定義為無需將所述軟件運行所需要的軟件資源注入到本地客戶端操作系統(tǒng)就能在本地客戶端運行; 其中所述軟件資源包括以下三個部分 第一部分,所有由本地客戶端操作系統(tǒng)提供的已有軟件資源; 第二部分,軟件運行過程所創(chuàng)建、修改的軟件資源;第三部分,軟件運行過程中創(chuàng)建新的軟件資源或者修改的第一和/或第二部分的軟件資源,其中第一部分軟件資源由本地客戶端操作系統(tǒng)提供,且該操作系統(tǒng)為初始安裝的操作系統(tǒng);其中第二部分軟件資源通過在上述初始安裝的操作系統(tǒng)上安裝目標(biāo)軟件,記錄下安裝過程所創(chuàng)建、修改的軟件資源并將其單獨存儲而提供;其中第三部分軟件資源按照如下方式獲得,通過使用系統(tǒng)調(diào)用插裝顯示用戶層虛擬化運行環(huán)境,從而實時截獲所述軟件運行時的系統(tǒng)調(diào)用,并將系統(tǒng)調(diào)用重定向到軟件資源的實際存儲位置,第二裝置,用于采用用戶層文件系統(tǒng)將遠(yuǎn)程存儲于云端的按需軟件的存儲位置加載為本地客戶端的一個虛擬文件系統(tǒng)從而可以在本地客戶端直接啟動按需軟件。
6.如權(quán)利要求5所述的系統(tǒng),其中用戶層文件系統(tǒng)定義為在系統(tǒng)內(nèi)核空間插入文件系統(tǒng)過濾驅(qū)動,截獲所有的文件系統(tǒng)訪問請求,將其中的訪問目標(biāo)位于虛擬文件系統(tǒng)上的所有訪問請求重定向到用戶空間,由用戶層文件系統(tǒng)來完成實質(zhì)的數(shù)據(jù)/元數(shù)據(jù)訪問于操作。
7.如權(quán)利要求5所述的系統(tǒng),其中用戶層虛擬化運行環(huán)境定義為在本地客戶端操作系統(tǒng)之上通過系統(tǒng)調(diào)用包裹,在應(yīng)用與系統(tǒng)之間實現(xiàn)一個虛擬層,由該虛擬層來重新實現(xiàn)或者擴展原有的系統(tǒng)調(diào)用,從而實現(xiàn)不同的功能,其中通過應(yīng)用程序透明插裝來實現(xiàn)應(yīng)用層虛擬化,對可遷移軟件的相關(guān)軟件資源訪問API進(jìn)行包裹,實現(xiàn)虛擬資源層。
8.如權(quán)利要求7所述的系統(tǒng),其中所述虛擬資源層對各類軟件資源進(jìn)行如下訪問操作(1)所有讀取操作都在存儲的當(dāng)前位置完成;(2)如果是修改操作,則采取Copy-on-Write機制,即首先將被修改的軟件資源移至第三部分軟件資源所在的位置,再進(jìn)行修改,從而避免對于本地資源的直接修改;(3)瀏覽或者枚舉操作則分別列出這三個部分的相關(guān)內(nèi)容并進(jìn)行合并;如果有重復(fù)項,其優(yōu)先級從高往低依次是第三部分、第二部分、第一部分。
9.一種應(yīng)用如權(quán)利要求5-8任意所述系統(tǒng)的服務(wù)器。
10.一種應(yīng)用如權(quán)利要求5-8任意所述系統(tǒng)的客戶端。
全文摘要
本發(fā)明提供一種遠(yuǎn)程存儲本地執(zhí)行的軟件使用方法、系統(tǒng)、服務(wù)器及客戶端。所述軟件運程存儲于云端并能夠在本地客戶端執(zhí)行,該方法包括步驟一確定按需軟件運行時所需要的軟件資源,步驟二采用用戶層文件系統(tǒng)將遠(yuǎn)程存儲于云端的按需軟件的存儲位置加載為本地客戶端的一個虛擬文件系統(tǒng)以至于在本地客戶端直接啟動按需軟件。使得現(xiàn)有軟件不用修改源代碼就能夠遠(yuǎn)程存儲、本地(客戶端)運行,實現(xiàn)兼容性與高性能的兼得。
文檔編號G06F9/44GK102279748SQ201110250468
公開日2011年12月14日 申請日期2011年8月29日 優(yōu)先權(quán)日2011年8月29日
發(fā)明者焦秀琴 申請人:焦秀琴
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1