專利名稱:基于需求或遞增的遠程數據拷貝的制作方法
基于需求或遞增的遠程數據拷貝
背景技術:
從遠程位置檢索數據以在本地存儲的情形是各種各樣的。例如,用戶可能想要下載包含幾個壓縮文件的文件包(如ZIP文件或Windows鏡像文件格式(WM)的文件)。典型地,用戶請求從數據包源下載包,然后等待包下載。當包完成下載時,可以提取內容。這個過程的問題是在能夠對包的內容做任何事情之前,用戶典型地必須等待整個包下載。因此,ZIP文件可能包含許多文件,而用戶想要讀取其中的單個文件。為了讀取該單個文件,在用戶想要的這個文件可以被解壓縮和觀看之前,用戶典型地必須下載整個 ZIP文件。如果這個ZIP文件足夠大,那么下載會耗費幾分鐘或幾小時。
發明內容
包(如ZIP或WM文件)可以以對請求數據包內容的用戶或者應用來說是透明的方式以隨機順序訪問和下載。在一個示例中,文件或其他類型的數據被組合成數據包(如ZIP 或WIM文件)。元數據包括在該數據包中,所述元數據允許數據包的各部分被單獨訪問。該數據包的“各部分”可以是單獨的文件或者甚至是文件的各部分(子文件)。這個元數據可以用來確定數據包的哪些部分要被下載以便滿足對于數據包內容的特定請求。為了在支持文件使用的計算環境中使用包,包中的文件可以作為“稀疏”文件加入文件系統。稀疏文件可以是稍后要填充的內容的占位符,例如稀疏文件可以以名稱出現在文件夾中,即使該稀疏文件的內容在對應于該文件夾的存儲設備中并不存在。可以安裝過濾驅動器來截取對作為包的部分的文件的請求。因此如果用戶或應用請求得到作為包的一部份的文件,過濾驅動器會截取該請求以確定該文件的內容是否在本地存在。如果內容的確在本地存在,則允許文件系統以與處理對文件的任何其他請求相同的方式來處理該請求。如果內容不在本地存在,則可以用各種組件以對請求用戶或應用來說透明的方式獲取該內容。包處理機使用包文件(其在本地對包處理機來說是可用的)中的元數據確定包的什么部分要被獲取以便滿足請求。之后,包處理機使用傳輸處理機協商從包所在的源機器檢索該包。然后,傳輸處理機獲取包的被請求部分并且向包處理機提供對應于該部分的原始數據。隨后,包處理機解釋該原始數據并且將其轉換成用戶或應用正在請求的數據。 然后,包處理機通知合適的組件數據已經準備完畢,且允許從文件檢索數據的請求以正常的方式繼續進行。例如,如果已經使用稀疏文件為將要從包檢索的數據占用了位置,那么對該文件的讀取可以在該稀疏文件被來自包的實際數據填充后繼續進行。提供該發明內容是為了以簡化的形式介紹在下文的具體實施方式
中進一步描述的概念的選擇。該方面內容并不旨在確定所要求保護主題的關鍵特征或必要特征,也不旨在用來限定所要求保護主題的范圍。
圖I是其中包的各部分可以被請求的示例環境的框圖。
圖2是示例處理機配置的框圖。圖3是其中包可以被創建和使用的示例過程的框圖。圖4是可以結合本文所描述的主題的實現方式來使用的示例組件的框圖。
具體實施例方式在各種情形中,包含數據的包被遠程存儲且從遠程源檢索以供本地使用。例如,幾個文件可以被一起捆綁在ZIP或WM文件中。這些捆綁束將文件聚集成單個文件并且可以將它們壓縮至較小的尺寸。如果想要訪問存儲在ZIP或WIM文件中的文件之一,正常的做法是將整個包下載,然后使用ZIP或WM軟件來讀取和/或提取ZIP或WM文件中的文件。這個過程的一個問題是其通常涉及在可以使用ZIP或WIM文件的任何內容之前下載整個ZIP或WM文件。因此,如果用戶想要讀取單個文件,通常用戶不得不等待整個ZIP或 WIM文件下載,這(根據文件大小)可能會耗費幾分鐘或甚至幾小時。作為另一示例,應用可以利用存儲在ZIP或WM文件中的數據,并且可能僅僅想要從ZIP或WM文件中請求少量數據。同樣,為了提取被請求數據,通常必須獲取整個ZIP或WM文件。雖然ZIP和WM文件是以這種方式工作的包的一個示例,但是存在捆綁數據的各種其他示例,該捆綁數據在其單獨的單元可以被使用(例如用于軟件應用的安裝包)之前被下載。盡管一些解決方案可以允許各方對ZIP文件的內容執行某些類型的隨機訪問,但這些方案可能特定于特定領域或運行時間并且可能歪曲訪問方對ZIP文件的理解。因此, 被設計成用這樣的解決方案工作的ZIP文件可能僅僅能用這些解決方案工作,并且可能不能夠與正常的ZIP軟件一起使用。此外,這種解決方案可以支持對ZIP文件中的特定類型的單元的隨機訪問(例如“單元”可以是單個文件),但可能不會支持以比該文件更精細的粒度水平訪問信息(或者可能不會提供以比單個文件更精細的粒度水平識別特定數據的位置的機制)。本文所描述的主題考慮到存儲在包中的遠程資源的及時拷貝。ZIP文件和WM文件是這種包的示例,盡管本文所描述的技術可以用于其他類型的打包或捆綁的數據。在本文描述的主題中,包(如ZIP文件)可以創建為具有元數據,該元數據描述了其內容在文件和子文件級的位置。這種ZIP文件可以被任何ZIP軟件訪問就好像它是正常的ZIP文件。然而,也可以創建可以在文件的特定部分被請求時使用元數據檢索這些部分的軟件。ZIP文件可以與該元數據一起存儲在機器上,使得其他機器可以遠程訪問該ZIP文件。打包數據的使用可以在遠離包的存儲位置的機器上查找。該機器可以配置有各種組件,這些組件有利于包內容的隨機的及時檢索。這些組件可以包括過濾驅動器、作業管理器、包處理機以及傳輸處理機。在一個示例中,提出要安裝來自遠程存儲的ZIP文件的文件的請求,這導致本地“稀疏”文件的創建,該稀疏文件充當尚未下載的內容的占位符。當提出對這些稀疏文件之一的請求時,該請求可以被過濾驅動器截取。如果該稀疏文件先前已經用被請求內容填充,則過濾驅動器允許該請求繼續進行。否則,過濾驅動器將該請求傳遞到作業管理器。作業管理器確定文件的什么部分正在被請求(例如從0x5000至0x7000范圍字節偏移)。作業管理器將該請求發送到包處理機,該包處理機基于ZIP文件中的元數據確定ZIP文件的什么部分包含將會用于提供被請求內容的原始數據。然后包處理機請求傳輸處理機獲取ZIP文件的這些部分。傳輸處理機協商來自遠程源的數據的實際傳輸。一般來說,包處理機的作用是理解包中的原始數據是怎樣與被請求數據相對應的,而傳輸處理機的作用是理解怎樣從遠程存儲的包獲取原始數據。當傳輸處理機獲取原始數據時,其將該原始數據提供回包處理機。包處理機利用其對原始包數據怎樣與被請求數據相對應的知識以便將原始數據轉換成被請求數據。例如,在ZIP文件的情況下,包處理機可以解壓縮數據。由于包處理機理解包的性質(例如, 包中的元數據在哪里,元數據對于打包數據與其在包中的原始表示之間的對應性是怎樣表達的,在包中解壓縮表在哪里),包處理機可以利用這種理解將原始包數據轉換成被請求數據。當包處理機已經創建了被請求數據時,其通知作業管理器被請求數據是可用的。 然后,作業管理器可以采取適當動作。例如,在截取了要讀取尚未填充內容的稀疏文件的請求的過濾驅動器生成了對數據的請求的情況下,作業管理器將該數據提交給過濾驅動器。 然后,過濾驅動器可以將數據寫入稀疏文件,并且然后可以允許對于數據的原始待解決的請求繼續正常進行。利用這個過程,當在本地設備上實際查找數據時就可以獲取來自包的數據,而不是在使用前將整個包下載到本地設備。這項技術可以應用在網絡計算情境中以減少與包傳輸相關聯的網絡流量和/或等待時間。其也可以為用戶提供“即時滿意”,原因是用戶無須在能夠開始安裝以及使用應用之前等待例如下載大的安裝包。然而,這項技術也可以用在其他情形中,例如通過蜂窩電話系統獲取連接性的無線設備的情形,其中數據傳輸相對較慢并且在使用之前下載整個包可能是不現實的。在一個示例中,本文的主題可以作為后臺過程從包取得數據,即使該數據并沒有正在被請求。然而,該后臺過程可以讓位于實際用戶請求,從而使得實際正在被請求使用的數據優先下載,同時在帶寬閑置的時候在后臺下載包的其他部分。例如,如果包是一組應用且用戶從這一組應用中選擇了一個應用,作業管理器可以開始下載來自該應用的所有文件。然而,如果用戶想要使用該應用(或者更具體地,來自該應用的特定功能),那么用來實現該功能的文件可以被優先下載,該應用文件的其余部分的下載會作為后臺過程繼續進行。現在轉向附圖,圖I示出了其中可以請求包的各部分的示例環境。在圖I中示出了兩個示例機器102和106。機器102存儲包104。機器106是其上將會使用包104的內容的機器。通過來自用戶的直接請求、通過由應用提出的自動請求或者以任何其他方式,包 104的使用可以在機器106上發生。例如,用戶可以請求包104中的特定文件,或者應用可以請求包104中文件的特定部分。在一個示例中,包104可以是ZIP文件,盡管包104可以采用任何合適的形式。包104可以包含幾個文件。在圖I中示出了三個示例文件108、110以及120。包 104也可以包含元數據114,該元數據描述包104的內容。例如,元數據114可以包含關于各個文件在包104內的位置(方框116)的信息。作為另一示例,元數據114可以包含關于包 104的內容的子文件信息(方框118)。該子文件信息可以指示文件的各特定部分在包104內的位置在哪里,其中這些特定部分包含小于包格式支持的正常單元(例如一個文件)。例如, 如果想要讀取存儲在包104內的特定的便攜式文件格式(PDF)的文件,則僅知道在包104中該PDF文件存儲在哪里就足夠了。但是,如果想要讀取PDF的特定頁面,那么子文件信息可以指示該TOF中的特定頁面位于哪里,從而允許來自包104的各個頁面被檢索和使用。
在機器106上可以存在文件系統120。包104可以包含可以安裝在文件系統120 中的文件。因此,如果包104是將幾個文件打包在一起的ZIP文件,那么下載并解包ZIP 文件可能導致將一個或多個打包文件安裝到文件系統120。可以被文件系統120支持的一個類型的文件是稀疏文件,該文件可以包含大量的空白空間。稀疏文件可以用作包含在包 104中但尚未被下載的文件的占位符。因此,如果使用機器106的人指示他或她想要使用包 104,那么可以在文件系統120中創建稀疏文件,其中每個稀疏文件對應于包104中存儲的一個文件。然而,在任意的給定時間,稀疏文件可能不包含存儲在打包文件之一中的所有數據(或者可能甚至不包含存儲在打包文件之一中的任何數據)。在圖I的示例中,示出了三個稀疏文件122、124和126,盡管可以存在任意數量的稀疏文件。當實體128 (例如用戶或應用)提出要使用文件系統120中的文件(如稀疏文件) 之一的請求130時,處理機132確定是否要從存儲在機器102上的包104獲取信息。處理機132的結構和性質的示例將在下文中結合圖2進行討論。如果被請求文件已經包含被請求數據,那么該數據可以從機器106上的本地存儲器直接提供給實體128。然而,如果確定了被請求數據尚未獲取,那么處理機132可以發布對包104的內容的特定部分的請求134, 并且機器120可以通過將被請求部分136提供給處理機132來響應。然后,處理機132可以將被請求部分放置到合適的文件中(可能在處理過原始包數據之后,例如通過將其解壓縮)。然后,處理機132可以通知文件系統120被請求信息現在是可用的,從而允許實體128 的請求繼續進行。組件的任何合適的類型或配置都可以執行處理機132的功能。然而,圖2示出了處理機132的示例配置。在示出的示例中,處理機132包括過濾驅動器202、作業管理器204、包處理機206 以及傳輸處理機208。一般來說,過濾驅動器202與文件系統120交互并且截取文件訪問請求以確定滿足這些請求的數據是否在本地存在,或者該數據是否必須從遠程包獲取。如果滿足請求的數據在本地存在,那么過濾驅動器202通過正常機制允許該請求繼續進行,這種請求通過這種機制被處理。否則,過濾驅動器202發動該過程以獲取文件的被請求部分。 獲取文件的被請求部分的動作可以由其他組件來執行,例如作業管理器204、包處理機206 以及傳輸處理機208。當確定了要獲取包的一部分以便滿足對文件的請求時,向作業管理器204提出所述請求。作業管理器204接收什么信息正在被請求的指示,并且將該請求確定(formulate) 為特定范圍的數據。例如,如果正在請求PDF文件的第10頁,作業管理器204可以確定組成第10頁的數據存儲在PDF文件的字節0x5000至0x7000中。基于這種確定,作業管理器 204向包處理機206指示要獲取該文件的字節0x5000至0x7000。包處理機206是理解包結構的組件。特別地,包處理機206可以確定包(例如包 104)的什么部分包含與特定文件范圍對應的材料。將被理解的是,特定TOF文件的諸如“字節0x5000至0x7000”之類的描述僅僅標識了重構文件的特定部分,但并沒有直接描述該信息在包104中的什么地方、怎樣可以從包104獲取該信息、或者將使用什么其他信息(例如壓縮表)重構來自包104的該信息。包處理機206使用元數據114來確定使用包104的什么部分獲取并重構正在被請求的數據。然后,包處理機206可以調用傳輸處理機208檢索包處理機已經確定的將被用于重構被請求數據的包數據。傳輸處理機208可以利用通信信道210以獲取包數據。通信信道210可以包括各種硬件組件(例如網卡、機器間的有線或無線連接等)以及軟件組件(例如網絡驅動器、TCP-IP軟件等),這些組件用來促進機器間的通f目。將被理解的是,決定包的什么部分包含特定數據與實際檢索數據的機制是分離的。包處理機206以及傳輸處理機208可以是執行這些截然不同的功能的分離組件。當傳輸處理機208獲取原始包數據時,其將該數據提供給包處理機206。然后,包處理機206可以將該數據重構成作業管理器204請求的數據。例如,如果原始包包含壓縮形式的數據以及解壓縮表,那么包處理機206可以使用該解壓縮表來解壓縮該數據。當數據已被重構時,包處理機206將該重構數據提供給作業管理器204。作業管理器204在了解到被請求數據現在可用時可以將該數據放置到合適的文件中(例如通過填充圖I所示的稀疏文件)。(或者,在另一個示例中,作業管理器204可以使其他某個組件(如過濾驅動器 202)將數據放置到合適的文件中)。作業管理器204可以通知過濾驅動器202被請求數據現在可用,并且然后過濾驅動器202可以允許對該數據的請求繼續進行。圖3以流程圖的形式示出了其中數據包可以被創建并使用的示例過程。在轉向圖 3的描述之前,應該注意的是圖3中包含的流程圖是通過示例并參考圖1、2示出的組件來描述的,盡管該過程可以在任何系統中執行并且不限于圖1、2示出的情形。此外,圖3的流程圖示出了一個示例,在給示例中過程的各階段都以如連接各方框的線所指示的特定的順序執行,但是該圖中示出的各種階段可以以任意的順序、或者以任意的組合或子組合來執行。在302處,可以打包數據。在一個示例中,所述數據是一組文件,并且這些文件可以被打包成為ZIP或WM文件。在304處,元數據可以包括在文件中。該元數據可以描述這些文件的位置,以及包含處于子文件粒度水平的信息(例如,元數據不僅可以指定PDF文件 “a. pdf”在包中位于什么地方,而且指定比如該PDF文件第7頁位于什么地方)。應該注意的是這種類型的元數據可能僅僅對于能夠利用它的系統有意義,但是包括這種元數據并不妨礙其他系統使用包。也就是說,包括額外元數據以識別包的子文件級的各部分的ZIP文件(或者其包括以某種方式促進包的各部分按需求傳輸的元數據)并不妨礙該ZIP文件是否符合ZIP文件的標準規范。合適的系統(例如圖2描述的處理機)可能能夠利用該元數據。 然而,如果特定的系統(例如較陳舊的ZIP文件讀取器)不知道這種類型的元數據(并且因此不能利用它),這種元數據存在將不會妨礙系統讀取ZIP文件的能力。因此,較陳舊的系統可能不能使用元數據按需求檢索文件的各部分,但是仍將能夠檢索包含在包中的文件。在306處,可以使包為可用的。例如,包可以放置在共享文件服務器上,使得允許其他人(例如公眾或企業社區成員等)訪問該包。在308處,該過程等待對于打包數據的請求。例如可以存在一個機器(例如圖I的機器106),在該機器上用戶或應用可能想要利用打包的數據。如果當前沒有正在接收這種請求(如在308處所確定的),那么該過程可以能動地從包檢索一些數據(在310處)。(即使當前沒有數據正在從包被檢索,也可以能動地檢索數據以填充文件而不是允許帶寬閑置。 以此方式,可以更快地滿足對該數據的未來請求)。如果正在接收對數據的請求,那么(在312處)正在被請求的數據部分被識別。例如,如果該請求是針對例如PDF文件的特定頁面的,那么在312處確定文件中什么范圍的字節包含那個頁面。這個決定可以例如由上文結合圖2描述的作業管理器做出,但也可以由任何合適的組件做出。在314處,對應于被請求的字節范圍的原始包數據被識別。例如,如果確定了 PDF 文件的被請求頁面位于字節0x5000至0x7000處,那么在314處可以確定PDF文件中這個范圍的字節對應于包中原始數據的0x2457BB至0x247F2A的范圍。這個確定可以例如由上文結合圖2描述的包管理器做出,但也可以由任何合適的組件做出。在316處,從包源檢索被識別的原始數據。例如,上文結合圖2描述的傳輸管理器可以執行該檢索,盡管該檢索可以由任何合適的組件執行。在318處,重構被檢索的原始數據以產生被請求的數據。例如,原始數據的重構可以涉及從ZIP文件或WIM文件解壓縮被壓縮的數據。在320處,可以將被請求的數據提供給合適的組件。例如,可以將被請求的數據提供給文件系統以存儲在文件中。在322處,可以使用被請求數據。例如,被請求數據可以顯示在顯示設備上、傳送給用戶、存儲在持久的非暫態的存儲器中,或者另外以某種方式被有形地使用。盡管本文的主題可以在任何情形或情境中用于支持包內容的傳輸,然而下文是其中本文的主題可以使用的一些示例情形。在一個示例中,包是安裝包(例如用來安裝應用或其他可執行組件的包),并且本文所描述的技術用來加速安裝。通常,在開始實際安裝包含在包中的軟件之前完整地下載安裝包。然而,安裝過程一般一次僅僅利用包中的少量組件,因此有可能下載足夠的組件以開始安裝,然后在安裝者請求其他組件或者期待安裝過程中的下一個動作時下載其他組件。在另一個示例中,本文所描述的技術可以用來逐漸地在本地機器上填充文件。因此,起初可以創建稀疏文件(或其他某個類型的文件的占位符表示),并且本文所描述的系統可以隨時間從包檢索內容并且利用這些內容填充文件。可以使該過程對于用戶來說是透明的,使得從用戶的角度看,文件好像可以很快地變得可用(例如在感覺不到的時間量內)。此外,應該注意的是本文所提供的技術的使用可以應用于各種傳輸協議(例如超文本傳輸協議[HTTP]、安全超文本傳輸協議[HTTPS]、服務器消息塊[SMB]等),以及各種包容器格式(例如ZIP、WIM等)。此外,本文所描述的技術可以允許在子文件級訪問包內容而無需將文件分段。理論上可以將單獨文件分解為幾個可以分別訪問的文件,從而提供了子文件級訪問的形式。然而,以這種方式將文件分段可能與許多軟件解決方案(例如許多ZIP 讀取器)不兼容,原因是包格式的一般模型(如ZIP)假定打包在ZIP中的每個文件作為單個文件出現在ZIP中;許多ZIP讀取器在提取時不會知道將這幾個文件放回在一起,原因是它們不會知道,為了將這些文件打包成ZIP的目的,單個文件可能已經被分解成幾個文件。本文所描述的技術可以提供在打包文件內識別子文件級位置的分離的元數據,從而允許包讀取器(例如ZIP讀取器)把包中的每個文件當作單個文件對待,同時允許知道該附加元數據的讀取器使用該元數據對文件進行子文件級的訪問。盡管上述內容一般地是按照通過網絡從遠程位置檢索包方面來描述的,但是本文所描述的技術可以用在其他配置中。例如,包可以存儲在DVD或者其他類型的光學存儲介質上。圖4示出了其中可以部署本文所描述的主題的各方面的示例環境。計算機400包括一個或多個處理器402以及一個或多個數據記憶組件404。處理器402典型地是微處理器,例如在個人臺式或便攜式計算機、服務器、手持式計算機或其他種類的計算設備中找到的微處理器。數據記憶組件404是能夠短期或長期地存儲數據的組件。數據記憶組件404的示例包括硬盤、可移動盤(包括光盤和磁盤)、易失性和非易失性隨機存取存儲器(RAM)、只讀存儲器(ROM)、閃速存儲器、磁帶等。數據記憶組件是計算機可讀存儲介質的示例。計算機400可以包括顯示器412或與之相關聯,該顯示器可以是陰極射線管(CRT)監視器、液晶顯示器(LCD)監視器或任何其他類型的監視器。軟件可以存儲在數據記憶組件404中,且可以在一個或多個處理器402上執行。這種軟件的示例是數據包軟件406,其可以實現一些或所有上文結合圖1-3描述的功能,盡管任何類型的軟件都可以使用。軟件406可以例如通過一個或多個組件來實現,所述組件可以是分布式系統中的組件、分離文件、分離功能、分離對象、分離的代碼行等。計算機(例如個人計算機、服務器計算機、手持式計算機等)代表了圖4所描述的情形,在該計算機中程序存儲在硬盤上、加載到RAM中且在計算機的處理器上執行,盡管本文所描述的主題并不限于本示例。本文所描述的主題可以被實現為存儲在一個或多個數據記憶組件404中且在一個或多個處理器402上執行的軟件。作為另一示例,主題可以被實現為存儲在一個或多個計算機可讀存儲介質上的指令。諸如光盤或磁盤之類的有形介質是存儲介質的示例。指令可以存在于非暫態介質上。這種指令在被計算機或其他機器執行時可以使該計算機或其他機器執行方法的一個或多個動作。執行動作的指令可以存儲在一個介質上或者可以分布在多個介質上,使得該指令可以全體出現在一個或多個計算機可讀存儲介質上,不管是否所有的指令都碰巧在同一介質上。應該注意的是“存儲”信號的介質(可以稱為“存儲介質”) 與對比而言包含或傳輸傳播信號的介質之間是存在區別的。DVD、閃速存儲器、磁盤等是存儲介質的示例。另一方面,信號短暫存在于其上的電線或光纖是暫態信號介質的示例。此外,本文所描述的任何動作(不管是否在圖中示出)可以作為方法的一部分由處理器(例如一個或多個處理器402)執行。因此,如果動作A、B和C在本文中描述,那么可以執行包括該動作A、B和C的方法。此外,如果動作A、B和C在本文中描述,那么可以執行包括利用處理器執行該動作A、B和C的方法。在一個示例環境中,計算機400可以通過網絡408通信地連接到一個或多個其他設備。可能與計算機400結構相似的計算機410是可以連接到計算機400的設備的示例, 盡管其他類型的設備也可以被這樣連接。盡管所述主題已經以特定于結構特征和/或方法動作的語言被描述,但是應當理解,所附權利要求中限定的主題并不必局限于上述特定特征或動作。相反,上述特定特征和動作是作為實現權利要求的示例形式而被公開的。
權利要求
1.一種從包獲取數據的方法,該方法包括從實體(128)接收(308)對來自包(104)的第一數據的請求,所述包(104)的格式允許多個數據單元(108,110,112)存儲在單個包中,所述第一數據小于所述單元(108,110, 120)的單個單元;識別(312)所述包(104)中第一單元的哪個第一部分包含所述第一數據;識別(314)所述包(104)的哪個第二部分用來創建所述第一部分,所述第二部分與所述第一部分不同;從所述包(104)獲取(316)所述第二部分;使用(318)所述第二部分創建所述第一部分;以及將所述第一部分提供(320)給所述實體(128)。
2.根據權利要求I的方法,其中所述包中的每個數據單元是文件,其中所述方法進一步包括為所述包中的每個文件創建稀疏文件;其中,所述請求的所述接收包括從所述實體接收要讀取第一稀疏文件的一部分的請求,其中所述部分小于對應于所述第一稀疏文件的所述包中的整個文件。
3.根據權利要求I的方法,其中所述包包括要安裝的軟件,以及其中所述方法進一步包括在所述包的全部被下載到進行所述安裝的機器之前,從所述包開始所述軟件的安裝, 其中在所述包的各部分要被用于所述安裝時,所述實體請求所述各部分。
4.根據權利要求I的方法,其中所述方法進一步包括在沒有收到對于所述包的各部分的特定請求的情況下,能動地檢索所述各部分。
5.一種具有執行權利要求1-4中任一項的方法的計算機可執行指令的計算機可讀介質。
6.一種用于從包獲取數據的系統,該系統包括存儲器(404);處理器(402);第一組件(204),該組件存儲在所述存儲器(404)中且在所述處理器(402)上執行,其中所述第一組件(204)接收對于來自包(104)的第一數據的請求(134),所述包(104)的格式允許多個數據單元(108,110,112)存儲在單個包中,所述第一數據小于所述單元(108, 110,112)的單個單元,其中所述第一組件(204)識別所述包(104)中的第一單元(108)的哪個第一部分包含所述第一數據;第二組件(206),該組件存儲在所述存儲器(404)中且在所述處理器(402)上執行,其中所述第二組件(206)識別所述包的哪個第二部分用來創建所述第一部分,所述第二部分與所述第一部分不同;以及第三組件(208),該組件使用通信信道以獲取來自所述包(104)的所述第二部分,其中所述第二組件接收來自所述第三組件的所述第二部分,使用所述第二部分創建所述第一部分,并且將所述第一部分提供給實體(128),所述請求(134)從該實體接收。
7.根據權利要求6的系統,其中所述包的每個數據單元是文件,進一步包括支持稀疏文件的文件系統,其中所述文件系統為所述包中的每個文件創建稀疏文件,其中所述第一組件接收要讀取第一稀疏文件的一部分的請求,其中所述部分小于對應于所述第一稀疏文件的所述包中的整個文件。
8.根據權利要求6的系統,其中所述包中的每個單元是文件,其中所述格式支持在所述包內識別文件但并不支持在子文件級識別所述包的內容,其中所述包包括識別所述包內容的各子文件部分的元數據,以及其中利用所述元數據識別所述第二部分。
9.根據權利要求6的系統,其中所述格式支持所述包內的分離文件的存儲但并不支持所述包的子文件部分的識別,以及其中所述包包括元數據,該元數據允許所述包的子文件部分在沒有將單獨文件分解為多個文件的情況下被識別。
10.根據權利要求6的系統,其中所述包中的每個單元是文件,其中所述包包括識別所述包內容的各子文件部分的元數據,其中所述格式不支持所述包各部分的子文件識別,以及其中所述元數據包括在所述包中,使得不妨礙由不能使用所述元數據識別所述包的各子文件部分的讀取器使用所述包。
全文摘要
文件或其他數據可以存儲在包中,并且該包的內容可以被遞增地和/或基于需求檢索。在一個示例中,文件被打包成ZIP文件或相似類型的包。此外,將元數據加入所述數據包中,該元數據描述在子文件級的所述包的內容,從而允許文件的各部分被適當配置的軟件檢索。當所述包將要用在本地機器上時,可以在該機器上創建占位符文件,這些文件在稍后時間將會被包內容填充。當提出對數據包中數據的請求時,如果該數據在本地并不存在,那么提出對于特定數據(可能在子文件級)的請求,并且占位符文件用實際的包數據填充。
文檔編號H04L29/08GK102594867SQ201110437080
公開日2012年7月18日 申請日期2011年12月23日 優先權日2010年12月24日
發明者D.拉普爾, T.埃爾多根, T.布爾丹 申請人:微軟公司