專利名稱::用于公共數(shù)據(jù)平臺(tái)的存儲(chǔ)api的制作方法相關(guān)申請(qǐng)本申請(qǐng)要求對(duì)序列號(hào)為60/657,522題為“STORAGEAPIFORACOMMONDATAPLATFORM”(用于公共數(shù)據(jù)平臺(tái)的存儲(chǔ)API)并于2005年2月28日提交的美國臨時(shí)專利申請(qǐng)的權(quán)利。本申請(qǐng)與以下申請(qǐng)相關(guān)序列號(hào)為60/657,556題為“PLATFORMFORDATASERVICESACROSSDISPARATEAPPLICATIONFRAMEWORKS”(用于不同應(yīng)用程序框架上的數(shù)據(jù)服務(wù)的平臺(tái))并于2005年2月28日提交的美國臨時(shí)專利申請(qǐng);序列號(hào)為11/171,905題為“PLATFORMFORDATASERVICESACROSSDISPARATEAPPLICATIONFRAMEWORKS”(用于不同應(yīng)用程序框架上的數(shù)據(jù)服務(wù)的平臺(tái))并于2005年6月30日提交的美國專利申請(qǐng);序列號(hào)為60/657,295題為“DATAMODELFOROBJECT-RELATIONALDATA”(用于對(duì)象關(guān)系數(shù)據(jù)的數(shù)據(jù)模型)并于2005年2月28日提交的美國臨時(shí)專利申請(qǐng);以及序列號(hào)為___(律師案號(hào)為MSFTP974USA)題為“DATAMODELFOROBJECT-RELATIONALDATA”(用于對(duì)象關(guān)系數(shù)據(jù)的數(shù)據(jù)模型)并于___提交的美國專利申請(qǐng)。上述各申請(qǐng)全部通過引用結(jié)合于此。
背景技術(shù):
:數(shù)據(jù)已變成幾乎每個(gè)應(yīng)用程序的重要資產(chǎn),不管是用于瀏覽產(chǎn)品并產(chǎn)生訂單的行業(yè)(LOB)應(yīng)用程序框架,還是用于安排人們之間會(huì)議的個(gè)人信息管理(PIM)終端用戶應(yīng)用程序。應(yīng)用程序?qū)?yīng)用程序數(shù)據(jù)執(zhí)行數(shù)據(jù)訪問/處理和數(shù)據(jù)管理操作。通常的應(yīng)用程序操作查詢數(shù)據(jù)集合、取得結(jié)果集、執(zhí)行改變數(shù)據(jù)狀態(tài)的一些應(yīng)用程序邏輯、最后將數(shù)據(jù)持久保存在存儲(chǔ)介質(zhì)中。傳統(tǒng)上,客戶機(jī)/服務(wù)器應(yīng)用程序?qū)⒉樵兒捅4鎰?dòng)作提交給部署在數(shù)據(jù)層中的數(shù)據(jù)庫管理系統(tǒng)(DBMS)。如果有以數(shù)據(jù)為中心的邏輯,則它被編碼為在數(shù)據(jù)庫系統(tǒng)中的存儲(chǔ)過程。數(shù)據(jù)庫系統(tǒng)用表和行對(duì)數(shù)據(jù)進(jìn)行操作,而應(yīng)用程序?qū)又械膽?yīng)用程序用編程語言對(duì)象(例如類和結(jié)構(gòu)體)對(duì)數(shù)據(jù)進(jìn)行操作。應(yīng)用程序和數(shù)據(jù)層中數(shù)據(jù)處理服務(wù)(和機(jī)制)的不匹配在客戶機(jī)/服務(wù)器系統(tǒng)中是可以忍受的。然而,隨著web技術(shù)(和面向服務(wù)的體系結(jié)構(gòu))的出現(xiàn)以及隨著對(duì)應(yīng)用程序服務(wù)器的廣泛接受,應(yīng)用程序變成多層次的,并且更重要的是,數(shù)據(jù)現(xiàn)在出現(xiàn)在每一層。在這種分層應(yīng)用程序體系結(jié)構(gòu)中,數(shù)據(jù)在多個(gè)層中進(jìn)行處理。此外,隨著硬件在可尋址性和大存儲(chǔ)器中的進(jìn)步,更多數(shù)據(jù)變得可駐留在存儲(chǔ)器中。應(yīng)用程序也可處理不同類型的數(shù)據(jù),諸如對(duì)象、文件和XML(可擴(kuò)展標(biāo)記語言)數(shù)據(jù)。在這種硬件和軟件環(huán)境中,對(duì)豐富的與編程環(huán)境良好結(jié)合的數(shù)據(jù)訪問和處理服務(wù)的需要在增加。被引入用來解決前述問題的一種常規(guī)實(shí)現(xiàn)是數(shù)據(jù)平臺(tái)。數(shù)據(jù)平臺(tái)向應(yīng)用程序提供訪問、處理和管理數(shù)據(jù)的服務(wù)(機(jī)制)集合,該集合與應(yīng)用程序編程環(huán)境良好結(jié)合。然而,這種常規(guī)體系結(jié)構(gòu)在許多方面都有缺點(diǎn)。對(duì)這種數(shù)據(jù)平臺(tái)的一些關(guān)鍵要求包括復(fù)雜的對(duì)象建模、豐富的關(guān)系、邏輯和物理數(shù)據(jù)抽象的分離、查詢豐富數(shù)據(jù)模型概念、活動(dòng)通知、與中間層基礎(chǔ)結(jié)構(gòu)的較佳結(jié)合。因而,在本領(lǐng)域中有基本上未獲滿足的對(duì)改進(jìn)數(shù)據(jù)平臺(tái)的需要。
發(fā)明內(nèi)容以下顯示了本發(fā)明的簡化歸納,以便提供對(duì)本發(fā)明的某些方面的基本理解。該歸納不是本發(fā)明的廣泛縱覽。它并非旨在標(biāo)識(shí)本發(fā)明的關(guān)鍵/重要元素或界定本發(fā)明的范圍。其唯一目的是用簡化形式表示本發(fā)明的某些概念,作為后面呈現(xiàn)的更詳細(xì)描述的序幕。在此公開和要求保護(hù)的本發(fā)明的一方面中,包括用于數(shù)據(jù)平臺(tái)的應(yīng)用程序接口(API)。該API包括展現(xiàn)數(shù)據(jù)平臺(tái)的存儲(chǔ)、會(huì)話、事務(wù)和查詢服務(wù)的至少之一的一般數(shù)據(jù)訪問組件,其中數(shù)據(jù)平臺(tái)與數(shù)據(jù)存儲(chǔ)相關(guān)聯(lián)。API的數(shù)據(jù)類組件提供展現(xiàn)數(shù)據(jù)平臺(tái)的數(shù)據(jù)模型的類型和關(guān)系的規(guī)范的應(yīng)用程序無關(guān)類。該API包括展現(xiàn)數(shù)據(jù)平臺(tái)的域特定屬性和行為的應(yīng)用程序特定和框架特定類的域數(shù)據(jù)類組件。該數(shù)據(jù)平臺(tái)可以是與數(shù)據(jù)存儲(chǔ)通過接口相連以提供多個(gè)不同應(yīng)用程序框架可訪問的數(shù)據(jù)服務(wù)的公共數(shù)據(jù)平臺(tái),其中各數(shù)據(jù)服務(wù)使不同框架的相應(yīng)應(yīng)用程序能訪問數(shù)據(jù)存儲(chǔ)。在另一方面中,API包括五個(gè)核心類。TableSet類能從數(shù)據(jù)模型的架構(gòu)中產(chǎn)生,并提供對(duì)在架構(gòu)內(nèi)定義的各個(gè)表的強(qiáng)類型化訪問。StorageDomain類定義剩余類在其上操作的存儲(chǔ)。StorageContext類提供會(huì)話的上下文。StorageContext類使用用于在當(dāng)前上下文內(nèi)刷新或保存對(duì)象變化的方法,來定義身份管理、變化跟蹤以及并發(fā)沖突處理的范圍。StorageSearcher類用于建立對(duì)數(shù)據(jù)存儲(chǔ)的可組合的基于對(duì)象的查詢。StorageView類提供在結(jié)果集上的豐富應(yīng)用程序視圖。StorageView類支持諸如過濾、排序、滾動(dòng)、分組、劃分、展開/折疊各區(qū)域等。為實(shí)現(xiàn)前述及相關(guān)結(jié)果,本發(fā)明的某些說明性方面結(jié)合以下說明書和附圖在此說明。但這些方面僅僅示出了本發(fā)明諸原理可在其中采用的各種方式的其中幾種,且本發(fā)明旨在包括所有這些方面及其等價(jià)方案。結(jié)合附圖參閱本發(fā)明的以下詳細(xì)說明,本發(fā)明的其它優(yōu)點(diǎn)和新特征會(huì)變得清楚。圖1示出根據(jù)一發(fā)明方面的數(shù)據(jù)平臺(tái)的存儲(chǔ)應(yīng)用程序接口(API)。圖2示出根據(jù)一公開方面的提供存儲(chǔ)API的方法。圖3示出存儲(chǔ)API的一般數(shù)據(jù)訪問組件的更詳細(xì)示圖。圖4示出提供數(shù)據(jù)模型的存儲(chǔ)API的方法。圖5示出展現(xiàn)表集類型的方法。圖6示出提供API中的WinFS功能的方法。圖7示出表示存儲(chǔ)中一個(gè)類的方法。圖8示出封裝客戶機(jī)和一個(gè)或多個(gè)存儲(chǔ)之間的連接的方法。圖9示出建立對(duì)存儲(chǔ)的查詢的方法。圖10示出查看結(jié)果集的方法。圖11示出呈現(xiàn)結(jié)果上數(shù)據(jù)的初始視圖的方法。圖12示出擴(kuò)展存儲(chǔ)記錄類的方法。圖13示出將存儲(chǔ)API用于公共數(shù)據(jù)平臺(tái)的系統(tǒng)。圖14示出可操作用來執(zhí)行所公開體系結(jié)構(gòu)的計(jì)算機(jī)的框圖。圖15示出示例性計(jì)算環(huán)境的示意框圖。具體實(shí)施例方式現(xiàn)在參照附圖描述本發(fā)明,其中相同參考標(biāo)號(hào)貫穿全文用來指向相同元件。在以下描述中為了進(jìn)行解釋,許多特定細(xì)節(jié)被陳述以便提供本發(fā)明的全面理解。然而,顯然沒有這些特定細(xì)節(jié)也可實(shí)現(xiàn)本發(fā)明。在其它實(shí)例中,眾所周知的結(jié)構(gòu)和裝置以框圖形式示出,以便于描述本發(fā)明。當(dāng)用于本申請(qǐng)時(shí),術(shù)語“組件”和“系統(tǒng)”旨在指計(jì)算機(jī)相關(guān)實(shí)體硬件、硬件和軟件的組合、軟件、或執(zhí)行中的軟件。例如,組件可以是,但不限于是,運(yùn)行于處理器上的進(jìn)程、處理器、硬盤驅(qū)動(dòng)器、多個(gè)(光學(xué)和/或磁性存儲(chǔ)介質(zhì)的)存儲(chǔ)驅(qū)動(dòng)器、對(duì)象、可執(zhí)行文件、執(zhí)行線程、程序和/或計(jì)算機(jī)。作為說明,運(yùn)行于服務(wù)器上的應(yīng)用程序和服務(wù)器都可以是組件。一個(gè)或多個(gè)組件可駐留于執(zhí)行的進(jìn)程和/或線程中,且組件可在定位在一臺(tái)計(jì)算機(jī)上和/或分布在兩臺(tái)或多臺(tái)計(jì)算機(jī)之間。盡管向用戶顯示信息的某些方法參照某些附圖被顯示并描述為屏幕截圖,但本領(lǐng)域技術(shù)人員可以理解可采用各種其它選擇。術(shù)語“屏幕”、“網(wǎng)頁”和“頁面”在此一般可互換使用。頁面或屏幕被存儲(chǔ)和/或傳送為顯示屏描述、圖形用戶界面、或?qū)⑿畔⒃谄聊簧鲜境龅钠渌椒?例如個(gè)人計(jì)算機(jī)、PDA、移動(dòng)電話、或其它適當(dāng)設(shè)備),其中要在頁面上顯示的布局和信息或內(nèi)容存儲(chǔ)在存儲(chǔ)器、數(shù)據(jù)庫或另一存儲(chǔ)工具中。全新的公共數(shù)據(jù)平臺(tái)(CDP)包括描述各對(duì)象及它們?nèi)绾蜗嚓P(guān)的公共數(shù)據(jù)模型(CDM);持久存儲(chǔ);以及用于與那些對(duì)象的存儲(chǔ)器中表示合作的服務(wù)。CDP提供與作為應(yīng)用程序?qū)ο蟮某志脭?shù)據(jù)合作的發(fā)明性平臺(tái)。CDP包括為被定義為平臺(tái)一部分的基礎(chǔ)數(shù)據(jù)模型以及服務(wù)定制設(shè)計(jì)的全新應(yīng)用程序編程接口(API)。CDP的功能通過一系列類來展現(xiàn)。對(duì)包括公共成員(例如方法和屬性)的那些類的定義包括用于與CDP內(nèi)各對(duì)象合作的API。開始參看附圖,圖1示出根據(jù)一發(fā)明性方面的數(shù)據(jù)平臺(tái)102(例如CDP)的存儲(chǔ)API100。API100以類、接口和靜態(tài)幫助函數(shù)的形式向使用該數(shù)據(jù)平臺(tái)(例如CDP)的應(yīng)用程序提供編程接口。數(shù)據(jù)庫編程語言集成(例如C#序列操作符)也是該API層的一部分。在其支持中,API100包括CDM數(shù)據(jù)類組件104,它是展現(xiàn)諸如實(shí)體、關(guān)系、擴(kuò)展等CDM概念的一組規(guī)范的應(yīng)用程序無關(guān)類。提供了作為API100一部分的一般數(shù)據(jù)訪問組件106,以展現(xiàn)存儲(chǔ)、會(huì)話、事務(wù)(例如StorageContext)、查詢服務(wù)(例如StorageSearcher)和CRUD服務(wù)(例如SaveChanges)。CRUD(創(chuàng)建、檢索、更新和刪除)服務(wù)是應(yīng)用于數(shù)據(jù)的基本處理。API100還包括域數(shù)據(jù)類組件108,該組件是諸如遵從CDM的聯(lián)系人、消息、訂單的應(yīng)用程序/框架特定類,但展現(xiàn)域特定的屬性和行為。圖2示出根據(jù)一公開方面的提供存儲(chǔ)API的方法。盡管為了簡單解釋起見,例如以流程圖或程序框圖形式在此所示的一個(gè)或多個(gè)方法被顯示和描述成一系列動(dòng)作,但應(yīng)當(dāng)理解和認(rèn)為本發(fā)明并不受限于各動(dòng)作的順序,因?yàn)椴糠謩?dòng)作可根據(jù)本發(fā)明按不同順序發(fā)生或與在此描述和顯示的其它動(dòng)作同時(shí)發(fā)生。例如,本領(lǐng)域人員將理解和認(rèn)為,方法能可選擇地表示為諸如在狀態(tài)圖中的一系列互相關(guān)聯(lián)的狀態(tài)或事件。此外,根據(jù)本發(fā)明來實(shí)現(xiàn)方法并不需要所有所示動(dòng)作。在200,接收一存儲(chǔ)API。在202,API定義用于查詢數(shù)據(jù)的類。在204,API定義用于檢索數(shù)據(jù)的類。在206,API定義用于導(dǎo)航數(shù)據(jù)的類。在208,API定義用于更改數(shù)據(jù)的類。在210,API定義用于持續(xù)保存數(shù)據(jù)的類。圖3示出一般數(shù)據(jù)訪問組件106的更詳細(xì)示圖。API300定義了從功能到便于使用、可擴(kuò)展、功能強(qiáng)大和可組合的類和方法的分解。存儲(chǔ)API300遵從公共數(shù)據(jù)模型來定義用于查詢、檢索、導(dǎo)航、更改數(shù)據(jù)、以及持久保存數(shù)據(jù)變化的類。存儲(chǔ)API300從在由該存儲(chǔ)API300查詢、導(dǎo)航和持久保存的規(guī)定數(shù)據(jù)類中定義的功能中分離此查詢、導(dǎo)航和保存功能。存儲(chǔ)API300包括以下核心類,且圖3示出StorageDomain(存儲(chǔ)域)、StorageContext(存儲(chǔ)上下文)、TableSet(表集)、StorageSearcher(存儲(chǔ)搜索器)和StorageView(存儲(chǔ)視圖)之間的關(guān)系??啥x附加的類來支持這些核心類。TableSet-TableSet類可從數(shù)據(jù)模型架構(gòu)中產(chǎn)生,并提供對(duì)在架構(gòu)內(nèi)定義的各個(gè)表的強(qiáng)類型化訪問。TableSet實(shí)例包裝一個(gè)或多個(gè)StorageContext實(shí)例,并使用基礎(chǔ)的StorageContext類和相關(guān)聯(lián)的StorageDomain類來查詢、導(dǎo)航并更新各個(gè)對(duì)象。其它方法可為架構(gòu)特定或框架特定功能而添加到所產(chǎn)生的TableSet類中。StorageDomain-定義剩余類在其上操作的存儲(chǔ)的類。不同類型的存儲(chǔ)實(shí)現(xiàn)它們自己特定的StorageDomain類。StorageDomain可直接、或結(jié)合TableSet使用。StorageContext-提供會(huì)話上下文的類。StorageContext類使用用于在當(dāng)前上下文內(nèi)刷新或保存對(duì)象變化的方法,來定義身份管理、變化跟蹤以及并發(fā)沖突處理的范圍。StorageContext類使用StorageDomain類,以便于與存儲(chǔ)通信(例如在刷新數(shù)據(jù)或持久保存變化時(shí))。StorageContext可直接、或結(jié)合TableSet使用。StorageSearcher-StorageSearcher類用于建立對(duì)數(shù)據(jù)存儲(chǔ)的可組合的基于對(duì)象的查詢。StorageSearcher類產(chǎn)生由StorageDomain通常在StorageContext內(nèi)執(zhí)行的StorageExpression類。StorageSearcher支持只以正向流方式來枚舉結(jié)果,或構(gòu)建豐富、可滾動(dòng)的StorageView。StorageView-StorageView類提供在結(jié)果集上的豐富應(yīng)用程序視圖。StorageView類支持諸如過濾、排序、滾動(dòng)、分組、劃分、展開/折疊各區(qū)域等?,F(xiàn)在參看圖4,示出向數(shù)據(jù)模型提供存儲(chǔ)API的方法。在400,接收在數(shù)據(jù)存儲(chǔ)上使用的數(shù)據(jù)平臺(tái)(例如CDP)。在402,提供包括基類的API,這些基類代表例如實(shí)體、關(guān)系、擴(kuò)展的CDM概念。數(shù)據(jù)平臺(tái)的基礎(chǔ)功能可通過在本發(fā)明的API中定義的公共CDM數(shù)據(jù)類向上層的應(yīng)用程序和應(yīng)用程序框架展現(xiàn)。在404,提供定義其它API類在其上操作的數(shù)據(jù)存儲(chǔ)的類。在406,提供用來建立對(duì)數(shù)據(jù)存儲(chǔ)的基于對(duì)象查詢的類。在408,提供定義會(huì)話上下文,并包括身份管理、變化跟蹤、沖突處理等的類。在410,提供從架構(gòu)產(chǎn)生的并提供對(duì)該架構(gòu)的表的類型化訪問的類。在412,提供便于結(jié)果集的查看的類。在414,定義一組域特定類,以便于表示由一CDM架構(gòu)實(shí)例描述的特定實(shí)體和關(guān)系。以下小節(jié)詳細(xì)描述組成公共數(shù)據(jù)模型的API的類和成員定義。StorageDomain類。StorageDomain類用來封裝諸如服務(wù)器、驗(yàn)證、映射等的存儲(chǔ)信息?;敬鎯?chǔ)域類從每類存儲(chǔ)中派生,以提供存儲(chǔ)特定信息。基本的StorageDomain類型可定義如下publicabstractclassStorageDomainIDisposable{}WinFSDomain(WinFS域)類。基于WinFS存儲(chǔ)的StorageDomain的示例可如下所示publicclassWinFSDomainStorageDomain{publicWinFSDomain();publicWinFSDomain(stringshare);}WinFSDomain構(gòu)造函數(shù)可例如通過UNC(通用命名約定)共享名取得指定存儲(chǔ)以及存儲(chǔ)內(nèi)范圍的信息?;蛘?,缺省構(gòu)造函數(shù)可將缺省存儲(chǔ)信息用于例如缺省存儲(chǔ)的根。UNC是用于標(biāo)識(shí)網(wǎng)絡(luò)中的服務(wù)器、打印機(jī)和其它資源的標(biāo)準(zhǔn),該標(biāo)準(zhǔn)源自UNIX學(xué)界。UNC路徑將雙斜線或反斜線用在計(jì)算機(jī)名字的前面。SqlStorageDomain(Sql存儲(chǔ)域)類。對(duì)關(guān)系存儲(chǔ)(例如SQL數(shù)據(jù)庫)的一個(gè)StorageDomain示例可如下所示publicclassSqlStorageDomainStorageDomain{publicSqlStorageDomain();publicSqlStorageDomain(StringconnectionString);publicSqlStorageDomain(SqlConnectionconnection,StringmappingFile);publicSqlStorageDomain(SqlConnectionconnection,IRelationalMappingmapping);}SqlStorageDomain構(gòu)造函數(shù)可接收例如包含連接和映射信息的連接字符串形式的連接信息,或包含這種信息的命名配置?;蛘?,構(gòu)造函數(shù)可以映射文件或?qū)崿F(xiàn)標(biāo)準(zhǔn)映射接口的對(duì)象的形式取得連接對(duì)象以及映射信息?;蛘?,缺省構(gòu)造函數(shù)可使用例如來自配置文件的缺省連接或映射信息。圖5示出用于展現(xiàn)表集類型的方法。在500,接收用于各表類型的一個(gè)基類。TableSet類用作表集類型的基類。該類型的各個(gè)實(shí)例也可按需由應(yīng)用程序直接創(chuàng)建和使用。基本的TableSet類型具有以下成員publicclassTableSetIDisposable{publicTableSet(StorageContextcontext,stringtableSetName);publicTableSet(StorageDomaindomain,stringtableSetName);publicTableSet(StateManagermanager,stringtableSetName);publicvoidDispose();publicStorageContextContext{get;}publicstringName{get;}publicTable<T>GetTable<T>(stringpropertyName);publicobjectGetTableSetReference(stringpropertyName);publicvoidSaveChanges();}TableSet通常用架構(gòu)內(nèi)表集的名稱來構(gòu)建?;蛘?,架構(gòu)內(nèi)的表集可通過另一機(jī)制確定,例如通過缺省命名、配置文件等。StorageContext可被提供給TableSet,以便于使TableSet關(guān)聯(lián)于現(xiàn)有的StorageContext?;蛘撸琒torageDomain可被提供給TableSet以使TableSet關(guān)聯(lián)于StorageDomain。還或者,可向TableSet提供公共的狀態(tài)管理器。在502,可提供SaveChanges(保存變化)方法以保存與表集相關(guān)聯(lián)的數(shù)據(jù)對(duì)象。還可提供該方法的異步版本。在504,可提供用來基于所提供名稱構(gòu)建和返回表示架構(gòu)中的表(例如表<T>)的對(duì)象的GetTable方法。在506,可提供GetTableSetReference(得到表集引用)方法來返回TableSetReference(表集引用)。圖6示出提供本發(fā)明API中的WinFS功能的方法。在600,采用用于WinFS功能的類。WinFSData類可以從TableSet類派生以提供WinFS特定功能。WinFSData類具有以下成員publicpartialWinFSDataTableSet{publieWinFSData(StorageContextcontext);publicWinFSData(StorageContextcontext,stringtableSetName);publicWinFSData();publicWinFSData(stringshare);publicItemGetRootItem(){}publicItemGetItemByPath(stringpath){}publicTable<Item>Items{get{}}publicTable<Link>Links{get{}}publicTable<ItemExtension>ItemExtensions{get{}}publicTable<ItemFragment>ItemFragments{get{}}//復(fù)制方法publicRef<Item>CopyItem(stringsourceItemName,stringdestinationItemName);publicRef<Item>CopyItem(stringsourceItemName,stringdestinationItemName,CopyItemOptionsoptions);publicRef<Item>CopyItem(stringsourceItemName,stringdestinationItemName,StorageContextdestinationContext,CopyItemOptionsoptions);publicRef<Item>CopyItem(Ref<Item>sourceItemRef,Ref<Item>destinationContainerRef);publicRef<Item>CopyItem(Ref<Item>sourceItemRef,Ref<Item>destinationContainerRef,CopyItemOptionsoptions);publicRef<Item>CopyItem(Ref<Item>sourceItemRef,Ref<Item>destinationContainerRef,stringnewNamespaceName,CopyItemOptionsoptions);publicRef<Item>CopyItem(ItemsourceItem,ItemdestinationContainer);publicRef<Item>CopyItem(ItemsourceItem,ItemdestinationContainer,CopyItemOptionsoptions);publicRef<Item>CopyItem(ItemsourceItem,ItemdestinationContainer,stringnewNamespaceName,CopyItemOptionsoptions);//移動(dòng)方法publicvoidMoveItem(stringsourceItemName,stringdestinationItemName);publicvoidMoveItem(stringsourceItemName,stringdestinationItemName,MoveItemOptionsoptions);publicvoidMoveItem(Ref<Item>sourceItemRef,Ref<Item>destinationContainerRef);publicvoidMoveItem(Ref<Item>sourceItemRef,Ref<Item>destinationContainerRef,stringnewNamespaceName,MoveItemOptionsoptions);publicvoidMoveItem(ItemsourceItem,ItemdestinationContainer);publicvoidMoveItem(ItemsourceItem,ItemdestinationContainer,stringnewNamespaceName,MoveItemOptionsoptions);//刪除方法publicvoidDeleteItem(stringitemName);publicvoidDeleteItem(stringitemName,ItemDeleteOptionsoptions);publicvoidDeleteItem(Ref<Item>itemRef);publicvoidDeleteItem(Ref<Item>itemRef,ItemDeleteOptionsoptions);publicvoidDeleteItem(Itemitem);publicvoidDeleteItem(Itemitem,ItemDeleteOptionsoptions);//導(dǎo)出方法publicvoidExportItem(stringitemName,Streamstream);publicvoidExportItem(stringitemName,stringfileName);publicvoidExportItem(stringitemName,stringfileName,ExportItemOptionsoptions);publicvoidExportItem(Ref<Item>itemRef,Streamstream);publicvoidExportItem(Ref<Item>itemRef,stringfileName);publicvoidExportItem(Ref<Item>itemRef,stringfileName,ExportItemOptionsoptions);publicvoidExportItem(Itemitem,Streamstream);publicvoidExportItem(Itemitem,stringfileName);publicvoidExportItem(Itemitem,stringfileName,ExportItemOptionsoptions);//導(dǎo)入方法publicvoidImportItem(Streamstream,stringitemName);publicvoidImportItem(stringfileName,stringitemName);publicvoidImportItem(stringfileName,stringitemName,ImportItemOptionsoptions);publicvoidImportItem(Streamstream,Ref<Item>containerItemRef,stringnamespaceName);publicvoidImportItem(Streamstream,Ref<Item>containerItemRef,stringnamespaceName);publicvoidImportItem(stringfileName,Ref<Item>containerItemRef,stringnamespaceName);publicvoidImportItem(stringfileName,Ref<Item>containerItemRef,stringnamespaceName,ImportItemOptionsoptions);publicvoidImportItem(Streamstream,ItemcontainerItem,stringuniuqeName);publicvoidImportItem(stringfileName,ItemcontainerItem,stringnamespaceName);publicvoidImportItem(stringfileName,Itemitem,stringnamespaceName,ImportItemOptionsoptions);}WinFSData(WinFS數(shù)據(jù))構(gòu)造函數(shù)可用現(xiàn)有的StorageContext來構(gòu)建,或可使用指定信息(諸如UNC共享)或缺省信息(例如缺省存儲(chǔ)的根)創(chuàng)建StorageContext。此外,可指定表集名稱來使WinFSData類與特別命名的表集實(shí)例相關(guān)聯(lián)。在602,提供GetRootItem(得到根項(xiàng))方法以返回域的根。也可提供該方法的異步版本。在604,可提供GetItemByPath(通過路徑得到項(xiàng))方法以便于返回給出其路徑的項(xiàng)。也可提供該方法的異步版本。在606,可提供Items(項(xiàng))、ItemExtensions(項(xiàng)擴(kuò)展)和ItemFragments(項(xiàng)片斷)屬性以返回表示Items、ItemExtensions和ItemFragments表的對(duì)象。在608,可提供Links(鏈接)屬性以返回表示Links表的對(duì)象。在610,提供用于復(fù)制、移動(dòng)和刪除各項(xiàng)的方法??商峁〤opyItem(復(fù)制項(xiàng))方法以將指定項(xiàng)復(fù)制到存儲(chǔ)內(nèi)另一位置。可提供MoveItem(移動(dòng)項(xiàng))方法以在存儲(chǔ)內(nèi)移動(dòng)指定項(xiàng)。DeleteItem(刪除項(xiàng))方法提供指定項(xiàng)從存儲(chǔ)中的刪除。在612,提供用于導(dǎo)入和導(dǎo)出各項(xiàng)的方法??商峁〦xportItem(導(dǎo)出項(xiàng))方法以從存儲(chǔ)中導(dǎo)出指定項(xiàng)??商峁㊣mportItem(導(dǎo)入項(xiàng))方法以將指定項(xiàng)導(dǎo)入該存儲(chǔ)。也可提供CopyItem方法、MoveItem方法、DeleteItem方法、ExportItem方法和ImportItem方法的異步版本。圖7示出表示存儲(chǔ)中的類的方法。在700,定義表示存儲(chǔ)內(nèi)的范圍的類。Table<T>類用來表示存儲(chǔ)內(nèi)的范圍。Table<T>類可具有將對(duì)象添加到該范圍或從該范圍移除的方法,以及在該范圍的內(nèi)容上建立StorageSearcher。publicclassTable<T>{publicTable(StorageContextcontext,stringTableName);publicTable(StorageDomaindomain,stringTableName);publicStorageContextContext{get;internalset;}publicStorageDomainDomain{get;internalset;}publicStorageSearcher<T>Searcher{get;}//支持ICollectionboolICollection<T>.Add(Tobj);voidICollection<T>.Remove(Tobj);voidICollection<T>.Clear();boolICollection<T>.Contains(Tt);publicvirtualintCount{get;}voidICollection<T>.CopyTo(T[]array,intarrayIndex);boolICollection<T>.IsReadOnly{get{}}}Table<T>類可用指定StorageContext或StorageDomain的信息、以及架構(gòu)中相應(yīng)表的名稱來構(gòu)建。在702,可提供Context(上下文)屬性以便于返回關(guān)聯(lián)于Table<T>類的StorageContext。在704,可提供Domain(域)屬性以便于返回關(guān)聯(lián)于Table<T>類的StorageDomain。在706,可公開Searcher(搜索器)屬性以便于返回對(duì)存儲(chǔ)中相應(yīng)表的StorageSearcher。在708,提供用于添加、移除和清除對(duì)象的方法??烧宫F(xiàn)Add(添加)方法以便于將對(duì)象加入表中??烧宫F(xiàn)Remove(移除)方法以便于指定要從表中移除的對(duì)象。可展現(xiàn)Clear方法以便于清除該表。在710,可展現(xiàn)Contains(包含)方法以便于返回表是否包含指定對(duì)象。在712,可展現(xiàn)Count(計(jì)數(shù))方法以便于指定表內(nèi)對(duì)象的總量。在714,提供將指定對(duì)象復(fù)制到表中的方法。在716,提供展現(xiàn)表是否為只讀的屬性??烧宫F(xiàn)CopyTo(復(fù)制到)方法以便于將指定對(duì)象復(fù)制到表中??烧宫F(xiàn)IsReadyOnly(只讀)屬性以便于返回是否可從表添加或移除。圖8示出封裝客戶機(jī)和一個(gè)或多個(gè)存儲(chǔ)之間的連接的方法。此外,該類定義會(huì)話上下文、用于身份管理、變化跟蹤和并發(fā)沖突處理的范圍。StorageContext類封裝客戶機(jī)和一個(gè)或多個(gè)存儲(chǔ)之間的連接,并且是用于CRUD(創(chuàng)建、讀取、更新和刪除)操作的通道。publicclassStorageContextIDisposable{publicStorageContext();publicStoragecontext(StorageDomaindomain);publicobjectGetObjectByKey(StorageKeykey);publicStorageKeyGetObjectKey(objecto);publicvoidSaveChanges();publicvoidRefresh(RefreshModeoptions,IEnumerable<object>objects);publicvoidRefresh(RefreshModeoptions,paramsobject[]objects);publicvoidDispose();publicStorageDomainDomain{get;}publicvoidAdd(objecto);publicvoidMarkForDeletion(objecto);}給定一個(gè)提供存儲(chǔ)信息的StorageDomain就可構(gòu)建StorageContext?;蛘撸琒torageContext可不用StorageDomain構(gòu)建,并從諸如配置文件的缺省源中獲取存儲(chǔ)信息。在802,提供通過鍵返回對(duì)象的方法。可提供GetObjeetByKey(通過鍵得到對(duì)象)方法來返回StorageContext內(nèi)與特定鍵相關(guān)聯(lián)的對(duì)象。該方法還可劃分入單個(gè)的StateManagement(狀態(tài)管理)對(duì)象。也可提供該方法的異步版本。在804,可提供GetObjectKey(得到對(duì)象鍵)方法來返回StorageContext內(nèi)與特定對(duì)象相關(guān)聯(lián)的鍵。該方法還可劃分入單個(gè)的StateManagement對(duì)象。在806,可提供SaveChanges方法以在StorageContext內(nèi)保存對(duì)對(duì)象的添加、刪除或更改。也可提供該方法的異步版本。在808,可提供Refresh(刷新)方法來用當(dāng)前存儲(chǔ)值刷新StorageContext內(nèi)的對(duì)象。要刷新的明確對(duì)象集可例如通過枚舉器指定或被指定為參數(shù)。另外的選項(xiàng)也可指定以控制如何處理變化沖突。也可提供該方法的異步版本。在810,可提供Add方法來使新對(duì)象與StorageContext相關(guān)聯(lián)。該方法還可劃分入單個(gè)的StateManagement對(duì)象。在812,可提供MarkForDeletion(標(biāo)記刪除)方法來在StorageContext內(nèi)標(biāo)記在調(diào)用SaveChanges時(shí)要?jiǎng)h除的對(duì)象。該方法還可劃分入單個(gè)的StateManagement對(duì)象。在814,可提供StorageDomain屬性來返回與StorageContext相關(guān)聯(lián)的StorageDomain。圖9示出建立對(duì)存儲(chǔ)的查詢的方法。在900,定義用于建立對(duì)存儲(chǔ)的查詢的基類。StorageSearcher類用來建立對(duì)存儲(chǔ)的可組合的基于對(duì)象的查詢。StorageSearcher生成通常在StorageContext內(nèi)由StorageDomain執(zhí)行的StorageExpression。StorageSearcher支持以僅向前的流方式枚舉結(jié)果,或支持構(gòu)建豐富的可滾動(dòng)的StorageView。publicclassStorageSearcher<T>IStorageSearcher,IEnumerable<T>whereTclass{publicStorageSearcher(stringexpression);publicStorageSearcher(stringexpression,object[]parameters);publicStorageSearcher(stringexpression,object[]parameters,StorageContextcontext);publicStorageSearcher(StorageExpressionexpression);publicStorageSearcher(StorageExpressionexpression,StorageContextcontext);publicStorageSearcher(stringexpression,object[]parameters,StorageDomainstore);publicStorageSearcher(StorageExpressionexpression,StorageDomainstore);publicStorageContextContext{get;}publicStorageDomainDomain{get;}publicStorageExpressionExpression{get;}TypeIStorageSearcher.ResultType{get;}publicStorageSearcher<T>BindContext(StorageContextcontext);IStorageSearcherIStorageSearcher.BindContext(StorageContextcontext);publicStorageSearcher<T>BindParameters(IDictionary<string,object>parameters);IStorageSearcherIStorageSearcher.BindParameters(IDictionaryparameters);publicStorageSearcher<T>Filter(stringexpression,paramsobject[]parameters);publicStorageSearcher<U>FilterByType<U>()whereUT;publicStorageSearcher<U>TreatAsType<U>();publicStorageSearcher<T>Sort(stringexpression,paramsobject[]parameters);publicStorageSearcher<StorageRecord>Project(stringexpression,paramsobject[]parameters);publicStorageSearcher<StorageRecord>Group(stringexpression,paramsobject[]parameters);publicStorageSearcher<T>Union(StorageSearcher<T>searcher);publicStorageSearcher<U>Query<U>(stringexpression,paramsobject[]parameters);publicStorageSearcher<U>Query<U>(StorageExpressionexpression);IStorageSearcherIStorageSearcher.Query(TyperesultType,StorageExpressionexpression);IStorageSearcherIStorageSearcher.Query(TyperesultType,stringexpression,paramsobject[]parameters);publicIEnumerator<T>GetEnumerator();IEnumeratorIEnumerable.GetEnumerator();publicTGetFirst();objectIStorageSearcher.GetFirst();publicintGetCount();publicList<T>GetList();publicStorageView<StorageViewRecord>CreateView();publicStorageView<StorageViewRecord>CreateView(StorageViewDefinitiondefinition);publicStorageView<StorageViewRecord>CreateView(StorageViewDefinitiondefinition,StorageViewOptionsoptions);publicStorageView<T>CreateView<T>(StorageViewDefinitiondefinition,StorageViewOptionsoptions)whereTStorageViewRecord{}}StorageSearcher可用StorageContext或StorageDomain構(gòu)建,以指定StorageSearcher所限的上下文或存儲(chǔ)。此外,可指定查詢表達(dá)式以初始化StorageSearcher,如字符串或StorageExpression對(duì)象樹。在902,可提供Query方法以構(gòu)建封裝任意查詢表達(dá)式的新的StorageSearcher。在904,提供Filter(過濾)方法。可提供Filter方法來構(gòu)建新的StorageSearcher,該StorageSearcher封裝對(duì)由輸入搜索器產(chǎn)生的查詢結(jié)果的過濾器??商峁〧ilterByType(根據(jù)類型過濾)方法來構(gòu)建新的StorageSearcher,該StorageSearcher封裝對(duì)由輸入搜索器產(chǎn)生的查詢結(jié)果的過濾器。可提供TreatAsType(視為類型)方法來構(gòu)建新的StorageSearcher,該StorageSearcher將由輸入搜索器產(chǎn)生的查詢結(jié)果視為不同類型。在906,提供Sort(排序)、Project(投影)、Group(分組)和Union(合并)方法??商峁㏒ort方法來構(gòu)建新的StorageSearcher,該StorageSearcher封裝對(duì)由輸入搜索器產(chǎn)生的查詢結(jié)果的排序??商峁㏄roject方法來構(gòu)建新的StorageSearcher,該StorageSearcher封裝對(duì)由輸入搜索器產(chǎn)生的查詢結(jié)果的投影??商峁〨roup方法來構(gòu)建新的StorageSearcher,該StorageSearcher封裝對(duì)由輸入搜索器產(chǎn)生的查詢結(jié)果的分組??商峁︰nion方法來構(gòu)建新的StorageSearcher,該StorageSearcher封裝對(duì)由輸入搜索器產(chǎn)生的查詢結(jié)果的合并。以上僅是示例且并非被解釋為限制性的??商峁㏒torageSearcher上的其它方法,以表示其它查詢操作。換言之,各查詢操作可展現(xiàn)為StorageSearcher類上的返回新的StorageSearcher的方法在908,可提供GetEnumerator(得到枚舉器)方法來返回可用來訪問查詢結(jié)果的枚舉器。也可提供該方法的異步版本。在910,提供返回查詢的第一結(jié)果的方法。還可提供這些方法的異步版本。可提供GetFirst(得到第一)方法來返回該第一結(jié)果。還可提供該方法的異步版本??商峁〨etCount(得到計(jì)數(shù)值)方法來返回結(jié)果的計(jì)數(shù)值。還可提供該方法的異步版本。在912,可提供CreateView(創(chuàng)建視圖)方法來創(chuàng)建來自StorageSearcher查詢的StorageView。CreateView方法可以取帶有或不帶有指定視圖特定信息的其它選項(xiàng)的StorageViewDefinition(存儲(chǔ)視圖定義)。當(dāng)查詢將返回未對(duì)應(yīng)于任何特定應(yīng)用程序的定義類型的數(shù)據(jù)時(shí),StorageRecord類被用作搜索器的結(jié)果類型。例如,Project或Group操作的結(jié)果是StorageRecord對(duì)象的集合。//StorageRecord表示結(jié)構(gòu)類型查詢結(jié)果中的值。publicclassStorageRecordSystem.ComponentModel.ICustomTypeDescriptor{//獲得一字段的值publicobjectthis[stringname]{get;}}圖10示出查看結(jié)果集的方法。在1000,提供用于查看結(jié)果的類。StorageView類對(duì)結(jié)果集提供豐富的應(yīng)用程序視圖。StorageView支持諸如過濾、排序、滾動(dòng)、分組、劃分、展開/折疊各區(qū)域等的操作。sealedpublicclassStorageView<T>IVirtualList,IServiceContainer,IEnumerable,IListSource,IDisposablewhereTStorageViewRecord{publicStorageViewDefinitionCopyDefinition(){}publicvoidApplyDefinition(StorageViewDefinitiondefinition){}publicintCount{get;}publicTCurrent{get;}publicTthis[ViewRecordBookmarkbookmark]{get;}publicTFindRecord(ViewRecordBookmarkbookmark,boolforward,stringexpression,paramsobject[]parameters){}publicTFindRecord(StorageViewSeekOriginseekOrigin,boolforward,stringexpression,paramsobject[]parameters){}publicvoidMoveCurrentPosition(StorageViewSeekOriginseekOrigin,intoffset);publicvoidMoveCurrentPosition(ViewRecordBookmarkbookmark,intoffset);publicvoidRefresh(){}publicviewRecordBookmarkGetBookmarkFromBinary(byte[]bookmark){}publicbyte[]GetBinaryFromBookmark(ViewRecordBookmarkbookmark){}publicvoidCollapseSection(paramsobject[]sectionValues){}publicvoidCollapseSection(ViewRecordBookmarkbookmark){}publicvoidExpandSection(paramsobject[]sectionValues){}publicvoidExpandSection(ViewRecordBookmarkbookmark){}publicvoidCollapseAllSections(){}publicvoidExpandAllSections(){}publicvoidExpandSectionLevel(intsectionLevel){}publicvoidLoadSectionExpandState(System.Xml.XmlReaderreader);publicvoidSaveSectionExpandState(System.Xml.XmlWriterwriter);publicvoidSetExtendedFields(StorageViewRecord[]records,stringfields);publicIListIListSource.GetList();publiceventViewChangedEventHandlerViewChanged;}在1002,可提供CopyDefinition(復(fù)制定義)方法來創(chuàng)建StorageViewDefinition的新實(shí)例。可提供ApplyDefinition(應(yīng)用定義)方法來將所指定的StorageViewDefinition應(yīng)用到當(dāng)前的StorageView中。也可提供該方法的異步版本。在1004,提供用于查找記錄、返回記錄計(jì)數(shù)值和當(dāng)前記錄的方法??商峁〧indRecord(查找記錄)方法來根據(jù)相關(guān)于指定位置或書簽的指定過濾器來在當(dāng)前的StorageView內(nèi)查找StorageViewRecord。也可提供該方法的異步版本??商峁〤ount方法以返回當(dāng)前StorageView內(nèi)的記錄數(shù)。也可提供該方法的異步版本??商峁〤urrent方法以便于返回StorageView內(nèi)當(dāng)前的StorageViewRecord。在1006,可提供索引訪問器(例如this[])以便于返回給定書簽的StorageViewRecord。也可提供該方法的異步版本。在1008,提供用于移動(dòng)位置并刷新視圖的方法??商峁㎝oveCurrentPosition(移動(dòng)當(dāng)前位置)方法以便于根據(jù)指定位置或書簽和偏移來移動(dòng)StorageView內(nèi)的當(dāng)前位置。也可提供該方法的異步版本??商峁㏑efresh方法以便于用來自存儲(chǔ)的當(dāng)前值來刷新靜態(tài)StorageView內(nèi)的數(shù)據(jù)。也可提供該方法的異步版本。在1010,可提供得到書簽及其二進(jìn)制表示的方法??商峁〨etBookmarkFromBinary(從二進(jìn)制得到書簽)方法以便于從持久的二進(jìn)制表示中得到書簽??商峁〨etBinaryFromBookmark(從書簽得到二進(jìn)制)方法以便于從書簽中得到持久的二進(jìn)制表示。在1012,提供用于展開、折疊各區(qū)域、層次、字段的方法??商峁〤ollapseAllSections(折疊所有區(qū)域)方法以便于折疊StorageView內(nèi)所定義的所有區(qū)域。也可提供該方法的異步版本??商峁〦xpandAllSections(展開所有區(qū)域)方法以便于展開StorageView內(nèi)所定義的所有區(qū)域。也可提供該方法的異步版本??商峁〦xpandSectionLevel(展開區(qū)域的層次)方法以便于將所有區(qū)域往上展開并包括指定層。也可提供該方法的異步版本。在1014,提供用于擴(kuò)展記錄字段的方法??商峁㏒etExtendedFields(設(shè)置擴(kuò)展字段)方法以便于定義與StorageViewRecords集相關(guān)聯(lián)的擴(kuò)展字段。在1016,提供用于保存和載入展開區(qū)域狀態(tài)的方法??商峁㎜oadSectionExpandState(載入?yún)^(qū)域展開狀態(tài))方法來載入指定經(jīng)展開區(qū)域集的狀態(tài)。也可提供該方法的異步版本。可提供SaveSectionExpandState(保存區(qū)域展開狀態(tài))方法以便于保存指定經(jīng)展開區(qū)域集的狀態(tài)。StorageView可展現(xiàn)用于在StorageView已改變時(shí)通知收聽者的ViewChanged(改變視圖)事件。圖11示出呈現(xiàn)結(jié)果上數(shù)據(jù)的初始視圖。在1100,提供定義數(shù)據(jù)的初始視圖的類。StorageViewDefinition類定義由StorageSearcher定義的結(jié)果上的數(shù)據(jù)的初始視圖。publicclassStorageViewDefinition{publicstringSort{get;set;}publicIList<StorageViewSection>Sections{get;}publicintSectionExpandLevel{get;set;}publicstringFilter{get;set;}publicvoidSetFilter(stringexpression,paramsobject[]parameters);publicstringFields{get;set;}publicvoidSetFields(stringexpression,paramsobject[]parameters);publicIDictionary<string,object>Parameters{get;}publicboolAutoRefresh{get;set;}publicintPageSize{get;set;}}在1102,提供Sort屬性以得到或設(shè)置用于StorageView的排序準(zhǔn)則。在1104,提供用于改變或展開各區(qū)域的屬性??商峁㏒ections(區(qū)域)屬性,以便于改變?cè)赟torageView內(nèi)定義的區(qū)域列表??商峁㏒ectionExpandLevel屬性,以便于將各區(qū)域往上展開并包括指定層。在1106,提供用于過濾各操作的屬性和方法??烧宫F(xiàn)Filter屬性以便于過濾StorageView,以僅展現(xiàn)匹配指定過濾條件的那些StorageViewRecords。可展現(xiàn)SetFilter(設(shè)置過濾器)方法以便于過濾StorageView以僅展現(xiàn)匹配使用指定參數(shù)的指定過濾條件的那些StorageViewRecords。在1108,提供限制所展現(xiàn)字段的屬性和方法??烧宫F(xiàn)Fields(字段)屬性以便于將由StorageView展現(xiàn)的字段限制于那些指定字段??烧宫F(xiàn)Fields方法以便于使用指定參數(shù)將由StorageView展現(xiàn)的字段限制于那些指定字段。在1110,提供列出由過濾、排序和劃分使用的參數(shù)的集合??烧宫F(xiàn)列出由過濾、排序和劃分規(guī)范使用的參數(shù)的Parameters(參數(shù))集合。在1112,可展現(xiàn)BooleanAutoRefresh(布爾自動(dòng)刷新)屬性,以便于指定StorageView是否與對(duì)存儲(chǔ)的變化同步自動(dòng)保存。在1114,可展現(xiàn)PageSize(頁面大小)屬性,以便于指定要一次性從存儲(chǔ)中檢索的StorageViewRecords數(shù)量。圖12示出擴(kuò)展存儲(chǔ)記錄類的方法。在1200,提供添加視圖屬性的類。StorageViewRecord擴(kuò)展StorageRecord,添加StorageView特定屬性,諸如劃分信息、書簽和字段設(shè)置器。StorageViewRecords支持IPropertyChange,以在StorageViewRecords內(nèi)的值改變時(shí)通知收聽者。publicclassStorageViewRecordStorageRecord,IPropertyChange{publicvirtualboolIsSectionRecord{get;}publicvirtualintSectionLevel{get;}publicvirtualstringSectionName{get;}publicvirtualboolIsSectionExpanded{get;}publicvirtualViewRecordBookmarkBookmark{get;}protectedvirtualvoidSetValueinRecord(inti,objectvalue);protectedvirtualvoidSetValueinRecord(stringname,objectvalue);}在1202,可展現(xiàn)IsSectionRecord(是區(qū)域記錄)屬性,以便于返回StorageViewRecord是否表示StorageView中的區(qū)域標(biāo)題記錄。在1204,提供用作區(qū)域信息的屬性??烧宫F(xiàn)SectionLevel(區(qū)域?qū)哟?屬性以便于返回StorageViewRecord在StorageView內(nèi)的層次??晒_SectionName屬性以便于返回StorageView內(nèi)的區(qū)域的名稱。可展現(xiàn)IsSectionExpanded(區(qū)域已展開)屬性,以便于返回該區(qū)域是否展開。在1206,可展現(xiàn)Bookmark(書簽)屬性,以便于返回當(dāng)前StorageViewRecord的書簽。在1208,可展現(xiàn)SetValueinRecord(設(shè)置記錄內(nèi)值)方法,以便于在StorageViewRecord內(nèi)設(shè)置所指定字段的值??赏ㄟ^名稱或序號(hào)來指定字段。StorageViewSection用來定義StorageView內(nèi)的區(qū)域(組)。publicclassStorageViewSection{publicStorageViewSection(stringfield){}publicstringField{get;}publicstringAggregateFields{get;set;}publicstringSort{get;set;}publicstringHaving{get;set;}publicvoidSetHaving(stringexpression,paramsobject[]parameters);}可構(gòu)建在StorageView內(nèi)指定定義該區(qū)域的字段的StorageViewSection??烧宫F(xiàn)Field屬性以返回StorageView內(nèi)定義該區(qū)域的字段??烧宫F(xiàn)AggregateFields屬性,以便于得到或設(shè)置計(jì)算該區(qū)域的聚合??烧宫F(xiàn)Sort屬性,以便于指定該區(qū)域內(nèi)StorageViewRecords的順序??烧宫F(xiàn)Having屬性,以便于根據(jù)所指定的Aggregate字段來限制StorageViewRecords??烧宫F(xiàn)SetHaving方法,以便于根據(jù)所指定的Aggregate字段以及參數(shù)集來限制StorageViewRecords。StorageCollection<T>類用來表示其填充可推遲的強(qiáng)類型化對(duì)象集合。例如,StorageCollection可在父對(duì)象的集合屬性中使用。StorageCollection可在訪問其內(nèi)容時(shí)顯式或隱式地填充。publicclassStorageCollection<T>ICollection<T>,IBindingList,ITypedList{publicStorageCollection();publicStorageCollection(objectparent,StorageContextctx,stringrole);publicStorageContextContext{get;internalset;}publicStorageDomainDomain{get;internalset;}publicvoidFill();publicvoidFill(StorageSearcher<T>searcher);publicvoidFill(IEnumerable<T>values);publicboolIsFilled{get;}publicvoidReset();publicStorageSearcher<T>Searcher{get;}publicIEnumerator<T>GetEnumerator();//支持ICollectionboolICollection<T>.Add(Tobj);voidICollection<T>.Remove(Tobj);voidICollection<T>.Clear();boolICollection<T>.Contains(Tt);publicvirtualintCount{get;}voidICollection<T>.CopyTo(T[]array,intarrayIndex);boolICollection<T>.IsReadOnly{get{}}}例如如果StorageCollection表示父對(duì)象的集合屬性內(nèi)的各個(gè)對(duì)象,則StorageCollection可用指定StorageContext或StorageDomain、父對(duì)象、以及與StorageCollection相關(guān)聯(lián)的角色的信息來構(gòu)建??商峁〤ontext屬性,以便于返回與StorageCollection相關(guān)聯(lián)的StorageContext??商峁〥omain屬性,以便于返回與StorageCollection相關(guān)聯(lián)的StorageDomain??商峁〧ill方法以便于將各個(gè)對(duì)象添加到集合中。Fill方法可取得IEnumerable<T>或StorageSearcher,或可使用父屬性或角色屬性、以及StorageDomain或StorageContext,以便于產(chǎn)生對(duì)填充StorageCollection的請(qǐng)求??晒_IsFilled屬性以便于返回StorageCollection是否已被填充。可展現(xiàn)Reset方法,以便于重新設(shè)置StorageCollection??烧宫F(xiàn)Searcher屬性,以便于返回對(duì)與集合定義相對(duì)應(yīng)的存儲(chǔ)的StorageSearcher??烧宫F(xiàn)GetEnumerator方法,以便于返回對(duì)StorageCollection內(nèi)容的枚舉器??烧宫F(xiàn)Add方法,以便于添加對(duì)象到StorageCollection。可公開Remove方法,以便于從StorageCollection移除一對(duì)象??烧宫F(xiàn)Clear方法,以便于清除StorageCollection??烧宫F(xiàn)Contains方法,以便于返回StorageCollection是否包含指定對(duì)象實(shí)例。可展現(xiàn)Count方法,以便于指定StorageCollection內(nèi)的對(duì)象總量??烧宫F(xiàn)CopyTo方法,以便于將所指定對(duì)象復(fù)制到StorageCollection中??烧宫F(xiàn)IsReadOnly屬性,以便于返回是否可以對(duì)StorageCollection進(jìn)行添加或從中移除。圖13示出將存儲(chǔ)API100用于CDP1302的系統(tǒng)1300。CDP1302用來提供在數(shù)據(jù)應(yīng)用程序和應(yīng)用程序框架1304以及數(shù)據(jù)存儲(chǔ)1306上的數(shù)據(jù)之間的數(shù)據(jù)管理。CDP1302提供應(yīng)用程序框架和與其相關(guān)聯(lián)的終端用戶應(yīng)用程序上共用的數(shù)據(jù)服務(wù)。CDP1302還包括便于與應(yīng)用程序和應(yīng)用程序框架1304、運(yùn)行時(shí)組件1308、以及約束/安全引擎組件1310通過接口相連的API100。API100向應(yīng)用程序提供使用CDP1302的公共類、接口和靜態(tài)幫助函數(shù)形式的編程接口。其示例包括StorageContext、StorageSearcher、Entity、Entity、TableSet、Table、EntityReference及TableReference。CDP運(yùn)行時(shí)組件1308是實(shí)現(xiàn)在公共API層100中展現(xiàn)的各種特征的層。它通過提供對(duì)象關(guān)系映射和查詢映射、增強(qiáng)數(shù)據(jù)模型約束等來實(shí)現(xiàn)公共數(shù)據(jù)模型。更具體地,CDP運(yùn)行時(shí)1308包括公共數(shù)據(jù)模型組件實(shí)現(xiàn);查詢處理器組件;會(huì)話和事務(wù)組件;對(duì)象高速緩存,可包括會(huì)話高速緩存和顯式高速緩存;服務(wù)組件,包括變化跟蹤、沖突檢測和事件處理;游標(biāo)和規(guī)則組件;業(yè)務(wù)邏輯承載組件;持久保存和查詢引擎,它們提供核心持久保存和查詢服務(wù)。在持久保存和查詢服務(wù)內(nèi)部就是對(duì)象關(guān)系映射,包括查詢/更新映射。CDP1302還包括約束/安全引擎1310,它提供對(duì)數(shù)據(jù)存儲(chǔ)器1306應(yīng)用約束,以及應(yīng)用基于角色安全的安全策略?,F(xiàn)在參看圖14,示出了可操作來執(zhí)行所公開API體系結(jié)構(gòu)的計(jì)算機(jī)的框圖。為了提供本發(fā)明諸方面的其它上下文,圖14和以下討論旨在提供本發(fā)明諸方面可在其中實(shí)現(xiàn)的適當(dāng)計(jì)算環(huán)境1400的簡要一般說明。盡管本發(fā)明是在可在一臺(tái)或多臺(tái)計(jì)算機(jī)上運(yùn)行的計(jì)算機(jī)可執(zhí)行指令的一般環(huán)境中說明的,本領(lǐng)域技術(shù)人員將理解本發(fā)明也可結(jié)合其它程序模塊和/或硬件和軟件的組合來實(shí)現(xiàn)。通常,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、組件、數(shù)據(jù)結(jié)構(gòu)等。另外,本領(lǐng)域技術(shù)人員將理解本發(fā)明的方法也可用其它計(jì)算機(jī)系統(tǒng)配置來實(shí)踐,包括單處理器或多處理器計(jì)算機(jī)系統(tǒng)、小型計(jì)算機(jī)、大型計(jì)算機(jī)、以及個(gè)人計(jì)算機(jī)、手持式計(jì)算裝置、基于微處理器的或可編程消費(fèi)電器等,其中每個(gè)裝置都可有效地與一個(gè)或多個(gè)相關(guān)聯(lián)裝置耦合。本發(fā)明的所述諸方面也可在特定任務(wù)由經(jīng)通信網(wǎng)絡(luò)連接的遠(yuǎn)程處理設(shè)備執(zhí)行的分布式計(jì)算環(huán)境中實(shí)踐。在分布式計(jì)算環(huán)境中,程序模塊可置于本地和遠(yuǎn)程存儲(chǔ)設(shè)備。計(jì)算機(jī)通常包括各種計(jì)算機(jī)可讀介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以是能被計(jì)算機(jī)訪問的任何可用介質(zhì),并包括易失性和非易失性介質(zhì)、可移動(dòng)和不可移動(dòng)介質(zhì)。作為示例,而非限制,計(jì)算機(jī)可讀介質(zhì)可包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括以任何方法或技術(shù)實(shí)現(xiàn)、用于存儲(chǔ)諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的易失性和非易失性介質(zhì)、可移動(dòng)和不可移動(dòng)介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括但不限于RAM、ROM、EEPROM、閃存或其它存儲(chǔ)器技術(shù)、CD-ROM、數(shù)字化視頻盤(DVD)或其它光學(xué)存儲(chǔ)技術(shù)、盒式磁帶、磁帶、磁盤存儲(chǔ)或其它磁性存儲(chǔ)設(shè)備、或任何其它可用于存儲(chǔ)所需信息并可由計(jì)算機(jī)訪問的介質(zhì)。通信介質(zhì)通常包括諸如載波或其它傳輸機(jī)制的調(diào)制數(shù)據(jù)信號(hào)中的計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊、或其它數(shù)據(jù),且包括任何信息傳送介質(zhì)。術(shù)語“已調(diào)制數(shù)據(jù)信號(hào)”意指用將信息編碼在信號(hào)中的方式設(shè)置或改變其一個(gè)或多個(gè)特征的信號(hào)。作為示例,而非限制,通信介質(zhì)包括諸如有線網(wǎng)絡(luò)或直線連接的有線介質(zhì),和諸如聲學(xué)、射頻、紅外線和其它無線介質(zhì)的無線介質(zhì)。以上任何介質(zhì)的組合也應(yīng)包括在計(jì)算機(jī)可讀介質(zhì)的范圍中。參照?qǐng)D14,用于實(shí)現(xiàn)本發(fā)明各方面的示例性環(huán)境1400包括計(jì)算機(jī)1402,計(jì)算機(jī)1402包括處理單元1404、系統(tǒng)存儲(chǔ)器1406、及系統(tǒng)總線1408。系統(tǒng)總線1408將包括但不限于系統(tǒng)存儲(chǔ)器1406的系統(tǒng)組件耦合到處理單元1404。處理單元1404可以是各種市場上提供的處理器的任一種。雙微處理器和其它多處理器體系結(jié)構(gòu)也可用作處理單元1404。系統(tǒng)總線1408可以是若干類總線結(jié)構(gòu)的任一種,它還可與存儲(chǔ)器總線(有或無存儲(chǔ)器控制器)、外圍總線、以及使用各種市場上提供的總線架構(gòu)中的任一種的本地總線互連。系統(tǒng)存儲(chǔ)器1406包括只讀存儲(chǔ)器(ROM)1410和隨機(jī)存取存儲(chǔ)器(RAM)1412。包含在計(jì)算機(jī)1402的元件間傳送如起動(dòng)時(shí)信息的基本例程的基本輸入/輸出系統(tǒng)(BIOS),存儲(chǔ)在諸如ROM、EPROM、EEPROM的非易失性存儲(chǔ)器1410上。RAM1412還包括諸如用來高速緩存數(shù)據(jù)的靜態(tài)RAM的高速RAM。計(jì)算機(jī)1402還包括內(nèi)部硬盤驅(qū)動(dòng)器(HDD)1414(例如EIDE、SATA)(也可被配置在適當(dāng)箱體(未示出)中用來外部使用)、磁性軟盤驅(qū)動(dòng)器(FDD)1416(例如讀取或?qū)懭肟梢苿?dòng)磁盤1418)和光盤驅(qū)動(dòng)器1420(例如讀取CD-ROM1422,或讀取或?qū)懭肫渌T如DVD的大容量光學(xué)介質(zhì))。硬盤驅(qū)動(dòng)器1414、磁盤驅(qū)動(dòng)器1416、和光盤驅(qū)動(dòng)器1420分別通過硬盤驅(qū)動(dòng)器接口1424、磁盤驅(qū)動(dòng)器接口1426、和光盤驅(qū)動(dòng)器接口1428與系統(tǒng)總線1408相連。用于外部驅(qū)動(dòng)器實(shí)現(xiàn)的接口1424包括通用串行總線(USB)和IEEE1394接口技術(shù)的至少之一或全部。其他外部驅(qū)動(dòng)器連接技術(shù)也包括在本發(fā)明之內(nèi)。這些驅(qū)動(dòng)器及其相關(guān)聯(lián)的計(jì)算機(jī)可讀介質(zhì)提供數(shù)據(jù)、數(shù)據(jù)結(jié)構(gòu)、計(jì)算機(jī)可執(zhí)行指令等等的非易失性存儲(chǔ)。對(duì)于計(jì)算機(jī)1402,驅(qū)動(dòng)器和介質(zhì)容納了具適當(dāng)數(shù)字化格式的任何數(shù)據(jù)的存儲(chǔ)。盡管以上所述的計(jì)算機(jī)可讀介質(zhì)指HDD、可移動(dòng)磁盤和諸如CD或DVD的可移動(dòng)光學(xué)介質(zhì),本領(lǐng)域技術(shù)人員將理解,其它類型的計(jì)算機(jī)可讀介質(zhì),諸如zip驅(qū)動(dòng)器、磁帶、閃存卡、盒式磁帶等等,也能用于示例性操作環(huán)境,而且,任何這種介質(zhì)都可包含執(zhí)行本發(fā)明方法的計(jì)算機(jī)可執(zhí)行指令。眾多程序模塊,包括操作系統(tǒng)1430、一個(gè)或多個(gè)應(yīng)用程序1432、其它程序模塊1434、和程序數(shù)據(jù)1436,可存儲(chǔ)在驅(qū)動(dòng)器和RAM1412中。操作系統(tǒng)、應(yīng)用程序、模塊、和/或數(shù)據(jù)的全部或部分也可高速緩存在RAM1412中??梢岳斫獗景l(fā)明可用各種市場上提供的操作系統(tǒng)或操作系統(tǒng)的組合來實(shí)現(xiàn)。用戶可通過一個(gè)或多個(gè)諸如鍵盤1438的有線/無線輸入裝置和諸如鼠標(biāo)1440的定位裝置向個(gè)人計(jì)算機(jī)1402輸入指令和信息。其它輸入裝置(未示出)可包括話筒、IR遙控器、操縱桿、游戲墊、電子筆、觸摸屏等等。這些和其它輸入裝置通常通過與系統(tǒng)總線1408耦合的輸入裝置接口1442連接到處理單元1404,但也可能通過其它接口相連,如并行端口、IEEE1394串行端口、游戲端口、USB端口、IR接口等等。監(jiān)視器1444或其它類型的顯示裝置也通過諸如視頻適配器1446的接口和系統(tǒng)總線1408相連。除了顯示器1444,計(jì)算機(jī)通常包括其它外圍輸出裝置(未示出),如揚(yáng)聲器和打印機(jī)等。計(jì)算機(jī)1402可以在使用與一臺(tái)或多臺(tái)遠(yuǎn)程計(jì)算機(jī),諸如遠(yuǎn)程計(jì)算機(jī)1448經(jīng)有線和/或無線通信的邏輯連接的網(wǎng)絡(luò)化環(huán)境中運(yùn)行。遠(yuǎn)程計(jì)算機(jī)1448可以是工作站、服務(wù)器計(jì)算機(jī)、路由器、個(gè)人計(jì)算機(jī)、便攜式計(jì)算機(jī)、基于微處理器的娛樂裝置、對(duì)等裝置或其它普通網(wǎng)絡(luò)節(jié)點(diǎn),而且通常包括上述與個(gè)人計(jì)算機(jī)1402相關(guān)的許多或全部部件,盡管為簡化起見在圖1中僅顯示了存儲(chǔ)器/存儲(chǔ)裝置1450。所述邏輯連接包括與局域網(wǎng)(LAN)1452和例如廣域網(wǎng)(WAN)1454的較大網(wǎng)絡(luò)的有線/無線連接。這樣的LAN和WAN網(wǎng)絡(luò)化環(huán)境在辦公室和公司內(nèi)是常見的,并便于建立諸如內(nèi)聯(lián)網(wǎng)的企業(yè)范圍計(jì)算機(jī)網(wǎng)絡(luò),所有這些都可連接到諸如因特網(wǎng)的全球通信網(wǎng)絡(luò)上。當(dāng)用于LAN網(wǎng)絡(luò)環(huán)境中時(shí),計(jì)算機(jī)1402通過有線和/或無線的通信網(wǎng)絡(luò)接口或適配器1456與局域網(wǎng)1452連接。適配器1456可便于與LAN1452的有線或無線通信,其中還可包括用于與無線適配器1456通信的無線接入點(diǎn)。當(dāng)用于WAN網(wǎng)絡(luò)環(huán)境中時(shí),計(jì)算機(jī)1402包括調(diào)制解調(diào)器1458、或連接到WAN1454上的通信服務(wù)器、或具有其它用于在廣域網(wǎng)1454如因特網(wǎng)中建立通信的裝置??梢允莾?nèi)置式或外置式、有線或無線裝置的調(diào)制解調(diào)器1458與系統(tǒng)總線1408通過串行端口接口1442連接。在網(wǎng)絡(luò)化環(huán)境中,與計(jì)算機(jī)1402相關(guān)的程序模塊或其一部分可存儲(chǔ)在遠(yuǎn)程存儲(chǔ)器/存儲(chǔ)裝置1450中??梢岳斫獾氖?,所示網(wǎng)絡(luò)連接是示例性的,且也可以使用其它用于在計(jì)算機(jī)間建立通信連接的技術(shù)。計(jì)算機(jī)1402可操作以與任意有效地置于無線通信中的無線裝置或?qū)嶓w進(jìn)行通信,例如打印機(jī)、掃描儀、臺(tái)式和/或便攜式計(jì)算機(jī)、便攜式數(shù)據(jù)助理、通信衛(wèi)星接收器、任何關(guān)聯(lián)于無線可檢測標(biāo)記的設(shè)備或地點(diǎn)(例如亭子、新聞架、廁所)、以及電話。這至少包括Wi-Fi和藍(lán)牙TM無線技術(shù)。因而,通信可以是常規(guī)網(wǎng)絡(luò)所具備的預(yù)定結(jié)構(gòu)或簡單地是至少兩個(gè)裝置之間的特別通信。Wi-Fi或無線保真,使得家中沙發(fā)、旅館房間內(nèi)的床、或工作中的會(huì)議室無需接線就可與因特網(wǎng)連接。Wi-Fi是使例如計(jì)算機(jī)的這種裝置能在室內(nèi)和室外(可在基站范圍內(nèi)的任何地方)收發(fā)數(shù)據(jù)的類似于蜂巢式電話中使用的無線技術(shù)。Wi-Fi網(wǎng)絡(luò)使用稱為IEEE802.11(a、b、g等)的無線電技術(shù)來提供安全、可靠、快速的無線連接。Wi-Fi網(wǎng)絡(luò)能用于計(jì)算機(jī)之間的相互連接、與因特網(wǎng)、有線網(wǎng)絡(luò)(使用IEEE802.3或以太網(wǎng))的連接。Wi-Fi網(wǎng)絡(luò)在11Mbps(802.11b)或54Mbps(802.11a)的數(shù)據(jù)速率下,或使用包含兩個(gè)頻帶(雙頻帶)的產(chǎn)品,在無許可證的2.4和5GHz的無線頻帶上操作,因此網(wǎng)絡(luò)可提供類似于在許多辦公室中使用的基本10BaseT有線以太網(wǎng)的實(shí)際性能?,F(xiàn)在參看圖15,示出了根據(jù)本發(fā)明的示例性計(jì)算環(huán)境1500的示意框圖。系統(tǒng)1500包括一臺(tái)或多臺(tái)客戶機(jī)1502??蛻魴C(jī)1502可以是硬件和/或軟件(例如線程、進(jìn)程、計(jì)算裝置)??蛻魴C(jī)1502可通過采用本發(fā)明來容納cookie和/或相關(guān)聯(lián)的上下文信息。系統(tǒng)1500還可包括一臺(tái)或多臺(tái)服務(wù)器1504。服務(wù)器1504也可以是硬件和/或軟件(例如線程、進(jìn)程、計(jì)算裝置)。服務(wù)器1504可采用本發(fā)明容納線程來執(zhí)行變換。在客戶機(jī)1502和服務(wù)器1504間的一可能通信可以是適于在兩個(gè)或多個(gè)計(jì)算機(jī)進(jìn)程間傳送的數(shù)據(jù)包形式。數(shù)據(jù)包可包括例如cookie和/或相關(guān)聯(lián)的上下文信息。系統(tǒng)1500包括可用來便于客戶機(jī)1502和服務(wù)器1504之間通信的通信框架1506(例如諸如因特網(wǎng)的全球通信網(wǎng)絡(luò))。通信可通過有線(包括光纖)和/或無線技術(shù)來推動(dòng)??蛻魴C(jī)1502可與一個(gè)或多個(gè)用來存儲(chǔ)客戶機(jī)1502本地信息(例如cookie和/或相關(guān)聯(lián)上下文信息)的客戶機(jī)數(shù)據(jù)存儲(chǔ)1508可操作地連接。類似地,服務(wù)器1504可與一個(gè)或多個(gè)用來存儲(chǔ)服務(wù)器1504本地信息的服務(wù)器數(shù)據(jù)存儲(chǔ)1510有效連接。以上所述包括本發(fā)明的諸多示例。當(dāng)然,為描述本發(fā)明而對(duì)每一能想到的組件或方法組合進(jìn)行描述是不可能的,但本領(lǐng)域普通技術(shù)人員明白本發(fā)明的更多排列和組合是可能的。因此,本發(fā)明旨在包含所有這樣的在所附權(quán)利要求書精神和范圍內(nèi)的變更、修改、和變化。此外,就用于具體實(shí)施方式或權(quán)利要求書的術(shù)語“具有”而言,這種術(shù)語意在以類似于術(shù)語“包括”在權(quán)利要求書中作連接詞的方式作包含意義解。權(quán)利要求1.一種用于數(shù)據(jù)平臺(tái)的應(yīng)用程序接口(API),包括一般數(shù)據(jù)訪問組件,該組件展現(xiàn)數(shù)據(jù)平臺(tái)的存儲(chǔ)、會(huì)話、事務(wù)和查詢服務(wù)的至少之一,所述數(shù)據(jù)平臺(tái)與數(shù)據(jù)存儲(chǔ)相關(guān)聯(lián);數(shù)據(jù)類組件,該組件包括展現(xiàn)數(shù)據(jù)平臺(tái)的數(shù)據(jù)模型的類型和關(guān)系的規(guī)范的應(yīng)用程序無關(guān)類;以及域數(shù)據(jù)類組件,該組件包括展現(xiàn)數(shù)據(jù)平臺(tái)的域特定屬性和行為的應(yīng)用程序特定和框架特定類。2.如權(quán)利要求1所述的接口,其特征在于,所述數(shù)據(jù)平臺(tái)是與數(shù)據(jù)存儲(chǔ)通過接口相連以提供多個(gè)不同應(yīng)用程序框架可訪問的數(shù)據(jù)服務(wù)的公共數(shù)據(jù)平臺(tái),所述數(shù)據(jù)服務(wù)使不同框架的相應(yīng)應(yīng)用程序能訪問數(shù)據(jù)存儲(chǔ)。3.如權(quán)利要求1所述的接口,其特征在于,所述域數(shù)據(jù)類組件包括定義其它類在其上操作的存儲(chǔ)的域類。4.如權(quán)利要求1所述的接口,其特征在于,所述數(shù)據(jù)類組件包括提供用于會(huì)話的上下文的上下文類。5.如權(quán)利要求4所述的接口,其特征在于,所述上下文類定義使用用于在當(dāng)前上下文內(nèi)刷新或保存對(duì)象變化的方法,來定義身份管理、變化跟蹤以及并發(fā)沖突處理的范圍。6.如權(quán)利要求1所述的接口,其特征在于,所述數(shù)據(jù)類組件包括用來建立對(duì)數(shù)據(jù)存儲(chǔ)的可組合的基于對(duì)象的查詢的搜索器類。7.如權(quán)利要求1所述的接口,其特征在于,還包括提供在結(jié)果集上的視圖的視圖類。8.如權(quán)利要求1所述的接口,其特征在于,還包括提供對(duì)所述架構(gòu)的表的訪問的架構(gòu)類。9.如權(quán)利要求8所述的接口,其特征在于,所述架構(gòu)類是基于目標(biāo)架構(gòu)從非類型化架構(gòu)類中派生的強(qiáng)類型化架構(gòu)類。10.一種計(jì)算機(jī)可讀介質(zhì),具有存儲(chǔ)其上的用于實(shí)現(xiàn)如權(quán)利要求1所述的接口的計(jì)算機(jī)可執(zhí)行指令。11.一種展現(xiàn)數(shù)據(jù)平臺(tái)的計(jì)算機(jī)實(shí)現(xiàn)方法,包括展現(xiàn)所述數(shù)據(jù)平臺(tái)的存儲(chǔ)、會(huì)話、事務(wù)和查詢服務(wù)的至少之一,所述數(shù)據(jù)平臺(tái)與數(shù)據(jù)存儲(chǔ)相關(guān)聯(lián);展現(xiàn)所述數(shù)據(jù)平臺(tái)的數(shù)據(jù)模型的類型和關(guān)系;以及展現(xiàn)所述數(shù)據(jù)平臺(tái)的域特定屬性和行為。12.如權(quán)利要求11所述的方法,其特征在于,還包括封裝所述存儲(chǔ)的存儲(chǔ)信息,所述存儲(chǔ)信息包括服務(wù)器信息、驗(yàn)證信息,及映射信息。13.如權(quán)利要求11所述的方法,其特征在于,還包括通過存儲(chǔ)搜索器建立存儲(chǔ)視圖的動(dòng)作。14.如權(quán)利要求11所述的方法,其特征在于,還包括通過存儲(chǔ)搜索器查詢存儲(chǔ)域的動(dòng)作。15.如權(quán)利要求11所述的方法,其特征在于,還包括提供封裝客戶機(jī)和一個(gè)或多個(gè)存儲(chǔ)之間的連接的類的動(dòng)作。16.如權(quán)利要求11所述的方法,其特征在于,展現(xiàn)存儲(chǔ)的至少之一的動(dòng)作是通過一般數(shù)據(jù)訪問組件進(jìn)行的。17.如權(quán)利要求11所述的方法,其特征在于,展現(xiàn)類型和關(guān)系的動(dòng)作是通過規(guī)范的應(yīng)用程序無關(guān)類進(jìn)行的。18.如權(quán)利要求11所述的方法,其特征在于,展現(xiàn)域特定屬性的動(dòng)作是通過應(yīng)用程序特定和框架特定類的域數(shù)據(jù)類組件進(jìn)行的。19.一種便于數(shù)據(jù)平臺(tái)API的系統(tǒng),包括用于展現(xiàn)所述數(shù)據(jù)平臺(tái)的存儲(chǔ)、會(huì)話、事務(wù)和查詢服務(wù)的至少之一的裝置,所述數(shù)據(jù)平臺(tái)與數(shù)據(jù)存儲(chǔ)相關(guān)聯(lián);用于展現(xiàn)所述數(shù)據(jù)平臺(tái)的數(shù)據(jù)模型的類型和關(guān)系的裝置;用于展現(xiàn)所述數(shù)據(jù)平臺(tái)的域特定屬性和行為的裝置;用于建立對(duì)數(shù)據(jù)存儲(chǔ)的可組合的基于對(duì)象的查詢的裝置;以及用于提供所述查詢的結(jié)果集上的視圖的裝置。20.如權(quán)利要求19所述的系統(tǒng),其特征在于,還包括用于表示對(duì)象的強(qiáng)類型化集合的裝置。全文摘要用于數(shù)據(jù)平臺(tái)的一種應(yīng)用程序接口(API)。該API包括展現(xiàn)數(shù)據(jù)平臺(tái)的存儲(chǔ)、會(huì)話、事務(wù)和查詢服務(wù)的至少之一的一般數(shù)據(jù)訪問組件,其中數(shù)據(jù)平臺(tái)與數(shù)據(jù)存儲(chǔ)相關(guān)聯(lián)。API的數(shù)據(jù)類組件提供展現(xiàn)數(shù)據(jù)平臺(tái)的數(shù)據(jù)模型的類型和關(guān)系的規(guī)范的應(yīng)用程序無關(guān)類。該API包括展現(xiàn)數(shù)據(jù)平臺(tái)的域特定屬性和行為的應(yīng)用程序特定和框架特定類的域數(shù)據(jù)類組件。該數(shù)據(jù)平臺(tái)可以是與數(shù)據(jù)存儲(chǔ)通過接口相連以提供多個(gè)不同應(yīng)用程序框架可訪問的數(shù)據(jù)服務(wù)的公共數(shù)據(jù)平臺(tái),其中各數(shù)據(jù)服務(wù)使不同框架的相應(yīng)應(yīng)用程序能訪問數(shù)據(jù)存儲(chǔ)。文檔編號(hào)G06F9/44GK1828595SQ20061000465公開日2006年9月6日申請(qǐng)日期2006年1月26日優(yōu)先權(quán)日2005年2月28日發(fā)明者A·T·惠滕,B·阿爾巴哈瑞,E·G·謝帕德,M·E·蒂姆,M·J·皮佐,R·納賈拉杰恩申請(qǐng)人:微軟公司