針對本地和遠程數據的透明訪問機制的製作方法
2023-08-09 21:05:26 1
專利名稱:針對本地和遠程數據的透明訪問機制的製作方法
針對本地和遠程數據的透明訪問機制
背景技術:
對於包括傳統個人計算機以及個人數字助理、蜂窩電話等在內的現代計算設備而言,網絡通信能力已經變得隨處可見。結果,這樣的計算設備所採用的有所增加的信息量從在物理上與這樣的計算設備分離並且通過一個或多個網絡與之建立通信的存儲設備所獲得。類似地,這樣的計算設備所創建的有所增加的信息量也經常並不存儲在與該計算設備自身同處一地的存儲介質上,而是存儲在與這樣的計算設備物理分離並且通過網絡通信與這樣的計算設備通信連接的存儲媒體上。存儲在聯網存儲媒體上並從那裡加以利用的信息能夠提供優於本地存儲信息的好處,所述聯網存儲媒體諸如一個或多個伺服器計算設備的存儲媒體。例如,可從聯網存儲媒體獲得的信息能夠由多個不同計算設備所訪問,這樣的訪問經常是同時的,由此支持更大的共享和協同能力。類似地,存儲在一個或多個伺服器計算設備上的存儲媒體上的信息能夠接收到提供給那些伺服器計算設備的支持的實際的好處,例如包括數據冗餘、數據備份、不可中斷電源以及其它類似的好處。然而,不幸的是,存儲在聯網存儲媒體上並且從那裡加以利用的信息與本地存儲的信息相比同樣會具有缺陷。最值得注意的是,針對能夠通過其與聯網存儲媒體進行通信的網絡的訪問並非是一直可用的。此外,數據跨網絡的提供會受到各種延遲的影響,而所述延遲在數據存儲於計算設備本地的存儲介質上時通常並不存在。這樣的延遲可以包括網絡吞吐量、網絡等待時間以及聯網存儲媒體無法以有效方式同時向大量進行請求的客戶端提供數據。傳統上,軟體應用程式的開發人員必須事先決定包括其軟體應用程式的計算機可執行指令是否將嘗試訪問存儲在這樣的計算機可執行指令在其上執行的計算設備本地的數據或者它們是否將嘗試訪問遠程存儲在諸如聯網存儲媒體上的數據。這樣的開發人員通常所採用的不同函數調用和訪問方法取決於他們的應用程式所嘗試訪問的數據存儲在哪裡。
發明內容
在一個實施例中,一種單獨的統一訪問機制能夠透明地提供對所請求數據的訪問而無論該數據是在計算設備本地還是其遠程存儲,所述計算設備執行包括該統一訪問機制的計算機可執行指令。所述統一訪問機制能夠利用所請求數據的命名空間來確定該數據是可本地獲得還是要從遠程位置獲取。在另一個實施例中,所述統一訪問機制能夠與同步機制相整合,所述同步機制能夠保持本地存儲數據和遠程存儲數據之間的等同以使得針對本地存儲數據的改變能夠自動反映在遠程存儲數據中。在另外的實施例中,即使在計算設備執行包括從包括遠程存儲數據的網絡斷開通信連接的統一訪問機制的計算機可執行指令時,所述統一訪問機制也能夠對本地存儲的數據進行編輯。隨後重新連接至網絡能夠使得所述同步機制依據對本地存儲數據所執行的編輯來更新遠程存儲數據。
提供本發明內容用於以簡化形式引入將在下面的具體實施方式
中進一步描述的一系列概念。本發明內容並非旨在確定要求保護的主題的關鍵因素或必要特徵,也不旨在用來限制要求保護的主題的範圍。從以下參考附圖所進行的詳細描述,另外的特徵和優勢將是顯而易見的。
當配合附圖時可以最好地理解以下具體實施方式
。圖I是示例性計算設備的框 圖2是示例性統一訪問機制的一種示例性在線操作的框 圖3是示例性統一訪問機制的另一種示例性在線操作的框 圖4是示例性統一訪問機制的一種示例性離線操作的框 圖5是示例性統一訪問機制的另一種示例性離線操作的框 圖6是示例性統一訪問機制的一種示例性操作的流程圖;和 圖7是示例性統一訪問機制的另一種示例性操作的流程圖。
具體實施例方式以下描述涉及一種統一訪問機制,其對執行該統一訪問機制的計算設備上本地存儲的數據以及在計算設備遠程存儲的數據提供透明訪問。該統一訪問機制能夠基於所請求·數據的命名空間來識別數據是否能夠本地獲取。本地存儲的數據可以通過同步機制而與遠程存儲的數據相同步,所述同步機制能夠與該統一訪問機制相整合。如果執行統一訪問機制的計算設備失去到網絡的連接,則針對本地存儲的數據所進行的編輯隨後在網絡連接重新建立時能夠透明地與遠程存儲的數據同步。雖然以下描述針對統一訪問機制在諸如超文本傳輸協議(HTTP)的具體普遍協議以及諸如網際網路的具體普遍網絡的環境內的實施方式,但是它們並非局限於此。特別地,所描述的機制在協議和網絡兩方面是不可知論的(agnostic),並且能夠以與以下對任意協議或網絡所描述的相同的方式進行操作。這樣,對HTTP、網際網路或網站的引用意味著僅是示例性而並非指示對所描述機制的任何具體限制。雖然並未要求,但是以下的描述將處於一個或多個計算設備所執行的諸如程序模塊之類的計算機可執行指令的一般環境之中。更具體地,除非另外指出,否則該描述將參考由一個或多個計算設備或外設所執行的動作以及操作的符號表示。這樣,將要理解的是,有時被指為被計算機執行的這樣的動作和操作包括由以結構化形式表示數據的電信號的處理單元所進行的操控。該操控對數據進行變換或者將其維護在存儲器中的位置,這以本領域技術人員非常理解的方式重新配置或以其它方式改變計算設備或外設的操作。維護數據的數據結構是具有數據格式所定義的特定屬性的物理位置。通常,程序模塊包括執行特定任務或者實現特定抽象數據類型的例程、程序、對象、組件、數據結構等。此外,本領域技術人員將會意識到的是,計算設備無需局限於常規的個人計算機,而是包括其他計算配置,包括手持設備、多處理系統、基於未出具利器的或可編程的消費者電器、網絡PC、小型計算機、大型計算機等。類似地,計算設備無需局限於獨立計算設備,因為該機制也可以在分布式計算環境中進行實踐,其中任務由通過通信網絡進行連結的遠程處理設備所執行。在分布式計算環境中,程序模塊可以位於本地和遠程存儲器存儲設備中。轉向圖1,示出了示例性計算設備100。示例性計算設備100可以包括一個或多個中央處理單元(CPU) 120、系統存儲器130,以及將包括系統存儲器在內的各種系統組件耦接至處理單元120的系統總線121。系統總線121可以是若干類型的總線結構的任一個,包括存儲器總線或存儲器控制器、外圍總線以及使用各種總線架構的任一個的局部總線。計算設備100通常還包括計算機可讀媒體,其可以包括可由計算設備100所訪問的任意可用媒體,並且包括易失性和非易失性媒體以及可移動和非可移動媒體。作為示例而非限制,計算機可讀媒體可以包括計算機存儲媒體和通信媒體。計算機存儲媒體包括以用於存儲諸如計算機可讀指令、數據結構、程序模塊或其它數據之類的信息的任意方法或技術所實施的媒體。計算機存儲媒體包括RAM、ROM、EEPR0M、快閃記憶體或其它存儲器技術、CD-ROM、數字多功能盤(DVD)或其它光碟存儲、磁性盒帶、磁帶、磁碟存儲或其它磁性存儲設備,或者能夠被用來存儲所期望信息並且能夠被計算設備100所訪問的任意其它介質,但 是並不局限於此。通信媒體通常以諸如載波或其它傳輸機制的經調製數據信號來體現計算機可讀指令、數據結構、程序模塊或其它數據,並且包括任意信息傳遞媒體。作為示例而非限制,通信媒體包括諸如有線網絡或直接線路連接的有線媒體,以及諸如聲音、RF、紅外和其它無線媒體的無線媒體。以上的任意組合也可以包括在計算機可讀媒體的範圍之內。系統存儲器130包括諸如只讀存儲器(R0M)131和隨機訪問存儲器(RAM)132之類的易失性和/或非易失性存儲器形式的計算機存儲媒體。基本輸入/輸出系統133(BI0S)通常存儲在ROM 131中,其包含諸如在啟動期間有助於在計算設備100內的元素之間傳輸信息的基本例程。RAM 132通常包含可由處理單元120立即訪問和/或當前由其進行操作的數據和/或程序模塊。作為示例而非限制,圖I圖示了作業系統134、其它程序模塊135和程序數據136。程序模塊135可以包括一個或多個應用程式,諸如第三方應用181,其可以由可由中央處理器120依據本領域技術人員已知的機制進行執行的計算機可執行指令所構成。程序模塊135還可以包括本地HTTP伺服器182,其可以對包括本地數據183和遠程數據171在內的數據提供統一訪問,這將在以下更為詳細地進行描述。雖然被示出為程序模塊135的一部分,但是本地HTTP伺服器182同樣可以是作業系統134的一部分,或者可以是作業系統134的組件和其它程序模塊的混合。程序數據136可以包括本地數據183,在一個實施例中,其可以是對於其它客戶端計算設備而言有意義的數據,並且因此可以被遠程存儲以使得其能夠被那些其它客戶端計算設備所訪問。例如,本地數據183可以包括用戶可能希望從多個計算設備而不僅僅是客戶端計算設備100進行訪問的聯繫信息。作為另一個示例,本地數據183可以包括用戶可能希望在除客戶端計算設備100之外的其它計算設備上加以利用或者被提供以對其的訪問的書籤或其它應用設置。計算設備100還可以包括其它可移動/非可移動、易失性/非易失性計算機存儲媒體。僅作為示例,圖I圖示了硬碟驅動器141,其從非可移動的、非易失性磁性媒體進行讀取並且向其進行寫入。可以隨示例性計算設備使用的其它可移動/非可移動、易失性/非易失性計算機存儲媒體包括磁帶盒、快閃記憶體卡、數字多功能盤、數字視頻帶、固態RAM、固態ROM等,但是並不局限於此。硬碟驅動器141通常通過諸如接口 140的非可移動存儲器接口連接至系統總線121。
以上所討論以及在圖I中圖示的驅動器及其相關聯的計算機存儲媒體為計算設備100提供了計算機可讀指令、數據結構、程序模塊和其它數據的存儲。例如,在圖I中,硬碟驅動器141被圖示為存儲作業系統144、其它程序模塊145和程序數據146。注意,這些組件可以與作業系統134、其它程序模塊135和程序數據136相同或不同。作業系統144、其它程序模塊145和程序數據146在這裡被給予不同附圖標記以最低程度說明了它們為不同副本。這樣,程序模塊145的第三方應用191和本地HTTP伺服器192,以及程序數據146的本地數據193同樣被給予不同附圖標記而以最低程度說明了它們分別為第三方應用181、本地HTTP伺服器182和本地數據183的不同副本。此外,計算設備100可以使用到一個或多個遠程計算機的邏輯連接而在聯網環境中進行操作。為了說明簡要,計算設備100在圖I中被示為連接到網絡160,其並不局限於任何特定網絡或網絡協議。圖I中所描繪的邏輯連接是一般網絡連接151,其可以是區域網(LAN)、廣域網(WAN)或其它網絡。計算設備100通過網絡接口或適配器150連接至一般網 絡連接151,所述網絡接口或適配器150進而連接至系統總線121。在聯網環境中,相對於計算設備100或者其部分或外設所描繪的程序模塊可以存儲在通過一般網絡連接151通信耦接至計算設備100的一個或多個其它計算設備的存儲器中。將要意識到的是,所示出的網絡連接是示例性的,並且可以使用在計算設備之間建立通信鏈路的其它手段。網絡160可能已經向其通信耦接了聯網存儲170。聯網存儲170可以表示通信耦接至一個或多個伺服器計算設備的存儲媒體,所述伺服器計算設備進而通信耦接至網絡160。因此,以與硬碟驅動器141通過存儲器接口 140通信耦接至客戶端計算設備100類似的方式,代表聯網存儲170的存儲媒體可以同樣通信耦接至一個或多個伺服器計算設備,所述伺服器計算設備可以包括與被圖示為客戶端計算設備100的一部分並且在以上詳細描述的那些相類似的組件。類似地,以與客戶端計算設備100經由網絡接口 150通信耦接至網絡160相類似的方式,這些一個或多個伺服器計算設備同樣能夠通信耦接至網絡160。然而,為了說明簡要以及便於參考,聯網存儲170將獨立於其與一個或多個伺服器計算設備的關聯進行圖示和引用,原因在於那些伺服器計算設備的操作對於本領域技術人員而言是公知的並且與以下所描述的機制無關。聯網存儲170可以包括遠程數據171,其可以包括可由在客戶端計算設備100上執行的進程所訪問並且對其有用的信息。此外,遠程數據171可以包括其作為由客戶端計算設備100本地維護的本地數據183和193的副本的部分173。例如,網絡存儲170可以是一個或多個網站的一部分,所述網站被定向以使得用戶能夠從諸如客戶端計算設備100的多個計算設備訪問某些信息。因此,在這樣的示例中,遠程數據171例如可以包括由客戶端計算設備100的用戶或者已經許可這樣的用戶訪問其照片的其它個人所拍攝的照片。在這樣的示例中,遠程數據171的部分173可以是客戶端計算設備100的用戶已經上傳的照片,並且因此那些相同的照片可以作為本地數據183和193而被保留在客戶端計算設備100上,而遠程數據171的其餘部分可以是其它個人已經上傳的照片,它們還沒有或者將永遠不會作為本地數據183和193而被下載到客戶端計算設備100。作為另一個示例,遠程數據171可以包括不同類型的數據,其中的諸如部分173的一些可以作為本地數據183和193被同步至客戶端計算設備100,而其它則不可以如此。因此,在這樣的示例中,遠程數據171可以包括聯繫信息,其可以作為部分173的一部分並且可以作為本地數據183和193被同步至客戶端計算設備100,並且遠程數據171還可以包括諸如從數據饋送或其它源遠程獲得的信息,它們可以不必與客戶端計算設備100進行同步,並且僅可以通過網絡160經由訪問而被網絡存儲170所獲得。轉向圖2,這裡所示出的系統200圖示了示例性機制,通過該機制,本地HTTP伺服器182當在客戶端計算設備100上運行時可以作為統一訪問機制,使得諸如第三方應用181的應用程式經由針對數據的單次請求220而透明地訪問本地數據193或遠程數據171。最初,如所示出的,第三方應用181可以將針對數據的請求220指向本地HTTP伺服器182。在超文本傳輸協議的背景下,這樣的請求可以採取GET請求的形式。然而,無論所採用的特定協議如何,針對數據的請求220都可以包括哪些數據被請求的指示。基於這樣的指示,本地HTTP伺服器182能夠確定數據是否可以作為如之前所描述的能夠存儲在客戶端計算設備100本地的存儲介質上的本地數據193的一部分而獲得,或者該數據是否僅可以作為能夠存儲在聯網存儲170上的遠程數據171的一部分而獲得。在一個實施例中,所請求數據能夠位於何處的確定可以基於所請求數據的命名空間。例如,如圖2的系統200所示,某些命名空間(圖2中的所指定的命名空間A、B和C)的 數據能夠從本地數據193獲得,而除包括之前所提到的命名空間A、B和C之外還包括其它命名空間(所指定的命名空間D和E)的不同命名空間集合的數據則可以從遠程數據171所獲得。與哪些命名空間由作為本地數據193的一部分的數據所表示以及哪些命名空間由僅可作為遠程數據171的一部分而獲得的數據所表示相關的信息可以被本地HTTP伺服器182所保留並且在接收到針對數據的請求220時被引用。在一個實施例中,本地HTTP伺服器182所維護的與數據的哪些命名空間存儲在哪些位置中相關的信息可以由同步組件210所通知。例如,本地HTTP伺服器182可以指導同步組件210在本地數據193和遠程數據171中對應於命名空間A、B和C的部分173之間同步那些命名空間的數據。基於同步組件210所進行的已經成功執行了這樣的同步的指示,其諸如通過通信230進行指示,本地HTTP伺服器182能夠維護指示命名空間A、B和C的數據可作為本地數據193的一部分而獲得的信息。相反,如果同步組件210向本地HTTP伺服器182提供了本地數據193與遠程數據171的部分173最近的同步還沒有成功執行的指示,則本地HTTP伺服器182能夠維護指示命名空間A、B和C的數據僅可以從遠程數據171獲得的信息,這是因為本地數據193可能並不反映該數據的最近版本。可替換地,同步組件210可以選擇要在本地數據193和遠程數據171的部分173之間同步哪些數據,並且能夠僅通知本地HTTP伺服器182所選擇數據的命名空間。例如,同步組件210可以給出獨立的用戶接口,其使得計算設備100的用戶能夠單獨選擇要在本地數據193和遠程數據171的部分173之間進行同步的數據的一個或多個類型或命名空間。然而,本地HTTP伺服器182所維護的關於數據的哪些命名空間可以本地獲得以及哪些僅可以遠程獲得的信息仍然能夠如以上所描述的那樣進行維護。在一個實施例中,同步組件210可以是現有的同步組件,諸如目前可普遍獲得的那些同步組件。典型地,這樣的同步組件210能夠對客戶端計算設備100到網絡160的連接進行監視,並且當這樣的連接連續或周期性地得以維護時,將遠程數據171的部分173與本地數據193進行比較。如果檢測到差異,則同步組件210能夠利用已知的同步手法或技術按照需要將最近數據從本地數據193複製到遠程數據171的部分173,或者反之亦然。
回到本地HTTP伺服器182的操作,一旦其從諸如第三方應用181的應用程式接收到針對數據的請求220,本地HTTP伺服器182就能夠確定所請求的數據是否為從本地數據193獲得的數據的命名空間的一部分,或者所請求的數據是否為僅能夠從遠程數據171獲得的數據的命名空間的一部分。如果請求220所請求的數據是從本地數據193獲得的數據的命名空間的一部分,則本地HTTP伺服器182能夠從本地數據193取得所請求的數據,如圖2的系統200的通信240和241所圖示的。相反,如果請求220所請求的數據是僅能夠從遠程數據171所獲得的數據的命名空間的一部分,則本地HTTP伺服器182能夠如通信250和251所圖示的從遠程數據171獲得所請求的數據。如本領域技術人員將要認識到的,通信250和251可以包括諸如將通過圖I所示的客戶端計算設備100的網絡接口 150、網絡160自身以及託管聯網存儲170的一個或多個伺服器計算設備來進行的網絡通信。一旦本地HTTP伺服器182已經從遠程數據171或本地數據193獲得了所請求的數據,其就能夠如通信260所圖示的將該數據返回至進行請求的應用。以這樣的方式,本地HTTP伺服器182能夠提供數據的單一來源,而無論該數據是在計算設備100本地還是其遠程存儲。因此,諸如第三方應用181的應用程式僅需要將針對數據的請求(諸如針對數據的 請求220)指引到本地HTTP伺服器182,而無論所請求的數據是能夠本地還是遠程獲得。在一個實施例中,本地HTTP伺服器182能夠向客戶端計算設備100上執行的其它進程提供網際網路協議(IP)地址,從而原本被設計為從聯網存儲170 (諸如從可以提供用戶接口的一個或多個網站,通過該用戶接口可以方便地訪問存儲在聯網存儲170上的數據)請求數據的應用程式能夠被輕易地修改為另外對本地HTTP伺服器182加以利用。對於每個應用而言,如果所請求的數據實際上能夠本地獲得,則對本地HTTP伺服器182的利用能夠提供速度上的益處,而如果數據僅能夠遠程獲得則僅增加了最小的開支。翻到圖3,這裡所示出的系統300圖示了支持數據的編輯或修改的示例性機制系列。最初,諸如第三方應用181的應用能夠經由通信320嘗試改變一些數據,所述通信320可以將經改變的數據提供至本地HTTP伺服器182。在超文本傳輸協議的具體背景下,改變數據的通信320可以經由HTTP POST命令或其它類似命令來提供經改變的數據。然而,無論所採用的特定協議如何,改變數據的通信320都可以包括哪些數據被改變以及其應當變為的新數據的指示。利用這樣的信息,本地HTTP伺服器182能夠基於被改變數據的命名空間以以上詳細描述的方式來識別這樣的數據是否存在於本地數據93中,或者其是否僅存在於遠程數據171中。如果第三方應用181嘗試改變的數據僅作為遠程數據171的一部分而存在,則本地HTTP伺服器182能夠諸如經由通信350將經改變的數據提供至遠程數據171。如本領域技術人員將會獲知的,通信350可以包括網絡通信,諸如將通過圖I所示的客戶端計算設備100的網絡接口 150、網絡160自身以及託管聯網存儲170的一個或多個伺服器計算設備進行指引的網絡通信。然而,如果通信320所改變的數據是本地數據193的一部分,則本地HTTP伺服器182能夠如通信340所圖示的改變數據的本地副本。隨後,作為通信340的一部分,諸如同步機制210的獨立同步進程能夠利用已知同步手法或技術來檢測本地HTTP伺服器182所執行的數據改變。在檢測到變化的情況下,如通信370所圖示的,同步機制210能夠通過將經改變的數據從本地數據193複製到遠程數據171的部分173而將本地數據193與遠程數據171的與之相對應的部分173進行同步。以這樣的方式,如果所改變的數據實際上是本地數據193的一部分,則第三方應用181經由通信320所請求的改變能夠在本地數據193和遠程數據171中都得以反映。翻到圖4,這裡所示出的系統400圖示了與圖2的系統200所圖示的那些相類似的示例性機制系列,除了如圖4所示出的,系統400的客戶端計算設備100不再保持到網絡160的通信連接,因此所述網絡160沒有在圖4中被示出。諸如第三方應用181的應用仍然能夠向本地HTTP伺服器182發送針對數據的請求,諸如以上所描述的針對數據的請求220。還如以上所描述的,本地HTTP伺服器182能夠確定數據是否可在本地獲得,並且如果是,則本地HTTP伺服器182能夠經由通信240和241從本地數據193獲得這樣的數據,並且隨後經由通信260將該所請求並且現在所獲得的數據提供回進行請求的應用,所有這些在之前都已經進行了描述。然而,在圖4的系統400的背景下,客戶端計算設備100不再保持到網絡160的通信連接,如果本地HTTP伺服器182確定請求220所請求的數據是僅能夠從之前所示出的遠 處數據171所獲得的數據的命名空間的一部分,則本地HTTP伺服器182能夠嘗試訪問這樣的數據,並且當這樣的嘗試由於缺少到網絡160的通信連接而失敗時,本地HTTP伺服器182能夠向進行請求的第三方應用181返回數據不可訪問的通知460。在一個實施例中,數據不可訪問的通知460可以等同於如果它們請求第三方應用181直接嘗試訪問遠程數據171,或者僅可經由到網絡160的連接所獲得的任意其它信息而本要被提供至進行請求的第三方應用181的類型的通知。圖5的系統500圖示了與圖4所示相類似的情形,其中客戶端計算設備100不再保持到網絡160的通信連接,所述網絡160因此沒有在圖5中被示出。在圖5的系統500中,諸如第三方應用181的應用諸如能夠經由通信320以之前所描述方式嘗試改變數據。如以上所描述的,如果本地HTTP伺服器182確定了所要改變的數據僅可以作為遠程數據171的一部分而獲得,之前所示出的,則本地HTTP伺服器182能夠嘗試改變這樣的數據並且當這樣的嘗試由於缺少到網絡160的通信連接而失敗時,本地HTTP伺服器182能夠以之前所描述的方式返回數據不可訪問的通知460。然而,如果本地HTTP伺服器182確定了所要改變的數據是處於本地數據193的數據的命名空間的一部分,則其能夠經由通信340以之前所描述的方式對該數據進行改變。同步機制210隨後能夠如之前那樣檢測這樣的改變。以同步領域技術人員所公知的方式,如通信570所圖示的,同步機制210能夠保留與該數據改變相關的信息,並且能夠在隨後重新建立客戶端計算設備100和網絡160 (圖5中未示出)之間的通信連接時將經改變的數據複製到本地數據193與之同步的遠程數據171的部分173 (二者也沒有在圖5中示出)。以這樣的方式,即使在客戶端計算設備100從網絡160脫離通信耦接時,諸如第三方應用181的應用也能夠經由本地HTTP伺服器182執行數據訪問和數據修改,至少是針對作為本地數據193而本地保留的數據的命名空間的一部分的數據。在客戶端計算設備100從網絡160脫離通信耦接時所能夠對本地數據193進行的任何變化隨後都能夠在與網絡160的通信連接被重新建立時被同步機制210反映回遠程數據171。翻到圖6,這裡所示出的流程圖600圖示了能夠由以上示出和詳細描述的諸如本地HTTP伺服器182的組件所執行的示例性步驟系列。最初,如圖6所示,在步驟610可以從本地執行的計算機可執行指令接收針對數據的請求,所述計算機可執行指令諸如第三方應用181,這也在以上被示出和描述詳細。隨後,在步驟615,可以確定作為所請求數據的命名空間的一部分的數據是否被本地存儲。如果在步驟615確定所請求的數據屬於其數據在本地存儲的命名空間,則處理能夠進行至步驟660,其中能夠從本地存儲獲取所請求的數據。在一個實施例中,如以上所描述的,在步驟660從本地存儲獲取數據之前,可以進行圖6的流程圖600沒有具體圖示的確定。更具體地,這樣的確定能夠驗證與數據的本地副本相關的數據已經被同步機製成功同步。如果還沒有成功執行這樣的同步機制,則處理能夠返回步驟620。在一個實施例中,在這樣的情況下,如果在步驟620確定到網絡的通信連接當前不可用,則處理能夠返回步驟660並且從本地存儲獲取所請求的數據,因為這樣的數據可以是當前可用數據的最佳副本。然而,在另一個實施例中,數據可以具有與之相關聯的截止期(expiration),以使得如果數據的本地副本還沒有進行最近的同步,並且與網絡的通信連接不可用,則如果與網絡的通信連接已經不可用超過了預先確定的時間長度,就可以認為數據已經過期或者以其它方式變為陳舊的。在這樣的情況下,即使數據的副本就存在於本地存儲中,也能夠在步驟625給出錯誤,其在以下更為詳細地進行描述,這是因為這樣的副本可以被認為是陳舊或過期的。然而,一旦在步驟660從本地存儲獲得了數據,則隨後在步驟665,相關處理能夠在步驟660獲得的所請求數據被提供至進行請求的計算機可執行指令時結束。 然而,如果在步驟615確定了所請求的數據是其數據並非本地存儲的命名空間的一部分,則步驟620的後續確定能夠確定當前在其上執行步驟的計算設備是否保持由與網絡的通信連接,其中遠程存儲的所請求數據能夠通過所述通信連接而被訪問。如果在步驟620確定了當前沒有保持這樣的通信連接,則相關處理能夠在步驟625結束,同時向進行請求的計算機可執行指令返回指示沒有到所請求數據的通信連接的錯誤。可替換地,如果在步驟620確定了保持有到相關網絡的通信連接,則處理可以進行至步驟630。在步驟630,可以從聯網存儲請求在步驟610所請求的數據。存儲在聯網存儲中的數據被一種或多種認證機制所保護。例如,能夠在聯網存儲上存儲數據的網站在提供對該數據的訪問之前可以要求提供各種認證信息。典型地,這樣的認證信息可以包括具體用戶的標識,諸如用戶名,以及所共享的秘密,諸如用戶和認證網站都知道的密碼。例如,能夠向用戶提供對該用戶的照片以及與該用戶相關聯的其它用戶的照片的網絡訪問的網站可以在顯示那些照片或以其它方式提供對那些照片的訪問之前請求用戶提供用戶名和密碼。在一個實施例中,無論數據是本地還是遠程存儲,針對這樣的數據提供透明訪問的組件可以進一步提供自動認證機制以促成獲得遠程存儲的數據。典型地,例如,為了這樣的組件甚至從本地執行的計算機可執行指令接收到針對數據的請求,諸如在步驟610中所接收的請求,本地執行的計算機可執行指令將需要作為用戶進程的一部分來執行,所述用戶處理將允許它們對針對數據提供透明訪問的該組件進行訪問。因此,典型地,那些計算機可執行指令代表其執行的用戶將已經諸如通過提供標識和認證信息而登錄到客戶端計算設備上。雖然客戶端計算設備所實施的使得用戶能夠登錄的認證機制可以不同於各種網站所實施的可以保護對遠程存儲數據的訪問的那些機制,但是用戶在能夠訪問提供對數據的透明訪問的組件之前在客戶端計算設備上得到認證的單純事實可使得這樣的組件能夠將這樣的用戶的憑證與各網站或能夠保護遠程存儲的數據的其它保護機制所要求的相關標識和認證信息進行關聯。因此,如果在步驟635確定了需要進行認證,則處理可以進行至步驟640,其中能夠獲得進行請求的計算機可執行指令在用戶的進程空間中執行的該用戶的身份。利用這樣的身份,能夠確定步驟635所需要的認證信息。例如,能夠在客戶端計算設備上的用戶的身份和該用戶在能夠通過其訪問遠程數據的一個或多個各種網站的認證憑證之間保持關聯。在一個實施例中,這樣的信息可以被高速緩存,以使得用戶可以被要求提供至少一次與特定的所請求數據相關的認證信息,但是隨後在後續訪問期間,這樣的信息可以利用提供對數據的透明訪問的組件而被高速緩存並且可以簡單地基於客戶端計算設備上的用戶的身份進行引用,所述請求在步驟610從所述用戶的進程空間被接收。因此,如所示出的,在步驟645,這樣的高速緩存能夠利用步驟645所確定的用戶的身份進行引用,並且可以從其獲得適當的認證信息。在步驟645獲得的認證信息隨後可以在步驟650被提供至進行請求的網絡實體。在成功認證之後,可以在步驟655從聯網存儲獲得所請求的數據。相關處理隨後能夠在步驟655結束,同時將這樣的數據提供至進行請求的計算機可執行指令。然而,如果在步驟635確定了不需要認證,則處理可以簡單地進行至在步驟655從 聯網存儲獲得所請求數據,並且隨後在步驟665將這樣的所請求數據提供至進行請求的計算機可執行指令。翻到圖7,這裡所示出的流程圖700圖示了與以上參考圖6的流程圖所描述的那些相類似的示例性步驟系列,其區別在於如圖7的流程圖700所示出的,處理可以在步驟710開始,其中從本地執行的計算機可執行指令接收所要存儲的經改變數據,或者以其它方式接收對指定數據進行編輯或以其它方式進行修改的請求。如前所述,諸如能夠在步驟715確定所要改變的數據的命名空間是否是其數據在本地存儲的命名空間。如果所要改變的數據在本地存儲,則處理可以進行至步驟760,經改變的數據在其中能夠被存儲在本地存儲中。隨後,相關處理能夠在步驟765結束,同時向在步驟710提供這樣的數據的計算機可執行指令返回確認或者其它成功的指示。可替換地,如果在步驟715確定了數據被遠程存儲,則可以在步驟720檢查所述計算機可執行指令正在其上執行的計算設備是否保持與網絡的通信連接,而這樣遠程存儲的數據可以通過所述通信連接而被訪問。如果沒有保持這樣的通信連接,則相關處理可以在步驟725結束,同時向在步驟710針對其接收了改變數據的請求的計算機可執行指令進行錯誤指示。如果所述計算機可執行指令正在其上執行的計算設備保持了與網絡的通信連接,而遠程存儲的數據可以通過所述通信連接而被訪問,則該處理能夠進行至步驟730,經改變的數據可以在此時被提供至聯網存儲。如果如步驟735所確定的,需要認證來訪問或以其它方式改變聯網存儲上的相關數據,則處理能夠以步驟740、745和750進行,它們等同於以上參考圖6的流程圖600詳細描述的步驟640、645和650。如果需要認證並且其被成功提供,或者如果不需要認證,則處理能夠以步驟755進行,經改變的數據能夠在此時被存儲在聯網存儲上。相關處理隨後能夠在步驟765結束,同時向在步驟710從其最初接收經改變數據的計算機可執行指令返回確認或其它成功的指示。返回圖2,給定以上描述,能夠看到以上所描述的機制的優勢在於,當前示例中的本地HTTP伺服器182能夠提供單一接口,諸如第三方應用程式181的應用程式能夠通過所述接口訪問數據而無論這樣的數據的存儲位置如何。因此,例如,如果在同步機制210未來的表現形式中,屬於命名空間D的數據也在遠程數據171和本地數據193之間被同步,則無需對諸如第三方應用181的應用程式進行修改以利用這樣本地可用的數據。相反,對於這樣的應用程式透明的是,針對命名空間D的數據的進一步的請求現在將由本地HTTP伺服器182從本地數據193而得以滿足,並且如果適當,將被同步機制210同步回遠程數據171。類似地,例如如果命名空間A的數據不再由同步機制210進行同步,諸如第三方應用程式181的應用程式將仍然繼續適當進行操作而沒有修改,這是因為針對這樣的數據的請求將簡單地被本地HTTP伺服器182從遠程數據171透明地滿足。如能夠從以上描述所看到的,已經提供了一種用於對本地和遠程數據二者提供透明訪問而無論數據的實際位置如何的機制。借鑑於這裡所描述主題的許多可能變化,我們請求保護我們的發明以使得所有這樣的實施例都可以處於以下權利要求及其等同形式的 範圍之內。
權利要求
1.一種對本地存儲的數據和遠程存儲的數據二者提供透明訪問的方法,所述方法包括步驟 將至少一個命名空間的數據在本地存儲的數據和遠程存儲的數據之間進行同步以使得在本地存儲的數據上所執行的對數據的至少一個命名空間的數據的改變被複製到遠程存儲的數據,並且使得在遠程存儲的數據上所執行的對數據的至少一個命名空間的數據的改變被複製到本地存儲的數據; 提供用於數據集合的訪問的單一接口,而無論所述數據集合是本地存儲的數據還是遠程存儲的數據的一部分; 在所提供接口上接收指向所述數據集合的數據訪問請求; 基於所述數據集合的命名空間確定所述數據集合是本地存儲的數據還是遠程存儲的數據的一部分; 如果所述確定指示所述數據集合是本地存儲的數據的一部分,則提供對來自本地存儲的數據的數據集合的訪問;並且 如果所述確定指示所述數據集合是遠程存儲的數據的一部分並且如果執行計算機可執行指令的計算設備包括到遠程存儲的數據的通信連接,則提供對來自遠程存儲的數據的數據集合的訪問。
2.根據權利要求I的方法,其中提供對來自本地存儲的數據的數據集合的訪問包括檢查數據的同步狀態,並且在數據同步處於當前的情況下僅提供對來自本地存儲的數據的數據集合的訪問。
3.根據權利要求I的方法,其中提供對來自本地存儲的數據的數據集合的訪問包括檢查到遠程存儲的數據的通信連接的狀態,並且在本地存儲的數據並不陳舊的情況下僅提供對來自本地存儲的數據的數據集合的訪問。
4.根據權利要求I的方法,其中提供對來自遠程存儲的數據的數據集合的訪問包括針對認證機制進行認證,對遠程存儲的數據的訪問通過所述認證機制而得以被保護。
5.根據權利要求4的方法,其中所述認證包括計算機可執行指令,其用於基於從其進程空間接收數據訪問請求的用戶的標識獲得標識和認證信息以提供至所述認證機制。
6.根據權利要求5的方法,其中所述標識和認證信息從高速緩存獲得以便訪問遠程存儲的數據,所述高速緩存與用戶相關聯並且由所述標識和認證信息的在先實體、由用戶所填入。
7.根據權利要求I的方法,其中所接收的數據訪問請求包括對所述數據集合進行修改的請求,其中對所述數據集合提供訪問包括依據修改所述數據集合的請求對所述數據集合進行修改。
8.根據權利要求7的方法,其中如果執行所述方法的計算設備並不包括到遠程存儲的數據的通信連接,則所述同步包括在到遠程存儲的數據的通信連接恢復時將經修改的數據集合複製到遠程存儲的數據。
9.包括用於執行權利要求I的步驟的計算機可執行指令的一個或多個計算機可讀媒體。
10.一種計算設備,包括 本地存儲的數據;至少一個應用程式; 同步機制,其用於將至少一個命名空間的數據在本地存儲的數據和遠程存儲的數據之間進行同步以使得在本地存儲的數據上所執行的對數據的至少一個命名空間的數據的改變被複製到遠程存儲的數據,並且使得在遠程存儲的數據上所執行的對數據的至少一個命名空間的數據的改變被複製到本地存儲的數據;和 統一數據訪問機制,其提供對本地存儲的數據和遠程存儲的數據的透明訪問,所述統一數據訪問機制執行包括以下的步驟 提供用於數據集合的訪問的單一接口,而無論所述數據集合時本地存儲的數據還是遠程存儲的數據的一部分; 在所提供接口上接收來自至少一個應用程式的指向所述數據集合的數據訪問請求; 基於所述數據集合的命名空間確定所述數據集合是本地存儲的數據還是遠程存儲的數據的一部分; 如果所述確定指示所述數據集合是本地存儲的數據的一部分,則對至少一個應用程式提供對來自本地存儲的數據的數據集合的訪問;並且 如果所述確定指示所述數據集合是遠程存儲的數據的一部分並且如果所述計算設備包括到遠程存儲的數據的通信連接,則對至少一個應用程式提供對來自遠程存儲的數據的數據集合的訪問。
11.根據權利要求10的計算設備,其中所述統一數據訪問機制執行包括以下的進一步的步驟如果向至少一個應用程式提供對數據集合的訪問是來自於遠程存儲的數據,則針對認證機制進行認證,對遠程存儲的數據的訪問通過所述認證機制而得以被保護。
12.根據權利要求11的計算設備,其中所述統一數據訪問機制執行包括以下的進一步的步驟基於用戶的標識而獲得標識和認證信息以提供至所述認證機制,至少一個應用程式在所述用戶的進程空間中在計算設備上執行。
13.根據權利要求10的計算設備,其中從至少一個應用程式接收的數據訪問請求包括所述至少一個應用程式所進行的修改數據集合的請求;並且其中由所述統一數據訪問機制提供對數據集合的訪問包括由所述統一數據訪問機制依據所述至少一個應用程式所進行的修改數據集合的請求而對所述數據集合進行修改。
全文摘要
統一數據訪問機制能夠對本地或遠程存儲的數據提供透明訪問。應用程式能夠將數據請求和數據修改指向該單一組件而無需預先了解數據存儲在哪裡。統一數據訪問機制能夠與同步機制相一致地進行工作,所述同步機制能夠保持本地數據和遠程數據之間的數據同步。可以基於數據的命名空間將所請求或修改的數據識別為本地或遠程存儲的。如果數據被遠程存儲,則與在其中執行應用程式的用戶進程空間相關聯的用戶憑證被用來識別相關認證信息並隨後在被要求的情況下將其提供至遠程數據存儲。
文檔編號G06F13/14GK102934101SQ201180029572
公開日2013年2月13日 申請日期2011年6月6日 優先權日2010年6月15日
發明者N.沙馬, T.馬尼翁, A.J.薩加, N.古普塔, F.默罕默德, A.G.班達卡, K.拉曼, O.阿米加 申請人:微軟公司