專利名稱::實(shí)現(xiàn)組織可由硬件/軟件接口系統(tǒng)管理的信息單元的數(shù)字圖象模式的系統(tǒng)和方法
技術(shù)領(lǐng)域:
:本發(fā)明一般涉及信息存儲(chǔ)和檢索領(lǐng)域,尤其涉及用于組織、搜索和共享計(jì)算機(jī)化系統(tǒng)中的不同類型的數(shù)據(jù)(特別是圖象數(shù)據(jù))的活動(dòng)存儲(chǔ)平臺(tái)。背景在最近十年中,單個(gè)盤的容量每年增長(zhǎng)約百分之70(70%)。摩爾(Moore)法則精確地預(yù)測(cè)了在過(guò)去數(shù)年中中央處理單元(CPU)能力的驚人的增長(zhǎng)。有線和無(wú)線技術(shù)已經(jīng)提供了數(shù)量上巨大的連接和帶寬。假設(shè)當(dāng)前趨勢(shì)持續(xù),在數(shù)年內(nèi)一般的膝上計(jì)算機(jī)將具有約萬(wàn)億字節(jié)(TB)的存儲(chǔ)并包含數(shù)百萬(wàn)個(gè)文件,而5千億字節(jié)(500GB)的驅(qū)動(dòng)器成為常見的。消費(fèi)者使用他們的計(jì)算機(jī)主要用于通信和組織個(gè)人信息,不論它們是傳統(tǒng)的個(gè)人信息管理器(PIM)風(fēng)格的數(shù)據(jù)或如數(shù)字音樂或照片那樣的媒體。數(shù)字內(nèi)容的量和存儲(chǔ)原始字節(jié)的能力已經(jīng)大量地增長(zhǎng);然而消費(fèi)者可用于組織和統(tǒng)一此數(shù)據(jù)的方法卻跟不上步伐。知識(shí)工人花費(fèi)大量時(shí)間來(lái)管理和共享信息,某些研究估計(jì),知識(shí)工人花費(fèi)15—25%的時(shí)間在與無(wú)效信息有關(guān)的活動(dòng)上。另外研究估計(jì),典型的知識(shí)工人每天約花費(fèi)2.5小時(shí)搜索信息。開發(fā)者與信息技術(shù)(IT)部門投資大量的時(shí)間與金錢來(lái)構(gòu)建他們自己的用于公用存儲(chǔ)抽象的數(shù)據(jù)存儲(chǔ),以呈現(xiàn)如人、地方、時(shí)間和事件等事項(xiàng)目。這不僅導(dǎo)致重復(fù)的工作,還形成公用數(shù)據(jù)的孤島,沒有共同搜索或共享那些數(shù)據(jù)的機(jī)制。僅考慮當(dāng)今在運(yùn)行MicrosoftWindows操作系統(tǒng)的計(jì)算機(jī)上有多少地址簿。如電子郵件客戶端和個(gè)人財(cái)務(wù)程序那樣的許多應(yīng)用程序保留各自的地址簿,且在每個(gè)那樣的程序分別維護(hù)的地址簿應(yīng)用程序之間只有很少共享。因而,財(cái)務(wù)程序(如MicrosoftMoney)不與維護(hù)在電子郵件聯(lián)系人文件夾(如MicrosoftOutlook中的聯(lián)系人文件夾)中的地址共享支付人的地址。確實(shí),許多用戶具有多個(gè)設(shè)備,在這些設(shè)備之間和包括到如MSN和AOL等商業(yè)服務(wù)的手機(jī)電話號(hào)碼的各種附加來(lái)源之間應(yīng)該在邏輯上同步它們的個(gè)人數(shù)據(jù);然而共享文檔的協(xié)作大部分是通過(guò)將文檔附到電子郵件消息來(lái)達(dá)到的一這是手動(dòng)的且低效的。缺乏協(xié)作的一個(gè)原因是組織計(jì)算機(jī)系統(tǒng)中的信息的傳統(tǒng)方法集中在使用基于文件一文件夾一目錄的系統(tǒng)("文件系統(tǒng)"),來(lái)基于用于存儲(chǔ)文件的存儲(chǔ)介質(zhì)的物理組織的抽象將多個(gè)文件組織到文件夾的目錄分層結(jié)構(gòu)中。在1960年代開發(fā)的Multics操作系統(tǒng)被認(rèn)為是在操作系統(tǒng)級(jí)上使用文件、文件夾和目錄來(lái)管理可存儲(chǔ)數(shù)據(jù)單元的先驅(qū)。具體說(shuō)來(lái),Multics在文件的分層結(jié)構(gòu)中使用符號(hào)地址(從而引入文件路徑的概念),其中文件的物理地址對(duì)用戶(應(yīng)用程序和最終用戶)是不透明的。此文件系統(tǒng)完全不考慮任何單個(gè)文件的文件格式,且在文件中及文件之間的關(guān)系在操作系統(tǒng)級(jí)上被認(rèn)為是無(wú)關(guān)的(即,與分層結(jié)構(gòu)中文件的位置不同)。由于Multics的出現(xiàn),在操作系統(tǒng)級(jí)上可存儲(chǔ)的數(shù)據(jù)被組織成文件、文件夾和目錄。這些文件一般包括放在由文件系統(tǒng)維護(hù)的一特定文件中的文件分層結(jié)構(gòu)本身("目錄")。此目錄進(jìn)而維護(hù)對(duì)應(yīng)于該目錄中所有其它文件和那些文件在分層結(jié)構(gòu)(這里指文件夾)中的節(jié)點(diǎn)位置的條目的列表。這是本領(lǐng)域中近40年的狀態(tài)。然而,雖然提供了駐留在計(jì)算機(jī)的物理存儲(chǔ)系統(tǒng)中的信息的合理表示,但是文件系統(tǒng)是物理存儲(chǔ)系統(tǒng)的抽象,因而文件的利用需要在用戶處理什么(具有上下文、特征以及與其它單元的關(guān)系的單元)和操作系統(tǒng)提供什么(文件、文件夾和目錄)之間的間接(解釋)層。結(jié)果,用戶(應(yīng)用程序和/或最終用戶)只好強(qiáng)制把信息單元放入文件系統(tǒng)結(jié)構(gòu),即使這樣做是低效的、不一致的、或不希望的。此外,現(xiàn)有的文件系統(tǒng)關(guān)于在各個(gè)文件中存儲(chǔ)的數(shù)據(jù)的結(jié)構(gòu)知之甚少,因此,大多數(shù)信息在文件中保持封閉,只能被寫那些數(shù)據(jù)的應(yīng)用程序訪問(wèn)(和可理解)。因此,缺乏信息的模式描述和管理信息的機(jī)制,導(dǎo)致形成數(shù)據(jù)的豎井(silo),只有很少數(shù)據(jù)能在各豎井之間共享。例如,許多個(gè)人計(jì)算機(jī)(PC)用戶具有5個(gè)以上各異的存儲(chǔ),它們包含有關(guān)他們?cè)谀骋粚由辖换サ娜说男畔⒁蝗鏞utlook聯(lián)系人、在線賬戶地址、Windows地址簿、Quicken受款人和即時(shí)消息(IM)伙伴列表一因?yàn)榻M織文件向這些PC用戶提出重要的挑戰(zhàn)。由于大多數(shù)現(xiàn)有的文件系統(tǒng)利用嵌套的文件夾隱喻來(lái)組織文件和文件夾,因此當(dāng)文件數(shù)量增加時(shí),為維持靈活且有效的組織模式所必需的努力變得十分驚人。在這些情況下,具有單個(gè)文件的多重分類是非常有用的;然而使用現(xiàn)有文件系統(tǒng)中的硬和軟鏈接是麻煩且難以維護(hù)的。過(guò)去已作了若干不成功的嘗試來(lái)克服文件系統(tǒng)的缺點(diǎn)。這些以前嘗試中的某一些已經(jīng)涉及使用內(nèi)容可定址的存儲(chǔ)器來(lái)提供可以通過(guò)內(nèi)容而不是通過(guò)物理地址來(lái)訪問(wèn)數(shù)據(jù)的機(jī)制。然而,這些努力被證明是不成功的,因而雖然內(nèi)容可定址的存儲(chǔ)器對(duì)由如高速緩存和存儲(chǔ)器管理單元等設(shè)備的小規(guī)模使用被證明是有用的,但對(duì)如物理存儲(chǔ)介質(zhì)等設(shè)備的大規(guī)模使用由于各種原因尚不可能,因此那樣的解決方案簡(jiǎn)直不存在。己作出使用面向?qū)ο蟮臄?shù)據(jù)庫(kù)(OODB)系統(tǒng)的其它嘗試,但是這些嘗試雖然帶有強(qiáng)烈的數(shù)據(jù)庫(kù)的特征,且良好的非文件表示,但在處理文件表示方面并不有效,并不能重現(xiàn)在硬件/軟件接口系統(tǒng)級(jí)上基于分層結(jié)構(gòu)的文件及文件夾的速度、效率和簡(jiǎn)單性。諸如試圖使用SmallTalk(和其它派生方法)的其它嘗試在處理文件和非文件表示方面被證明相當(dāng)有效,但缺乏有效地組織和利用在各種數(shù)據(jù)文件之間存在的關(guān)系所必需的數(shù)據(jù)庫(kù)特征,因此那種系統(tǒng)的整體有效性是不可接受的。使用BeOS(和其它那樣操作系統(tǒng)研究)的又一種嘗試盡管能夠勝任適當(dāng)?shù)乇硎疚募耐瑫r(shí)又提供某些必要的數(shù)據(jù)庫(kù)特征,在處理非文件的表示上被證明是不夠的,這是傳統(tǒng)文件系統(tǒng)同樣的核心缺點(diǎn)。數(shù)據(jù)庫(kù)技術(shù)是存在類似挑戰(zhàn)的另一專業(yè)領(lǐng)域。例如,雖然關(guān)系型數(shù)據(jù)庫(kù)模型已取得很大的商業(yè)上的成功,實(shí)際上獨(dú)立軟件分銷商(ISV)—般運(yùn)用了關(guān)系型數(shù)據(jù)庫(kù)軟件產(chǎn)品(如MicrosoftSQLServer)中可得到的功能一小部分。相反,應(yīng)用程序與那樣產(chǎn)品的大多數(shù)交互是以簡(jiǎn)單的"gets"和"puts"的形式。對(duì)此雖然有若干容易明白的原因(如作為平臺(tái)或數(shù)據(jù)庫(kù)的不可知),一個(gè)常被忽視的關(guān)鍵的原因是數(shù)據(jù)庫(kù)沒有必要提供主要商業(yè)應(yīng)用程序分銷商確實(shí)需要的精確抽象。例如,雖然真是世界具有如"客戶"或"訂單"等"項(xiàng)目"的概念(以及訂單的嵌入的"行式項(xiàng)目"作為其中的項(xiàng)目和項(xiàng)目本身),而關(guān)系型數(shù)據(jù)庫(kù)只在表和行的方面來(lái)談?wù)?。結(jié)果,雖然應(yīng)用程序可能希望具有在項(xiàng)目級(jí)上的一致性、鎖定、安全和/或觸發(fā)器的方面(只列出一些),通常數(shù)據(jù)庫(kù)只在表/行級(jí)上提供這些特征。盡管若每個(gè)項(xiàng)目映射到數(shù)據(jù)庫(kù)某個(gè)表的單個(gè)行也能工作得很好,但在帶多個(gè)行式項(xiàng)目的訂單的情況下,存在一個(gè)項(xiàng)目實(shí)際上要映射到多個(gè)表的原因,且在此情況下,單個(gè)關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)不能確切地提供正確的抽象。因此,應(yīng)用程序必須在數(shù)據(jù)庫(kù)的頂層構(gòu)建邏輯以提供這些基本抽象。換言之,基本關(guān)系模型不提供在其上容易開發(fā)高級(jí)應(yīng)用程序的存儲(chǔ)數(shù)據(jù)的足夠平臺(tái),因?yàn)榛娟P(guān)系模型需要在應(yīng)用程序和存儲(chǔ)系統(tǒng)之間的間接層,其中只在某些情況的應(yīng)用程序中可以看到數(shù)據(jù)的語(yǔ)義結(jié)構(gòu)。盡管某些數(shù)據(jù)庫(kù)分銷商正將高級(jí)功能構(gòu)建到他們的產(chǎn)品中(如提供對(duì)象關(guān)系能力,新的組織模型等),至今尚沒有哪個(gè)提供需要的全面解決方案,其中真正的全面解決方案是為有用的域抽象(如"個(gè)人"、"位置"、"事件"等)提供有用的數(shù)據(jù)模型抽象(如"項(xiàng)目"、"擴(kuò)展"、"關(guān)系"等)的解決方案??紤]在現(xiàn)有數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)庫(kù)技術(shù)中的上述缺陷,需要一種新的存儲(chǔ)平臺(tái),它改善了組織、搜索和共享計(jì)算機(jī)系統(tǒng)中所有類型數(shù)據(jù)的能力,該存儲(chǔ)平臺(tái)擴(kuò)展和拓寬了數(shù)據(jù)平臺(tái),超越現(xiàn)有的文件系統(tǒng)和數(shù)據(jù)庫(kù)系統(tǒng),且它被設(shè)計(jì)成存儲(chǔ)所有類型的數(shù)據(jù)。通過(guò)引用結(jié)合于此的相關(guān)發(fā)明滿足此要求。然而,圖象(照片、數(shù)字圖象等)的存儲(chǔ)不是標(biāo)準(zhǔn)化的,且不能在各平臺(tái)和各應(yīng)用程序之間一般化。雖然應(yīng)用程序能包括適用于特定圖象格式(如JPEG)的API,那樣的應(yīng)用程序的開發(fā)者必須知道該格式,包括適合的應(yīng)用程序接口(API),并完成與所述格式互操作所必需的轉(zhuǎn)換。本領(lǐng)域中所短缺的是用于計(jì)算機(jī)系統(tǒng)中所有圖象對(duì)象的公用模式(或模式組),而本發(fā)明結(jié)合通過(guò)引用結(jié)合于此的相關(guān)發(fā)明滿足此特定的要求。概述下面的綜述提供了在通過(guò)引用結(jié)合于此的相關(guān)發(fā)明(稱為"相關(guān)發(fā)明")的上下文中描述的本發(fā)明的各個(gè)方面的綜述。此綜述不試圖提供本發(fā)明的所有重要方面的包羅無(wú)遺的描述,也不定義本發(fā)明的范圍。相反,此綜述旨在作為對(duì)下文的詳細(xì)描述和附圖的引言。本發(fā)明及相關(guān)發(fā)明一起針對(duì)用于組織、搜索和共享數(shù)據(jù)的存儲(chǔ)平臺(tái)。本發(fā)明的存儲(chǔ)平臺(tái)擴(kuò)展和拓寬了數(shù)據(jù)存儲(chǔ)的概念,超過(guò)現(xiàn)有的文件系統(tǒng)和數(shù)據(jù)庫(kù)系統(tǒng),并被設(shè)計(jì)成存儲(chǔ)所有類型的數(shù)據(jù),包括結(jié)構(gòu)化的、非結(jié)構(gòu)化的或半結(jié)構(gòu)化的數(shù)據(jù)。本發(fā)明的存儲(chǔ)平臺(tái)包括在數(shù)據(jù)庫(kù)引擎上實(shí)現(xiàn)的數(shù)據(jù)存儲(chǔ)。數(shù)據(jù)庫(kù)引擎包括帶對(duì)象關(guān)系擴(kuò)展的關(guān)系型數(shù)據(jù)庫(kù)引擎。數(shù)據(jù)存儲(chǔ)實(shí)現(xiàn)了支持?jǐn)?shù)據(jù)的組織、搜索、共享、同步和安全的數(shù)據(jù)模型。在模式中描述了特定類型的數(shù)據(jù),而該平臺(tái)提供了擴(kuò)展模式組以定義新的數(shù)據(jù)類型(主要是由該模式提供的基本類型的子類型)的機(jī)制。同步能力便于在用戶或系統(tǒng)之間共享數(shù)據(jù)。提供類似文件系統(tǒng)的能力,它允許數(shù)據(jù)存儲(chǔ)與現(xiàn)有文件系統(tǒng)的互操作,但沒有傳統(tǒng)文件系統(tǒng)的限制。改變跟蹤機(jī)制提供跟蹤數(shù)據(jù)存儲(chǔ)改變的能力。該存儲(chǔ)平臺(tái)還包括一組應(yīng)用程序接口,它們使應(yīng)用程序能訪問(wèn)該存儲(chǔ)平臺(tái)的所有上述能力,并訪問(wèn)在模式中描述的數(shù)據(jù)。由數(shù)據(jù)存儲(chǔ)實(shí)現(xiàn)的數(shù)據(jù)模型按照項(xiàng)目、元素和關(guān)系定義數(shù)據(jù)存儲(chǔ)的單元。項(xiàng)目是數(shù)據(jù)存儲(chǔ)中可存儲(chǔ)的數(shù)據(jù)單元,并能包括一個(gè)或多個(gè)元素和關(guān)系。元素是包括一個(gè)或多個(gè)字段(這里也稱為屬性)的類型的實(shí)例。關(guān)系是兩個(gè)項(xiàng)目之間的鏈接。(如這里所使用的,這些和其它特定術(shù)語(yǔ)可被大寫化,以區(qū)別在附近使用的其它術(shù)語(yǔ);然而實(shí)在無(wú)意區(qū)分大寫的術(shù)語(yǔ)如"Item(項(xiàng)目)"與不大寫的同一術(shù)語(yǔ)如"item",不應(yīng)假定或隱含這樣的區(qū)分)。計(jì)算機(jī)系統(tǒng)還包括多個(gè)項(xiàng)目,其中每個(gè)項(xiàng)目構(gòu)成能由硬件/軟件接口系統(tǒng)處理的分立的可存儲(chǔ)信息單元;構(gòu)成所述項(xiàng)目的有組織的結(jié)構(gòu)的多個(gè)項(xiàng)目文件夾;以及用于處理多個(gè)項(xiàng)目的硬件/軟件接口系統(tǒng),其中每個(gè)項(xiàng)目屬于至少一個(gè)項(xiàng)目文件夾,并可屬于一個(gè)以上項(xiàng)目文件夾。項(xiàng)目或某些項(xiàng)目屬性值可被動(dòng)態(tài)地計(jì)算,而不是從持久存儲(chǔ)中導(dǎo)出。換言之,硬件/軟件接口系統(tǒng)不要求項(xiàng)目被存儲(chǔ)和支持某些操作,如枚舉當(dāng)前的項(xiàng)目組的能力或給定其存儲(chǔ)平臺(tái)的標(biāo)識(shí)符(在描述應(yīng)用程序接口或API的章節(jié)中更充分地描述)來(lái)檢索項(xiàng)目的能力一例如,項(xiàng)目可以是手機(jī)的當(dāng)前位置或溫度傳感器上的溫度讀數(shù)。硬件/軟件接口系統(tǒng)可處理多個(gè)項(xiàng)目,并能進(jìn)一步包括可由硬件/軟件接口系統(tǒng)管理的多個(gè)關(guān)系互連的項(xiàng)目。計(jì)算機(jī)系統(tǒng)的硬件/軟件接口系統(tǒng)還包括核心模式,以定義一組被所述硬件/軟件接口系統(tǒng)理解并能以預(yù)定的和可預(yù)測(cè)的方式直接處理的核心項(xiàng)目。為處理多個(gè)項(xiàng)目,計(jì)算機(jī)系統(tǒng)將所述項(xiàng)目與多個(gè)關(guān)系互連,并在硬件/軟件接口系統(tǒng)級(jí)上管理所述關(guān)系。存儲(chǔ)平臺(tái)的API對(duì)每個(gè)項(xiàng)目、項(xiàng)目擴(kuò)展和在存儲(chǔ)平臺(tái)模式組中定義的關(guān)系提供數(shù)據(jù)類。此外,應(yīng)用程序接口提供一組架構(gòu)類,它們定義數(shù)據(jù)類的公用行為組,并與數(shù)據(jù)類一起提供存儲(chǔ)平臺(tái)API的基本編程模型。存儲(chǔ)平臺(tái)API提供簡(jiǎn)化的查詢模型,使應(yīng)用程序員能基于數(shù)據(jù)存儲(chǔ)中的諸項(xiàng)目的各種屬性,以使應(yīng)用程序員不必了解底層數(shù)據(jù)庫(kù)引擎的查詢語(yǔ)言的細(xì)節(jié)的方式形成查詢。存儲(chǔ)平臺(tái)API還收集由應(yīng)用程序?qū)?xiàng)目作出的改變,并然后將它們組織到由實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)庫(kù)引擎(或任何類型的存儲(chǔ)引擎)需要的正確更新中。這使應(yīng)用程序員能對(duì)存儲(chǔ)器中的項(xiàng)目作出改變,而將數(shù)據(jù)存儲(chǔ)更新的復(fù)雜性留給API。通過(guò)其公用的存儲(chǔ)基礎(chǔ)和模式化的數(shù)據(jù),本發(fā)明的存儲(chǔ)平臺(tái)使消費(fèi)者、知識(shí)工人及企業(yè)能作出更有效的應(yīng)用程序開發(fā)。它提供豐富和可擴(kuò)展的應(yīng)用程序接口,不僅使內(nèi)含在其數(shù)據(jù)模型中的能力可用,還能包含及擴(kuò)展現(xiàn)有文件系統(tǒng)和數(shù)據(jù)庫(kù)訪問(wèn)方法。鑒于互相關(guān)聯(lián)的發(fā)明(在詳細(xì)描述的第二節(jié)中詳細(xì)描述)的這一全部結(jié)構(gòu),本發(fā)明特別地針對(duì)對(duì)計(jì)算機(jī)系統(tǒng)(在詳細(xì)描述的第三節(jié)中詳細(xì)描述)中的所有圖象對(duì)象(圖象項(xiàng)目)的公用模式。從本發(fā)明的下面詳細(xì)描述及附圖,本發(fā)明的其它特征及優(yōu)點(diǎn)變得十分清楚。附圖的簡(jiǎn)要描述上面的綜述及本發(fā)明的下面詳細(xì)描述在結(jié)合附圖閱讀時(shí)將能更好地理解。為說(shuō)明本發(fā)明的目的,在圖中示出本發(fā)明的各方面的實(shí)施例;然而,本發(fā)明不限于揭示的具體的方法和手段。附圖中圖1是表示能結(jié)合本發(fā)明的諸方面的計(jì)算機(jī)系統(tǒng)的框圖2是示出被劃分成三個(gè)組件組的計(jì)算機(jī)系統(tǒng)的框圖硬件組件、硬件/軟件接口組件以及應(yīng)用程序組件;圖2A示出在基于文件的操作系統(tǒng)中對(duì)組合在目錄中的文件夾中的文件的傳統(tǒng)的基于樹形的分層結(jié)構(gòu);圖3是示出數(shù)據(jù)平臺(tái)的框圖4示出在項(xiàng)目、項(xiàng)目文件夾和類別之間的結(jié)構(gòu)關(guān)系;圖5A是示出項(xiàng)目的結(jié)構(gòu)的框圖5B是示出圖5A的項(xiàng)目的復(fù)雜屬性類型的框圖5C是示出"Location(位置)"項(xiàng)目的框圖,其中其復(fù)雜類型被進(jìn)一步描述(明確列出);圖6A將項(xiàng)目示作在基礎(chǔ)模式中找到的項(xiàng)目的子類型;圖6B是示出圖6A的子類型項(xiàng)目的框圖,其中明確地列出其繼承的類型(除了它的直接屬性外);圖7是示出包括其兩個(gè)頂層類類型一Item(項(xiàng)目)和PropertyBase(屬性基礎(chǔ))的基礎(chǔ)模式,以及從中導(dǎo)出的另外基礎(chǔ)模式的框圖8A是示出在核心模式中的項(xiàng)目的框圖8B是示出在核心模式中屬性類型的框圖9是示出項(xiàng)目文件夾、其成員項(xiàng)目以及在項(xiàng)目文件夾及其成員項(xiàng)目之間互連關(guān)系的框圖10是示出類別(它本身也是項(xiàng)目)、其成員項(xiàng)目以及在類別及其成員項(xiàng)目之間的互連關(guān)系的框圖11是示出存儲(chǔ)平臺(tái)的數(shù)據(jù)模型的引用類型分層結(jié)構(gòu)的圖示;圖12是示出關(guān)系如何被分類的圖示;圖13是示出通知機(jī)制的圖示;圖14是示出兩個(gè)事務(wù)均將新的記錄插入同一B樹的例子的圖示;圖15示出數(shù)據(jù)改變檢測(cè)過(guò)程;圖16示出示例性目錄樹;圖17示出將基于目錄的文件系統(tǒng)的現(xiàn)有文件夾移動(dòng)到存儲(chǔ)平臺(tái)數(shù)據(jù)存儲(chǔ)的例子;圖18示出包含文件夾的概念;圖19示出存儲(chǔ)平臺(tái)API的基本體系結(jié)構(gòu);圖20示意性地示出存儲(chǔ)平臺(tái)API棧的各種組件;圖21A是示例性聯(lián)系人項(xiàng)目模式的圖形表示;圖21B是對(duì)圖21A的示例性聯(lián)系人項(xiàng)目模式的元素的圖形表示;圖22示出存儲(chǔ)平臺(tái)API的運(yùn)行庫(kù)架構(gòu);圖23示出"FindAll"操作的執(zhí)行;圖24示出從存儲(chǔ)平臺(tái)模式生成存儲(chǔ)平臺(tái)API類的過(guò)程;圖25示出File(文件)API所基于的模式;圖26是示出用于數(shù)據(jù)安全目的的訪問(wèn)掩碼格式的圖示;圖27(部分a,b,c)畫出從現(xiàn)有安全區(qū)域開拓的新的同等保護(hù)的安全區(qū)域;圖28是示出項(xiàng)目搜索視圖的概念的圖示;圖29是示出示例性項(xiàng)目分層結(jié)構(gòu)的圖示;圖30A示出作為第一和第二代碼段通信的管道的接口"接口1";圖30B示出的接口包括接口對(duì)象I1和12,它們使系統(tǒng)的第一和第二代碼段能通過(guò)介質(zhì)M通信;圖31A示出由接口"接口1"提供的功能如何再分割,以便將該接口的通信轉(zhuǎn)換到多個(gè)接口"接口1A"、"接口1B"、"接口1C";圖31B示出由接口Il提供的功能如何再分割成多個(gè)接口Ila、Ilb、Ilc;圖32A示出無(wú)意義的參數(shù)precision能被忽略或用任意參數(shù)替代的情形;圖32B示出接口被替代接口代替的情況,該替代接口被定義成忽略或添加參數(shù)到接口;圖33A示出第一和第二代碼段被合并到包含兩者的模塊的情況;圖33B示出能將接口的部分或全部?jī)?nèi)嵌地寫入另一接口以形成合并的接口的情況;圖34A示出一段或多段中間件如何能轉(zhuǎn)換第一接口的通信以便使它們符合一個(gè)或多個(gè)不同的接口;圖34B示出如何用接口引入代碼段,以從一個(gè)接口接收通信,但將功能發(fā)送到第二和第三接口;圖35A示出即時(shí)編譯器(JIT)如何能將通信從一個(gè)代碼段轉(zhuǎn)換到另一代碼段;圖35B示出應(yīng)用動(dòng)態(tài)重寫一個(gè)或多個(gè)接口的JIT方法來(lái)動(dòng)態(tài)分解或更改所述接口;圖36示出圖象模式以及(圖7的)基礎(chǔ)模式及(圖8A的)核心模式,以示出在每個(gè)模式中各個(gè)項(xiàng)目之間的互相關(guān)系。詳細(xì)描述目錄A.示例性計(jì)算環(huán)境................................................................................14B.傳統(tǒng)的基于文件的存儲(chǔ)....................................................................17II.用于組織、搜索和共享數(shù)據(jù)的WINFS存儲(chǔ)平臺(tái)..................................18A*詞匯表...............................................................................................18B.存儲(chǔ)平臺(tái)綜述....................................................................................19C.數(shù)據(jù)模型...........................................................................................201*卵.............................................................................................212.項(xiàng)目標(biāo)識(shí)......................................................................................243.項(xiàng)目文件夾和類別.......................................................................244.賊.............................................................................................26a)基礎(chǔ)模式................................................................................26b)核心模式................................................................................265.縣.............................................................................................28a)關(guān)系聲明................................................................................28b)持有關(guān)系................................................................................30c)嵌入關(guān)系................................................................................31d)引用關(guān)系................................................................................31e)規(guī)則和約束............................................................................32f)關(guān)系的排序............................................................................326.可擴(kuò)展性......................................................................................36a)項(xiàng)目擴(kuò)展................................................................................37b)擴(kuò)展NestedElement類型......................................................40D.數(shù)據(jù)庫(kù)引擎.......................................................................................411.使用UDT的數(shù)據(jù)存儲(chǔ)實(shí)現(xiàn).........................................................422.項(xiàng)目映射......................................................................................433.擴(kuò)展映射......................................................................................444.嵌套元素映射..............................................................................445.對(duì)象身份......................................................................................446.SQL對(duì)象命名..............................................................................447.列命名..........................................................................................458.搜索視圖......................................................................................46a)項(xiàng)目.......................................................................................46(1)主項(xiàng)目搜索視圖.........................................................46(2)分類型的項(xiàng)目搜索視圖.............................................47b)項(xiàng)目擴(kuò)展................................................................................47(1)主擴(kuò)展搜索視圖.........................................................47(2)分類型的擴(kuò)展搜索視圖.............................................48c)嵌套的元素............................................................................48d)關(guān)系.......................................................................................48(1)主關(guān)系搜索視圖.........................................................48(2)關(guān)系實(shí)例搜索視圖.....................................................49e)..................................................................................................509*M.............................................................................................5010.改變跟蹤及墓碑.........................................................................50a)改變跟蹤..................................................................................50(1)"主"搜索視圖中的改變跟蹤..................................51(2)"分類型的"搜索視圖中的改變跟蹤.......................52b)M.......................................................................................52(1)項(xiàng)目墓碑....................................................................52(2)擴(kuò)展墓碑....................................................................53(3)關(guān)系墓碑....................................................................53(4)墓碑清除....................................................................5411.助手API和函數(shù)........................................................................54a)函數(shù)[System.Storage].Getltem...............................................54b)函數(shù)[System.Stomge].GetExtension.......................................54c)函數(shù)[System.Storage].GetRelationship...................................5412.元數(shù)據(jù)........................................................................................55a)模式元數(shù)據(jù)............................................................................55b)實(shí)例元數(shù)據(jù)............................................................................55E.安全性...............................................................................................55F.通知和改變跟蹤................................................................................55醇..................................................................................................561.存儲(chǔ)平臺(tái)到存儲(chǔ)平臺(tái)的同步........................................................57a)同步(Sync)控制應(yīng)用程序.................................................57b)模式注釋................................................................................57c)同步配置................................................................................58(1)共同體文件夾一映射.................................................59(2)概況...........................................................................60(3)時(shí)間表........................................................................60d)沖突處理................................................................................61(1)沖突檢測(cè)....................................................................61(a)基于知識(shí)的沖突...................................................61(b)基于約束的沖突...................................................61(2)沖突處理....................................................................61(a)自動(dòng)沖突分解......................................................62(b)沖突日志記錄......................................................62(c)沖突審查和分解...................................................63(d)復(fù)制品的會(huì)聚性及沖突分解的傳播....................632.對(duì)非存儲(chǔ)平臺(tái)數(shù)據(jù)存儲(chǔ)的同步....................................................63a)同步服務(wù)..................................................................................64(1)改變枚舉....................................................................64(2)改變應(yīng)用....................................................................65(3)沖突分解....................................................................65b)適配器實(shí)現(xiàn)............................................................................653.安全性..........................................................................................654.可管理性......................................................................................66H.傳統(tǒng)文件互操作性............................................................................66I.存儲(chǔ)平臺(tái)API.....................................................................................67III.圖象模式和輔助模式(圖象模式組)..................................................72A.圖象模式...........................................................................................72B.照片模式...........................................................................................75C.分析屬性模式....................................................................................76IV*賤.......................................................................................................76I.引言本發(fā)明的主題用細(xì)節(jié)來(lái)描述,以滿足法定的要求。然而,該描述本身不試圖限制本專利的范圍。相反,本發(fā)明者設(shè)想,要求保護(hù)的主題也能以其它方式實(shí)施,以結(jié)合其它當(dāng)前和未來(lái)的技術(shù)包括類似于本說(shuō)明描述的不同的步驟或步驟的組合。此外,雖然術(shù)語(yǔ)"步驟"在這里可用于意味著所采用的方法的不同元素,然而該術(shù)語(yǔ)不能被解釋為在這里揭示的各步驟之間隱含特定的次序,除非明確地描述了各個(gè)步驟的次序。A.示例性計(jì)算環(huán)境本發(fā)明的許多實(shí)施例可在計(jì)算機(jī)上執(zhí)行。圖1和下面討論旨在提供其中實(shí)現(xiàn)本發(fā)明的合適計(jì)算環(huán)境的簡(jiǎn)要描述。雖然不是必需,本發(fā)明的諸方面能以諸如由如客戶工作站或服務(wù)器的計(jì)算機(jī)上執(zhí)行的程序模塊的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述。一般而言,程序模塊包括例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等,它們執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型。此外,本發(fā)明可用其它計(jì)算機(jī)系統(tǒng)配置實(shí)現(xiàn),包括手持設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)或可編程消費(fèi)者電子設(shè)備、網(wǎng)絡(luò)PC、小型機(jī)、大型機(jī)等。本發(fā)明還能在分布式計(jì)算環(huán)境中實(shí)現(xiàn),其中任務(wù)由通過(guò)通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備完成。在分布式計(jì)算環(huán)境中,程序模塊能位于本地或遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備中。如圖1所示,示例性通用計(jì)算系統(tǒng)包括傳統(tǒng)的個(gè)人計(jì)算機(jī)20等,它包括處理單元21、系統(tǒng)存儲(chǔ)器22和將包括系統(tǒng)存儲(chǔ)器的各種系統(tǒng)組件耦合到處理單元21的系統(tǒng)總線23。系統(tǒng)總線23可以是若千種總線結(jié)構(gòu)的任一種,包括存儲(chǔ)總線或存儲(chǔ)控制器、外圍總線、以及使用各種總線體系結(jié)構(gòu)的任一種的局部總線。系統(tǒng)存儲(chǔ)器包括只讀存儲(chǔ)器(ROM)24和隨機(jī)訪問(wèn)存儲(chǔ)器(RAM)25?;据斎?輸出系統(tǒng)26(BIOS)包含如在啟動(dòng)時(shí)幫助在個(gè)人計(jì)算機(jī)20的諸元件之間傳輸信息的基本例程,存儲(chǔ)在ROM24中。個(gè)人計(jì)算機(jī)20還可包括讀寫硬盤(未示出)的硬盤驅(qū)動(dòng)器27、讀寫可移動(dòng)磁盤29的磁盤驅(qū)動(dòng)器28、讀寫如CDROM或其它光介質(zhì)的可移動(dòng)光盤29的光盤驅(qū)動(dòng)器30。硬盤驅(qū)動(dòng)器27、磁盤驅(qū)動(dòng)器28和光盤驅(qū)動(dòng)器30分別通過(guò)硬盤驅(qū)動(dòng)器接口32、磁盤驅(qū)動(dòng)器接口33和光盤驅(qū)動(dòng)器接口34連接系統(tǒng)總線23。驅(qū)動(dòng)器及其相關(guān)的計(jì)算機(jī)可讀介質(zhì)為個(gè)人計(jì)算機(jī)20提供計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的非易失存儲(chǔ)。雖然這里描述的示例性環(huán)境采用硬盤、可移動(dòng)磁盤29和可移動(dòng)光盤31,本專業(yè)技術(shù)人員理解,在示例性操作環(huán)境中也能使用可存儲(chǔ)能由計(jì)算機(jī)訪問(wèn)的數(shù)據(jù)的其它類型計(jì)算機(jī)可讀介質(zhì),如盒式磁帶、閃存卡、數(shù)字視頻盤、Bernoulli盒式磁帶、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)等。類似地,示例環(huán)境還可包括許多類型的監(jiān)視設(shè)備,如熱敏和安全或火警系統(tǒng),及其它信息來(lái)源。若干程序模塊能存儲(chǔ)在硬盤、磁盤29、光盤31、ROM24或RAM25中,包括操作系統(tǒng)35、一個(gè)或多個(gè)應(yīng)用程序36、其它程序模塊37和程序數(shù)據(jù)38。用戶能通過(guò)如鍵盤40和定位設(shè)備42等輸入設(shè)備將命令和信息輸入到個(gè)人計(jì)算機(jī)20。其它輸入設(shè)備(未示出)可包括麥克風(fēng)、操縱桿、游戲墊、圓盤式衛(wèi)星天線、掃描儀等。這里和其它輸入設(shè)備常通過(guò)耦合到系統(tǒng)總線的串行接口46連接到處理單元21,但也可通過(guò)其它接口連接,如并行口、游戲口或通用串行總線(USB)。監(jiān)視器47或其它類型的顯示設(shè)備也通過(guò)如視頻適配器48的接口連接到系統(tǒng)總線23。除監(jiān)視器47以外,個(gè)人計(jì)算機(jī)通常包括如話筒和打印機(jī)等其它外圍輸出設(shè)備(未示出)。圖1的示例系統(tǒng)還包括主適配器55、小型計(jì)算機(jī)系統(tǒng)接口(SCSI)總線56和連接到SCSI總線的外部存儲(chǔ)設(shè)備62。個(gè)人計(jì)算機(jī)20可使用到如遠(yuǎn)程計(jì)算機(jī)49的一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī)的邏輯連接在網(wǎng)絡(luò)環(huán)境中操作。遠(yuǎn)程計(jì)算機(jī)49可以是另一臺(tái)個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對(duì)等設(shè)備或其它公共網(wǎng)絡(luò)節(jié)點(diǎn),并通常包括以上對(duì)個(gè)人計(jì)算機(jī)20描述的許多或所有元件,雖然在圖1中只示出存儲(chǔ)器存儲(chǔ)設(shè)備50。圖1中畫出的邏輯連接包括局域網(wǎng)(LAN)51和廣域網(wǎng)(WAN)52。那樣的網(wǎng)絡(luò)環(huán)境常見于辦公室、企業(yè)范圍計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和因特網(wǎng)。在LAN網(wǎng)絡(luò)環(huán)境中使用時(shí),個(gè)人計(jì)算機(jī)20通過(guò)網(wǎng)絡(luò)接口或適配器53連接到LAN51。在WAN網(wǎng)絡(luò)環(huán)境中使用時(shí),個(gè)人計(jì)算機(jī)20通常包括調(diào)制解調(diào)器54或用于通過(guò)如因特網(wǎng)等廣域網(wǎng)52建立通信的其它裝置。內(nèi)置或外接的調(diào)制解調(diào)器54通過(guò)串行端口接口46連接系統(tǒng)總線23。在網(wǎng)絡(luò)環(huán)境中,相對(duì)個(gè)人計(jì)算機(jī)20畫出的程序模塊或其部分可存儲(chǔ)在遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備中??梢岳斫猓境龅木W(wǎng)絡(luò)連接是示例性的,可使用在計(jì)算機(jī)之間建立通信鏈路的其它裝置。如圖2的框圖所示,計(jì)算機(jī)系統(tǒng)200能被粗略地分成三個(gè)組件組硬件組件202、硬件/軟件接口系統(tǒng)組件204、以及應(yīng)用程序組件206(在這里某些上下文中也稱為"用戶組件"或"軟件組件")。回到圖1,在計(jì)算機(jī)系統(tǒng)的各種實(shí)施例中,硬件組件202可包括中央處理單元(CPU)21、存儲(chǔ)器(ROM24和RAM25)、基本輸入/輸出系統(tǒng)(BIOS)26、以及各種輸入/輸出(I/O)設(shè)備,如鍵盤40、鼠標(biāo)42、監(jiān)視器47、和/或打印機(jī)(未示出)等。硬件組件202包括計(jì)算機(jī)系統(tǒng)200的基本物理基礎(chǔ)結(jié)構(gòu)。應(yīng)用程序組件206包括各種軟件程序,包括但不限于編譯器、數(shù)據(jù)庫(kù)系統(tǒng)、文件處理程序、商業(yè)程序、視頻游戲等。應(yīng)用程序提供計(jì)算機(jī)資源用于為各種用戶(機(jī)器、其它計(jì)算機(jī)系統(tǒng)和/或最終用戶)解決問(wèn)題、提供解決方案和處理數(shù)據(jù)的手段。硬件/軟件接口系統(tǒng)組件204包括(在某些實(shí)施例中可以僅包括)操作系統(tǒng),在大多數(shù)情況后者本身包括外殼和內(nèi)核。"操作系統(tǒng)"(OS)是啟動(dòng)擔(dān)當(dāng)在應(yīng)用程序和計(jì)算機(jī)硬件之間的中介的特殊程序。硬件/軟件接口系統(tǒng)組件204還可包括虛擬機(jī)管理器(VMM)、公用語(yǔ)言運(yùn)行庫(kù)(CLR)或其功能等效物、Java虛擬機(jī)(JVM)或其功能等效物、或在計(jì)算機(jī)系統(tǒng)中的操作系統(tǒng)處或操作系統(tǒng)外的其它軟件組件。硬件/軟件接口系統(tǒng)的目的是提供用戶能在其中執(zhí)行應(yīng)用程序的環(huán)境。任何硬件/軟件接口系統(tǒng)的目標(biāo)是使計(jì)算機(jī)系統(tǒng)便于使用,以及以有效的方式利用計(jì)算機(jī)硬件。硬件/軟件接口系統(tǒng)一般在啟動(dòng)時(shí)被加載到計(jì)算機(jī)系統(tǒng),并隨后管理在計(jì)算機(jī)系統(tǒng)中所有應(yīng)用程序。應(yīng)用程序通過(guò)經(jīng)由應(yīng)用程序接口(API)請(qǐng)求服務(wù)來(lái)與硬件/軟件接口系統(tǒng)交互。某些應(yīng)用程序使最終用戶能通過(guò)如命令語(yǔ)言或圖形用戶界面(GUI)與硬件/軟件接口系統(tǒng)交互。硬件/軟件接口系統(tǒng)傳統(tǒng)上執(zhí)行應(yīng)用程序的各種服務(wù)。在多個(gè)程序同時(shí)運(yùn)行的多任務(wù)硬件/軟件接口系統(tǒng)中,硬件/軟件接口系統(tǒng)確定哪些應(yīng)用程序以什么次序運(yùn)行,以及在切換到另一應(yīng)用程序之前以供輪流對(duì)每個(gè)應(yīng)用程允許多少時(shí)間。硬件/軟件接口系統(tǒng)還管理在多個(gè)應(yīng)用程序之間內(nèi)部存儲(chǔ)器的共享,并處理來(lái)往于如硬盤、打印機(jī)和撥號(hào)端口等附加的硬件設(shè)備的輸入和輸出。硬件/軟件接口系統(tǒng)還將有關(guān)操作狀態(tài)和可能發(fā)生的任何錯(cuò)誤的消息發(fā)送到每個(gè)應(yīng)用程序(在某些情況下到最終用戶)。硬件/軟件接口系統(tǒng)也能下傳(offload)批處理作業(yè)(如打印)的管理,使得啟動(dòng)的應(yīng)用程序能擺脫此工作并重新開始其它處理和/或操作。在能提供并行處理的計(jì)算機(jī)上,硬件/軟件接口系統(tǒng)還管理劃分程序,使得它同時(shí)在多個(gè)處理器上運(yùn)行。硬件/軟件接口系統(tǒng)外殼(這里簡(jiǎn)稱"外殼")是到硬件/軟件接口系統(tǒng)的交互式最終用戶界面。(外殼也稱為"命令解釋器",或在一個(gè)操作系統(tǒng)中稱為"操作系統(tǒng)外殼")。外殼是可直接由應(yīng)用程序和/或最終用戶訪問(wèn)的硬件/軟件接口系統(tǒng)的外層。與外殼相反,內(nèi)核是直接與硬件組件交互的硬件/軟件接口系統(tǒng)的最內(nèi)層。雖然可構(gòu)想本發(fā)明的許多實(shí)施例尤其適用于計(jì)算機(jī)化的系統(tǒng),然而在本說(shuō)明中不意味著將本發(fā)明限于那些實(shí)施例。相反,這里使用的術(shù)語(yǔ)"計(jì)算機(jī)系統(tǒng)"旨在包括能存儲(chǔ)和處理信息和/或能使用存儲(chǔ)的信息控制設(shè)備本身的行為或執(zhí)行的任何和所有設(shè)備,而不管那些設(shè)備本質(zhì)上是否為電子的、機(jī)械的、邏輯的、或虛擬的。B.傳統(tǒng)的基于文件的存儲(chǔ)在當(dāng)今大多數(shù)計(jì)算機(jī)系統(tǒng)中,"文件"是可存儲(chǔ)信息的單元,它可包括硬件/軟件接口系統(tǒng)和應(yīng)用程序、數(shù)據(jù)集等。在所有現(xiàn)代硬件/軟件接口系統(tǒng)中(Windows,Unix,Linux,MacOS,虛擬機(jī)系統(tǒng)等),文件是能由硬件/軟件接口系統(tǒng)處理的基本的分立(可存儲(chǔ)和可檢索)信息單元。文件組通常被組織成"文件夾"。在MicrosoftWindows、MacintoshOS和其它硬件/軟件接口系統(tǒng)中,文件夾是能作為單個(gè)信息單元被檢索、移動(dòng)和處理的文件的集合。這些文件夾進(jìn)而被組織成稱為"目錄"(在后面詳細(xì)討論)的基于樹形的分層結(jié)構(gòu)排列。在如Dos、z/OS和大多數(shù)基于Unix的操作系統(tǒng)的其它硬件/軟件接口系統(tǒng)中,術(shù)語(yǔ)"目錄"和域"文件夾"是可交替使用的,早期的Apple計(jì)算機(jī)系統(tǒng)(如AppleIIe)使用術(shù)語(yǔ)"類別"來(lái)代替目錄;然而在這里使用時(shí)所有這些術(shù)語(yǔ)被看成是同義語(yǔ)并可交替使用,并旨在還包括對(duì)分層信息存儲(chǔ)結(jié)構(gòu)及其文件夾和文件組件的所有其它等價(jià)術(shù)語(yǔ)的引用。傳統(tǒng)上,目錄(又名文件夾的目錄)是基于樹形的分層結(jié)構(gòu),其中文件被組合成文件夾,文件夾進(jìn)而按包括目錄樹的相對(duì)節(jié)點(diǎn)位置排列。例如,如圖2A所示,基于DOS的文件系統(tǒng)的基本文件夾(或"根目錄")212可包括多個(gè)文件夾214,其每一個(gè)可以還包括另外的文件夾(如特定文件夾的"子文件夾")216,而這些的每一個(gè)又包括另外的文件夾218,直到無(wú)限。這些文件夾的每一個(gè)可具有一個(gè)或多個(gè)文件220,雖然在硬件/軟件接口系統(tǒng)級(jí)上,文件夾中的各個(gè)文件除了它們?cè)跇湫畏謱咏Y(jié)構(gòu)中的位置外沒有什么共同點(diǎn)。不奇怪,將文件組織到文件分層結(jié)構(gòu)的方法間接地反映了用于存儲(chǔ)這些文件的典型存儲(chǔ)介質(zhì)(如硬盤、軟盤、CD-ROM等)的物理組織。除上述以外,每個(gè)文件夾是對(duì)其子文件夾和其目錄的容器一即,每個(gè)文件夾擁有其子文件夾和文件。例如,當(dāng)文件夾被硬件/軟件接口系統(tǒng)刪除時(shí),該文件夾的子文件夾和文件也被刪除(在每個(gè)子文件夾的情況下還遞歸地包括它自己的子文件夾和文件)。同樣,每個(gè)文件一般只由一個(gè)文件夾擁有,并且雖然文件能被拷貝且副本位于不同的文件夾,文件的副本本身是不同且獨(dú)立單元,它與原始文件無(wú)直接連接(如對(duì)原始文件的改變?cè)谟布?軟件接口系統(tǒng)級(jí)上不反映到副本文件)。因此在這方面,文件和文件夾在本質(zhì)上是"物理的",因?yàn)槲募A類似于物理容器來(lái)處理,而文件作為這些容器中不同且獨(dú)立的物理元素來(lái)處理。II.用于組織、搜索和共享數(shù)據(jù)的WINFS存儲(chǔ)平臺(tái)本發(fā)明結(jié)合通過(guò)引用結(jié)合于此的發(fā)明針對(duì)用于組織、搜索和共享數(shù)據(jù)的存儲(chǔ)平臺(tái)。本發(fā)明的存儲(chǔ)平臺(tái)擴(kuò)展和拓寬了數(shù)據(jù)平臺(tái),超越上文討論的文件系統(tǒng)及數(shù)據(jù)庫(kù)系統(tǒng),并被設(shè)計(jì)成存儲(chǔ)所有類型的數(shù)據(jù),包括稱為項(xiàng)目的新格式的數(shù)據(jù)。A.詞匯表在這里及在權(quán)利要求書中使用的術(shù)語(yǔ)有下列意義"項(xiàng)目"是能存儲(chǔ)硬件/軟件接口系統(tǒng)可訪問(wèn)的信息的單元,不象簡(jiǎn)單文件,它是具有由硬件/軟件接口系統(tǒng)外殼展現(xiàn)給最終用戶的所有對(duì)象共同支持的基本屬性集的對(duì)象。項(xiàng)目還具對(duì)所有項(xiàng)目類型共同支持的屬性和關(guān)系,包括允許引入新屬性和關(guān)系的特征(在下面詳細(xì)討論)。"操作系統(tǒng)"(OS)是扮作應(yīng)用程序和計(jì)算機(jī)硬件之間的中介的特殊程序。在大多數(shù)情況下,操作系統(tǒng)包括外殼和內(nèi)核。"硬件/軟件接口系統(tǒng)"是軟件、或硬件及軟件的組合,它起著在計(jì)算機(jī)系統(tǒng)的底層硬件組件和在計(jì)算機(jī)系統(tǒng)上執(zhí)行的應(yīng)用程序之間的接口的作用。硬件/軟件接口系統(tǒng)通常包括(在某些實(shí)施例中只包括)操作系統(tǒng)。硬件/軟件接口系統(tǒng)還能包括虛擬機(jī)管理器(VMM)、公用語(yǔ)言運(yùn)行庫(kù)(CLR)或其功能等效物,Java虛擬機(jī)(JVM)或其功能等效物、或在計(jì)算機(jī)系統(tǒng)的操作系統(tǒng)處或除操作系統(tǒng)外的其它軟件組件。硬件/軟件接口系統(tǒng)的目的是提供用戶能執(zhí)行應(yīng)用程序的環(huán)境。任何硬件/軟件接口系統(tǒng)的目標(biāo)是使計(jì)算機(jī)系統(tǒng)便于使用,并以有效方式利用計(jì)算機(jī)硬件。B.存儲(chǔ)平臺(tái)綜述參考圖3,存儲(chǔ)平臺(tái)300包括在數(shù)據(jù)庫(kù)引擎314上實(shí)現(xiàn)的數(shù)據(jù)存儲(chǔ)302。在一個(gè)實(shí)施例中,數(shù)據(jù)庫(kù)引擎包括帶有對(duì)象關(guān)系擴(kuò)展的關(guān)系型數(shù)據(jù)庫(kù)引擎。在一個(gè)實(shí)施例中,關(guān)系型數(shù)據(jù)庫(kù)引擎314包括MicrosoftSQLServer關(guān)系型數(shù)據(jù)庫(kù)引擎。數(shù)據(jù)存儲(chǔ)302實(shí)現(xiàn)支持?jǐn)?shù)據(jù)的組織、搜索、共享、同步和安全的數(shù)據(jù)模型304。在如模式340等模式中描述特定的數(shù)據(jù)類型,并且存儲(chǔ)平臺(tái)300提供用于采用這些模式并用于擴(kuò)展這些模式的工具346,這在后面詳述。在數(shù)據(jù)存儲(chǔ)302中實(shí)現(xiàn)的改變跟蹤機(jī)制306提供跟蹤數(shù)據(jù)存儲(chǔ)的改變的能力。數(shù)據(jù)存儲(chǔ)302還提供安全能力308和升級(jí)/降級(jí)能力310,均在后文詳述。數(shù)據(jù)存儲(chǔ)302還提供一組應(yīng)用程序接口312,以向利用該存儲(chǔ)平臺(tái)的其它存儲(chǔ)平臺(tái)組件和應(yīng)用程序(如應(yīng)用程序350a,350b和350c)展現(xiàn)數(shù)據(jù)存儲(chǔ)302的能力。本發(fā)明的存儲(chǔ)平臺(tái)還包括應(yīng)用程序接口(API)322,使如應(yīng)用程序350a,350b,和350c等應(yīng)用程序能訪問(wèn)存儲(chǔ)平臺(tái)的所有上述功能并能訪問(wèn)在模式中描述的數(shù)據(jù)。應(yīng)用程序能結(jié)合如OLEOBAPI324和MicrosoftWindowsWin32API326等其它API來(lái)使用存儲(chǔ)平臺(tái)API322。本發(fā)明的存儲(chǔ)平臺(tái)300能向應(yīng)用程序提供各種服務(wù),包括便于在用戶或系統(tǒng)之間共享數(shù)據(jù)的同步服務(wù)330。例如,同步服務(wù)330允許與具有與數(shù)據(jù)存儲(chǔ)302相同格式的其它數(shù)據(jù)存儲(chǔ)340的互操作,并訪問(wèn)具有其它格式的數(shù)據(jù)存儲(chǔ)342。存儲(chǔ)平臺(tái)300還提供允許數(shù)據(jù)存儲(chǔ)302與如WindowsNTFS文件系統(tǒng)318等現(xiàn)有文件系統(tǒng)的互操作的文件系統(tǒng)能力。在至少某些實(shí)施例中,存儲(chǔ)平臺(tái)320還能向應(yīng)用程序提供另外的能力,以允許對(duì)數(shù)據(jù)起作用并允許與其它系統(tǒng)的交互。這些能力可體現(xiàn)在如InfoAgent服務(wù)334和通知服務(wù)332等附加服務(wù)328的形式中,以及體現(xiàn)在其它實(shí)用程序336的形式中。在至少某些實(shí)施例中,存儲(chǔ)平臺(tái)以計(jì)算機(jī)系統(tǒng)的硬件/軟件接口系統(tǒng)來(lái)實(shí)施,或形成其完整的一部分。例如而非限制,本發(fā)明的存儲(chǔ)平臺(tái)能用操作系統(tǒng)、虛擬機(jī)管理器(VMM)、公用語(yǔ)言運(yùn)行庫(kù)(CLR)或其功能等效物、或Java虛擬機(jī)(JVM)或其功能等效物來(lái)實(shí)施,或形成其完整的一部分。通過(guò)其公用的存儲(chǔ)基礎(chǔ)和模式化的數(shù)據(jù),本發(fā)明的存儲(chǔ)平臺(tái)使消費(fèi)者、知識(shí)工人和企業(yè)作能夠更有效地進(jìn)行應(yīng)用程序的開發(fā)。它提供了豐富和可擴(kuò)展的編程表面區(qū)域,不僅可得到內(nèi)含在其數(shù)據(jù)模型中的能力,還能包括和擴(kuò)展現(xiàn)有文件系統(tǒng)和數(shù)據(jù)庫(kù)訪問(wèn)方法。在上述描述中及在各種附圖中,本發(fā)明的存儲(chǔ)平臺(tái)300可稱作"WinFs"。然而使用此名字指存儲(chǔ)平臺(tái)僅是為了描述方便,并不試圖作出如此限制。C.數(shù)據(jù)模型本發(fā)明的存儲(chǔ)平臺(tái)300的數(shù)據(jù)存儲(chǔ)302實(shí)現(xiàn)一種數(shù)據(jù)模型,它支持對(duì)駐留在數(shù)據(jù)存儲(chǔ)中的數(shù)據(jù)的組織、搜索、共享、同步和安全。在本發(fā)明的數(shù)據(jù)模型中,"項(xiàng)目"是存儲(chǔ)信息的基本單元。該數(shù)據(jù)模型提供一種機(jī)制,用于聲明項(xiàng)目和項(xiàng)目的擴(kuò)展、用于建立在項(xiàng)目之間的關(guān)系、以及用于將項(xiàng)目組織到項(xiàng)目文件夾和類別中,下面將更充分描述。該數(shù)據(jù)模型依賴于兩個(gè)原語(yǔ)機(jī)制類型和關(guān)系。類型是提供支配類型的實(shí)例的形式的格式的結(jié)構(gòu)。格式被表達(dá)成屬性的有序組。屬性是給定類型的值或一組值的名字。例如,USPostalAddress(美國(guó)郵政地址)類型具有屬性Street(街道)、City(城市)、Zip(郵編)、State(州),其中Street、City和State是String類型,而Zip是Int32類型。Street可以是多值(即一組值),允許地址對(duì)Street屬性具有一個(gè)以上值。系統(tǒng)定義能在其它類型構(gòu)造中使用的某些原語(yǔ)類型,包括String、Binary、Boolean、Intl6、Int32、Int64、Single、Double、Byte、DateTime、Decimal和GUID??墒褂萌魏卧Z(yǔ)類型(帶有下面注釋的某些限制)或任何構(gòu)造的類型來(lái)定義類型的屬性。例如,Location(位置)類型可定義具有屬性Coordinate(座標(biāo))和Address(地址),其中Address屬性是上述類型USPostalAddress。屬性也可以是必需的或可任選的。關(guān)系可被聲明并表示兩個(gè)類型的實(shí)例集之間的映射。例如,可以有在Person(個(gè)人)類型和Location類型之間聲明的關(guān)系,稱為L(zhǎng)ivesAt(生活在),它確定什么人生活在什么位置。關(guān)系具有名和兩個(gè)端點(diǎn),即源端點(diǎn)和目標(biāo)端點(diǎn)。關(guān)系也可具有屬性的有序集。源端點(diǎn)及目標(biāo)端點(diǎn)均具有名和類型。例如,LivesAt關(guān)系具有稱為類型Person的Occupant(居民)的源和稱為類型Location的Dwelling(住房)的目標(biāo),且此外具有屬性StartDate(起始日期)和EndDate(終止日期),表示該居民生活在該住房的時(shí)間段。注意,隨時(shí)間推移,個(gè)人能生活在多個(gè)住房,且住房可有多個(gè)居民,所以放置StartDate和EndDate信息的最可能的地方是在關(guān)系本身處。關(guān)系定義了在由作為端點(diǎn)類型給出的類型約束的實(shí)例之間的映射。例如LivesAt關(guān)系不能是其中Automobile(汽車)是Occupant(居民)的關(guān)系,因?yàn)锳utomobile不是Person。數(shù)據(jù)模型允許定義類型間的子類型一超類型關(guān)系。也稱為基本類型關(guān)系的子類型一超類系型關(guān)系以如下方式定義,若類型A是類型B的基本類型,則必須是B的每個(gè)實(shí)例也是A的實(shí)例的情況。另一種表達(dá)的方法是符合B的每個(gè)實(shí)例必須符合A。例如,若A具有String類型的屬性Name(名字),而B具有Intl6類型的屬性Age(年齡),則得出,B的任何實(shí)例必須兼有Name和Age。類型的分層結(jié)構(gòu)可被設(shè)想成帶有在根上的單個(gè)超類型的樹。根的分枝提供第一級(jí)子類型,該級(jí)分枝提供第二級(jí)子類型,如此等等,直到本身不再具有任何子類型的葉端(leaf-most)子類型。樹不限于統(tǒng)一深度,但不能包含任何回路。給定的類型可具有零個(gè)或許多子類型和零個(gè)或一個(gè)超類型。給定實(shí)例可最多符合一個(gè)類型以及該類型的超類型。換言之,對(duì)樹中任一級(jí)處給定的實(shí)例,該實(shí)例最多可符合該級(jí)上的一個(gè)子類型。如果一類型的實(shí)例必須也是該類型的子類型的實(shí)例,則該類型可說(shuō)成是抽象。1.項(xiàng)目項(xiàng)目是可存儲(chǔ)的信息的單元,不象簡(jiǎn)單的文件,它是具有由存儲(chǔ)平臺(tái)向最終用戶或應(yīng)用程序展現(xiàn)的所有對(duì)象共同支持的基本屬性集的對(duì)象。項(xiàng)目也具有所有項(xiàng)目類型共同支持的屬性和關(guān)系,包括如下所述允許引入新的屬性和關(guān)系的特征。項(xiàng)目是公用操作的對(duì)象,如拷貝、刪除、移動(dòng)、打開、打印、備份、恢復(fù)、復(fù)制等。項(xiàng)目是能被存儲(chǔ)和檢索的單元,且由存儲(chǔ)平臺(tái)處理的可存儲(chǔ)信息的所有形式作為項(xiàng)目、項(xiàng)目的屬性、或項(xiàng)目之間的關(guān)系存在,其每個(gè)在下面更詳細(xì)討論。項(xiàng)目旨在表示顯示的且容易理解的數(shù)據(jù)單元,如聯(lián)系人(Contacts)、人(People)、服務(wù)(Services)、位置(Locations)、(各種類型的)文檔(Documents)等。圖5A是示出項(xiàng)目的結(jié)構(gòu)的框圖。該項(xiàng)目的不合格的名是"Location"。該項(xiàng)目的合格名是"Core丄ocation",它表明,此項(xiàng)目結(jié)構(gòu)被定義成Core(核心)模式中的特定類型的項(xiàng)目(Core模式在下面詳細(xì)討論)。Location項(xiàng)目具有多個(gè)屬性,包括EAddress(電子郵件地址)、MetropolitanRegion(都市地區(qū))、Neighborhood(街坊)、和PostalAddress(郵政地址)。每個(gè)項(xiàng)目的特定類型屬性緊跟屬性名地表示,并用冒號(hào)(":")與屬性名分開。在類型名的右邊,對(duì)該屬性類型允許的值的數(shù)量在方括號(hào)("[]")之間表示,其中冒號(hào)(":")右邊的星號(hào)("*")表示未規(guī)定的和/或無(wú)限制的數(shù)量("許多")。冒號(hào)右邊的"1"表明最多一個(gè)值。冒號(hào)左邊的零("0")表明該屬性是可任選的(可以完全沒有值)。冒號(hào)左邊的"1"表明必須至少有一個(gè)值(該屬性是必須的)。Neighborhood和MetropolitanRegin均是"nvarchar"類型(或等效類型),它是預(yù)定義的數(shù)據(jù)類型或"簡(jiǎn)單類型"(這里用缺少大寫來(lái)表示)。然而EAddress和PostalAddress分別是類型EAddress和PostalAddress的已定義類型或"復(fù)雜類型"(這里用大寫標(biāo)記)的屬性。復(fù)雜類型是從一個(gè)或多個(gè)簡(jiǎn)單數(shù)據(jù)類型和/或從其它復(fù)雜類型導(dǎo)出的類型。一個(gè)項(xiàng)目的屬性的復(fù)雜類型還構(gòu)成"嵌套元素",因?yàn)閺?fù)雜類型的細(xì)節(jié)嵌套入直接項(xiàng)目中以定義其屬性,而屬于這些復(fù)雜類型的信息用具有這些屬性的項(xiàng)目來(lái)維持(在該項(xiàng)目的邊界內(nèi),如后面討論)。類型的這些概念是眾知的,且容易被本專業(yè)技術(shù)人員理解。圖5B是示出復(fù)雜屬性類型PostalAddress和EAddress的框圖。PostalAddress屬性類型定義,屬性類型PostalAddress的項(xiàng)目可期望有零個(gè)或一個(gè)City(城市)值、零個(gè)或一個(gè)CountryCode(國(guó)家代碼)值、零個(gè)或一個(gè)MailStop(國(guó)家代碼)值、和任何數(shù)量(零到許多)PostalAddress類型等等。以此方式,定義了一項(xiàng)目中的特定屬性的數(shù)據(jù)的形狀。EAddress屬性類型如所示類似地定義。雖然這里在本申請(qǐng)中可任選地使用,表示在Location項(xiàng)目中復(fù)雜類型的另一方法是用其中列出的每個(gè)復(fù)雜類型的各個(gè)屬性得出該項(xiàng)目。圖5C是示出Location項(xiàng)目的框圖,在其中進(jìn)一步描述其復(fù)雜類型。然而應(yīng)該理解,在此圖5C中Location項(xiàng)目的另一種表示恰是對(duì)圖5A中示出的同一個(gè)項(xiàng)目。本發(fā)明的存儲(chǔ)平臺(tái)還允許子分類(subtyping),從而一個(gè)屬性類能是另一個(gè)的子類型(其中一個(gè)屬性類繼承另一個(gè)父屬性類型的屬性)。類似于但不同于屬性及它們的屬性類型,項(xiàng)目繼承性地表示其自己的Item(項(xiàng)目)類型,它也是子分類的主題。換言之,本發(fā)明的若干實(shí)施例中的存儲(chǔ)平臺(tái)允許一個(gè)項(xiàng)目是另一個(gè)項(xiàng)目的子類型(從而一個(gè)項(xiàng)目繼承另一個(gè)父項(xiàng)目的屬性)。此外,對(duì)本發(fā)明的各種實(shí)施例,每個(gè)項(xiàng)目是"Item"項(xiàng)目類型的子類型,后者是在基礎(chǔ)模式中找到的第一和基本的項(xiàng)目類型(基礎(chǔ)模式也在后面詳細(xì)討論)。圖6A示出一項(xiàng)目(在此實(shí)例中為L(zhǎng)ocation項(xiàng)目)為在基礎(chǔ)模式中找到的Item項(xiàng)目類型的子類型。在此圖中,箭頭表示Location項(xiàng)目(如所有其它項(xiàng)目)是Item項(xiàng)目類型的子類型。作為從中導(dǎo)出所有其它項(xiàng)目的基本項(xiàng)目的Item項(xiàng)目類型具有若干如Itemld的重要屬性和各種時(shí)間標(biāo)記,從而定義了操作系統(tǒng)中所有項(xiàng)目的標(biāo)準(zhǔn)屬性。在本圖中,Item項(xiàng)目類型的這些屬性被Location所繼承,并從而成為L(zhǎng)ocation的屬性。表示從Item項(xiàng)目類型繼承的Location項(xiàng)目中屬性的另一種方法是用來(lái)自其中列出的父項(xiàng)目的每個(gè)屬性類型的各個(gè)屬性得出Location。圖6B是示出Location項(xiàng)目的框圖,其中除了其直接屬性外描述其繼承的類型。應(yīng)注意和理解,此項(xiàng)目是圖5A中示出的同一項(xiàng)目,雖然在本圖中,Location用所有其屬性示出,包括直接屬性(在本圖及圖5A中示出)和繼承屬性(在本圖中示出但未在圖5A中示出)(而在圖5A中,通過(guò)用箭頭示出Location項(xiàng)目是Item項(xiàng)目類型的子類型來(lái)引用這些屬性)。項(xiàng)目是獨(dú)立的對(duì)象,因而若刪除一項(xiàng)目,也刪除項(xiàng)目的所有直接和繼承的屬性。類似地,當(dāng)檢索一項(xiàng)目時(shí),檢索的是該項(xiàng)目及其所有直接和繼承的屬性(包括屬于其復(fù)雜屬性類型的信息)。本發(fā)明的某些實(shí)施例可使人們能在檢索特定項(xiàng)目時(shí)請(qǐng)求屬性的子集;然而對(duì)許多那樣的實(shí)施例默認(rèn)的是在檢索時(shí)向項(xiàng)目提供所有其直接和繼承的屬性。此外,項(xiàng)目的屬性也能通過(guò)添加新的屬性到該項(xiàng)目的類型的現(xiàn)有屬性而加以擴(kuò)展。這些"擴(kuò)展"其后是該項(xiàng)目的真實(shí)屬性,且該項(xiàng)目類型的子類型可自動(dòng)地包括擴(kuò)展屬性。項(xiàng)目的"邊界"由其屬性(包括復(fù)雜屬性類型、擴(kuò)展等)來(lái)表示。項(xiàng)目的邊界也表示在項(xiàng)目上執(zhí)行的操作的限制,包括拷貝、刪除、移動(dòng)、創(chuàng)建等。例如在本發(fā)明的若干實(shí)施例中,當(dāng)拷貝一項(xiàng)目時(shí),在該項(xiàng)目邊界之內(nèi)的所有內(nèi)容也被拷貝。對(duì)每個(gè)項(xiàng)目,邊界包括下列項(xiàng)目的項(xiàng)目類型,且若該項(xiàng)目是另一項(xiàng)目的子類型(如在所有項(xiàng)目從基礎(chǔ)模式的單個(gè)項(xiàng)目和項(xiàng)目類型導(dǎo)出的本發(fā)明的若干實(shí)施例的情況下),是任何適用的子類型信息(即屬于父項(xiàng)目類型的信息)。若要拷貝的原始項(xiàng)目是另一項(xiàng)目的子類型,該副本也能是該相同項(xiàng)目的子類型。項(xiàng)目的復(fù)雜類型屬性和擴(kuò)展(如果有的話)。若原始項(xiàng)目具有復(fù)雜類型(原來(lái)的或擴(kuò)展的)的屬性,副本也能具有相同的復(fù)雜類型。在"所有權(quán)關(guān)系"上的項(xiàng)目的記錄,S卩,本項(xiàng)目("擁有項(xiàng)目")擁有什么其它項(xiàng)目("目錄項(xiàng)目")的項(xiàng)目擁有列表。這特別關(guān)系到下面充分討論的項(xiàng)目文件夾和下面說(shuō)到的所有項(xiàng)目必須至少屬于一個(gè)項(xiàng)目文件夾的規(guī)則。此外,關(guān)于嵌入項(xiàng)目(下列更充分討論),一個(gè)嵌入項(xiàng)目被認(rèn)為是其中嵌入如拷貝、刪除等操作的項(xiàng)目的一部分。2.項(xiàng)目標(biāo)識(shí)在全局項(xiàng)目空間中用ItemID唯一地標(biāo)識(shí)項(xiàng)目。Base.Item類型定義了存儲(chǔ)該項(xiàng)目身份的類型GUID的字段ItemID。一項(xiàng)目必須在數(shù)據(jù)存儲(chǔ)中準(zhǔn)確只有一個(gè)身份。項(xiàng)目引用是包含定位和標(biāo)識(shí)項(xiàng)目的信息的數(shù)據(jù)結(jié)構(gòu)。在該數(shù)據(jù)模型中,定義名為ItemReference的抽象類型,從中導(dǎo)出所有項(xiàng)目引用類型。ItemReference(項(xiàng)目引用)類型定義了名為Resolve(解析)的虛擬方法。Resolve方法解析ItemReference并返回一項(xiàng)目。此方法被ItemReference的具體子類型所覆蓋,后者實(shí)現(xiàn)給定一引用時(shí)檢索項(xiàng)目的功能。調(diào)用Resolve方法作為存儲(chǔ)平臺(tái)API322的一部分。ItemIDReference(項(xiàng)目ID引用)是ItemReference的子類型。它定義了Locator(定位器)和ItemID字段。Locator字段命名(即標(biāo)識(shí))項(xiàng)目的域。它由能將Locator的值解析到項(xiàng)目域的定位器解析方法來(lái)處理。ItemID字段是ItemID類型。ItemPathReference(項(xiàng)目路徑引用)是定義Locator和Path(路徑)字段的ItemReference的特殊化。Locator字段標(biāo)識(shí)一項(xiàng)目域。它由能將Locator的值解析到項(xiàng)目域的定位器解析方法來(lái)處理。Path字段包含以由Locator提供的項(xiàng)目域?yàn)楦拇鎯?chǔ)平臺(tái)名字空間中的(相對(duì))路徑。不能在集合運(yùn)算中使用此類引用。引用一般必須通過(guò)路徑解析過(guò)程來(lái)解析。存儲(chǔ)平臺(tái)API322的Resolve方法提供此功能。上面討論的引用形式通過(guò)圖11示出的引用類型分層結(jié)構(gòu)表示。從這些類型繼承的另外引用類型能在模式中定義。它們能在關(guān)系聲明中用作目標(biāo)字段的類型。3.項(xiàng)目文件夾和類別如下面將更充分討論的,項(xiàng)目組能組織成稱為項(xiàng)目文件夾(不要與文件的文件夾混淆)的特殊項(xiàng)目。然而不象大多數(shù)文件系統(tǒng),一個(gè)項(xiàng)目可屬于多個(gè)項(xiàng)目文件夾,使得當(dāng)一個(gè)項(xiàng)目在一個(gè)項(xiàng)目文件夾中被訪問(wèn)和修訂時(shí),此修訂的項(xiàng)目隨后能直接從另一項(xiàng)目文件夾訪問(wèn)。實(shí)質(zhì)上,雖然對(duì)一個(gè)項(xiàng)目的訪問(wèn)可從不同的項(xiàng)目文件夾發(fā)生,事實(shí)上真正訪問(wèn)的是同一個(gè)項(xiàng)目。然而,一個(gè)項(xiàng)目文件夾不必?fù)碛衅渌谐蓡T項(xiàng)目,或簡(jiǎn)單地結(jié)合其它文件夾共同擁有項(xiàng)目,使得一個(gè)項(xiàng)目文件夾的刪除不必要導(dǎo)致項(xiàng)目的刪除。然而在本發(fā)明的若干實(shí)施例中,一個(gè)項(xiàng)目必須至少屬于一個(gè)項(xiàng)目文件夾,使得如果特定項(xiàng)目的唯一文件夾被刪除,則對(duì)某些實(shí)施例,該項(xiàng)目被自動(dòng)被刪除,或在另外實(shí)施例中,該項(xiàng)目自動(dòng)地成為默認(rèn)項(xiàng)目文件夾的成員("TrashCan(垃圾箱)"文件夾在概念上類似于在各種基于文件和文件夾的系統(tǒng)中使用的類似名字文件夾。)如下面更充分討論的,項(xiàng)目也可屬于基于共同描述的特征的類別,特征如(a)項(xiàng)目類型(或類型),(b)特定的直接或繼承的屬性(或?qū)傩?,或(c)對(duì)應(yīng)于項(xiàng)目屬性的特定值(或值)。例如,包括個(gè)人聯(lián)系人信息的特定屬性的項(xiàng)目可自動(dòng)屬于聯(lián)系人(Contact)類別,具有聯(lián)系人信息屬性的任何項(xiàng)目看來(lái)也自動(dòng)屬于此類別。同樣,具有"NewYorkCity(紐約市)"值的位置屬性的任何項(xiàng)目可自動(dòng)屬于紐約市類別。類別在概念上不同于項(xiàng)目文件夾之處在于,項(xiàng)目文件夾可包括互相無(wú)關(guān)的項(xiàng)目(即無(wú)共同的描述的特征),而在類別中的每個(gè)項(xiàng)目具有對(duì)該類別描述的共同類型、屬性或值("共同性"),正是這個(gè)共同性形成對(duì)它與該類別中其它項(xiàng)目或那些項(xiàng)目之間的關(guān)系的基礎(chǔ)。此外,雖然在特定文件夾中的項(xiàng)目的成員資格基于該項(xiàng)目的任何特定方面不是強(qiáng)制的,然而對(duì)某些實(shí)施例,具有在分類上與一類別相關(guān)的共同性的所有項(xiàng)目在硬件/軟件接口系統(tǒng)級(jí)上可自動(dòng)地成為該類別的成員。概念上,類別也能看作虛擬項(xiàng)目文件夾,其成員資格基于特定查詢(如在數(shù)據(jù)庫(kù)的上下文中)的結(jié)果,而滿足此查詢的條件(由類別的共同性確定)的項(xiàng)目應(yīng)構(gòu)成該類別的成員資格。圖4示出在項(xiàng)目、項(xiàng)目文件夾和類別之間的結(jié)構(gòu)關(guān)系。多個(gè)項(xiàng)目402、404、406、408、410、412、414、418和420是各個(gè)項(xiàng)目文件夾422、424、426、428和430的成員。某些項(xiàng)目屬于一個(gè)以上項(xiàng)目文件夾,如項(xiàng)目402屬于項(xiàng)目文件夾422和424。某些項(xiàng)目,如項(xiàng)目402、404、406、408、410和412也是一個(gè)或多個(gè)類別432、434和436的成員,而其它項(xiàng)目,如項(xiàng)目44,416,418和420可以不屬于任何類別(雖然這大部分不象在某些實(shí)施例中,其中具有任何屬性自動(dòng)暗示類別中的成員資格,因此在那樣實(shí)施例中為了不是任何類別的成員,項(xiàng)目應(yīng)完全地?zé)o特征)。與文件夾的分層結(jié)構(gòu)相反,類別和項(xiàng)目文件夾均有更像如所示的有向圖的結(jié)構(gòu)。在任何情況下,項(xiàng)目、項(xiàng)目文件夾和類別都是項(xiàng)目(盡管是不同的項(xiàng)目類型)。與文件、文件夾和目錄相反,本發(fā)明的項(xiàng)目、項(xiàng)目文件夾和類別的特征在本質(zhì)上不是"物理的",因?yàn)樗鼈儾痪哂形锢砣萜鞯母拍钌系牡葍r(jià)性,因而項(xiàng)目可存在于一個(gè)以上那樣的位置。項(xiàng)目存在于一個(gè)以上項(xiàng)目文件位置以及被組織成類別的能力提供了在硬件/軟件接口級(jí)上增強(qiáng)和豐富程度的數(shù)據(jù)處理及存儲(chǔ)結(jié)構(gòu)能力,超越了在本領(lǐng)域中當(dāng)前可得到的能力。4.模式a)基礎(chǔ)模式為了提供創(chuàng)建和使用項(xiàng)目的通用基礎(chǔ),本發(fā)明的存儲(chǔ)平臺(tái)的各實(shí)施例包括建立用于創(chuàng)建和組織項(xiàng)目及屬性的概念性框架的基礎(chǔ)(Base)模式?;A(chǔ)模式定義了某些特定類型的項(xiàng)目和屬性,以及從中進(jìn)一步導(dǎo)出子類型的這些特定基本類型的特征。使用此基礎(chǔ)模式使程序員能在概念上將項(xiàng)目(及其各自的類型)與屬性(及其各自的類型)加以區(qū)別。此外,基礎(chǔ)模式列出所有項(xiàng)目可擁有的基本屬性集,因?yàn)樗许?xiàng)目(及其對(duì)應(yīng)的項(xiàng)目類型)是從基礎(chǔ)模式的此基本項(xiàng)目(及其對(duì)應(yīng)的項(xiàng)目類型)導(dǎo)出。如圖7所示,對(duì)于本發(fā)明的若干實(shí)施例,基礎(chǔ)模式定義三個(gè)頂層類型Item(項(xiàng)目)、Extension(擴(kuò)展)和PropertyBase(屬性基礎(chǔ))。如圖所示,通過(guò)此基本"Item"項(xiàng)目類型的屬性定義了項(xiàng)目類型。相反,頂層屬性類型"PropertyBase"沒有預(yù)定義的屬性,僅是一個(gè)錨位(anchor),從中導(dǎo)出所有其它屬性,并通過(guò)它所有導(dǎo)出的屬性類型互相聯(lián)系(共同從單個(gè)屬性類型導(dǎo)出)。Extension類型屬性定義該擴(kuò)展擴(kuò)展了哪個(gè)項(xiàng)目,并定義將一個(gè)擴(kuò)展與另一個(gè)項(xiàng)目相區(qū)別的標(biāo)識(shí),因?yàn)橐粋€(gè)項(xiàng)目可具有多個(gè)擴(kuò)展。ItemFolder(項(xiàng)目文件夾)是Item項(xiàng)目類型的子類型,除了從Item繼承的屬性外,它表征用于建立到其成員(如果有的話)的關(guān)系,盡管Identitykey(身份關(guān)鍵字)和Property(屬性)均是PropertyBase的子類型。CategoryRef(目錄弓l用)進(jìn)而是IdentityKey的子類型。b)核心模式本發(fā)明的存儲(chǔ)平臺(tái)的各種實(shí)施例還包括為頂層項(xiàng)目類型結(jié)構(gòu)提供概念框架的核心(Core)模式。圖8A是示出核心模式中的項(xiàng)目的框圖,而圖8B是示出核心模式中屬性類型的框圖。在帶不同擴(kuò)展名(*.com、*.exe、*.bat、氣sys等)的文件和在基于文件和文件夾系統(tǒng)中其它準(zhǔn)則之間作出的區(qū)分是類似于核心模式的功能。在基于項(xiàng)目的硬件/軟件接口系統(tǒng)中,核心模式定義了一組核心項(xiàng)目類型,它們直接(按項(xiàng)目類型)或間接地(按項(xiàng)目子類型)將所有項(xiàng)目特征化成基于項(xiàng)目的硬件/軟件接口系統(tǒng)理解并能以預(yù)定或可預(yù)計(jì)的方式直接處理的一個(gè)或多個(gè)核心模式項(xiàng)目類型。預(yù)定的項(xiàng)目類型反映了在基于項(xiàng)目的硬件/軟件接口系統(tǒng)中最常用的項(xiàng)目,且因此通過(guò)理解這些包括核心模式的預(yù)定項(xiàng)目類型的基于項(xiàng)目的硬件/軟件接口系統(tǒng)獲取有效性級(jí)別。在某些實(shí)施例中,核心模式是不可擴(kuò)展的,即,沒有另外的類型可直接從基礎(chǔ)模式中的項(xiàng)目類型子分類,除非作為核心模式的一部分的特定的預(yù)定導(dǎo)出的項(xiàng)目類型。通過(guò)禁止對(duì)核心模式的擴(kuò)展(即,通過(guò)禁止向核心模式添加新的項(xiàng)目),存儲(chǔ)平臺(tái)托管核心模式項(xiàng)目類型的使用,因?yàn)槊總€(gè)后續(xù)的項(xiàng)目類型必須是核心模式項(xiàng)目類型的子類型。此結(jié)構(gòu)允許在保持具有一組預(yù)定的核心項(xiàng)目類型的益處的同時(shí)在定義另外項(xiàng)目類型時(shí)有合理程度的靈活性。參考圖8A,對(duì)本發(fā)明的各種實(shí)施例,由核心模式支持的特定項(xiàng)目類型可包括下列的一個(gè)或多個(gè)Category(類別)此項(xiàng)目類型(及從中導(dǎo)出的子類型)的項(xiàng)目代表在基于項(xiàng)目的硬件/軟件接口系統(tǒng)中的有效類別。Commodity(物品)作為值的可標(biāo)識(shí)事物的項(xiàng)目。Device(設(shè)備)具有支持信息處理能力的邏輯結(jié)構(gòu)的項(xiàng)目。Document(文檔)具有不能由基于項(xiàng)目的硬件/軟件接口系統(tǒng)解釋而相反由對(duì)應(yīng)于文檔類型的應(yīng)用程序解釋的內(nèi)容的項(xiàng)目。Event(事件)記錄環(huán)境中某些發(fā)生事件的項(xiàng)目。Location(位置)代表物理位置(如地理位置)的項(xiàng)目。Message(消息)在兩個(gè)或更多主體(下面定義)之間通信的項(xiàng)目。PrincipaK主體)具有除Itemld之外的至少一個(gè)肯定可驗(yàn)證身份(如,個(gè)人、組織、組、家庭、作者、服務(wù)等的標(biāo)識(shí))的項(xiàng)目。Statement(語(yǔ)句)具有關(guān)于環(huán)境的特定信息的項(xiàng)目,包括但不限于政策、預(yù)訂、憑證等。類似地參考圖8B,由核心模式支持的特定屬性類型可包括下列的一個(gè)或多個(gè)Certificate(證書)(從基礎(chǔ)模式中的基本PropertyBase類型導(dǎo)出)PrincipalIdentityKey(主體身份關(guān)鍵字)(從基礎(chǔ)模式中的IdentityKey類型導(dǎo)出)PostalAddress(郵政地址)(從基礎(chǔ)模式中Property類型導(dǎo)出)RichText(多信息文本)(從基礎(chǔ)模式中Property類型導(dǎo)出)EAddress(電子郵件地質(zhì))(從基礎(chǔ)模式中Property類型導(dǎo)出)IdentitySecnrityPackage(身份安全包)(從基礎(chǔ)模式中Relationship類型導(dǎo)出)RoleOccupancy(居民角色)(從基礎(chǔ)模式中Relationship類型導(dǎo)出)BasicPresence(基礎(chǔ)存在)(從基礎(chǔ)模式中Relationship類型導(dǎo)出)這些項(xiàng)目和屬性按在圖8A和圖8B中列出的各自屬性進(jìn)一步描述。5.關(guān)系關(guān)系是二元關(guān)系,其中一個(gè)項(xiàng)目被指定為源,另一個(gè)被指定為目標(biāo)。源項(xiàng)目和目標(biāo)項(xiàng)目通過(guò)關(guān)系相聯(lián)系。源項(xiàng)目一般控制關(guān)系的生命周期。即,當(dāng)源項(xiàng)目被刪除,項(xiàng)目之間的關(guān)系也被刪除。關(guān)系被分類成包含(Containment)和引用(Reference)關(guān)系。包含關(guān)系控制目標(biāo)項(xiàng)目的生命周期,而引用關(guān)系不提供任何生命周期管理語(yǔ)義。圖12示出關(guān)系分類的方式。包含關(guān)系又被分類成持有(Holding)和嵌入(Embedding)關(guān)系。當(dāng)對(duì)一個(gè)項(xiàng)目的所有持有關(guān)系被移除,該項(xiàng)目被刪除。持有關(guān)系通過(guò)引用計(jì)數(shù)機(jī)制控制目標(biāo)。嵌入關(guān)系能夠?qū)?fù)合項(xiàng)目建模,并能被看作排他的持有關(guān)系。一個(gè)項(xiàng)目能是一個(gè)或多個(gè)持有關(guān)系的目標(biāo);但一個(gè)項(xiàng)目只能是一個(gè)嵌入關(guān)系的目標(biāo)。作為嵌入關(guān)系的目標(biāo)的項(xiàng)目不能是任一其它持有或嵌入關(guān)系的目標(biāo)。引用關(guān)系不控制目標(biāo)項(xiàng)目的生命周期。它們可以是搖擺不定的一目標(biāo)項(xiàng)目可以不存在。引用關(guān)系能用于在全局項(xiàng)目名字空間的任何處(即,包括遠(yuǎn)程數(shù)據(jù)存儲(chǔ))建模對(duì)項(xiàng)目的引用。獲得一項(xiàng)目不自動(dòng)取得某關(guān)系,應(yīng)用程序必須明確地請(qǐng)求項(xiàng)目的關(guān)系。此外,修改關(guān)系不修改源或目標(biāo)項(xiàng)目;類似地,添加關(guān)系不影響源/目標(biāo)項(xiàng)目。a)關(guān)系聲明顯式的關(guān)系類型用下列元素定義;在Name(名字)屬性中指定關(guān)系名下列之一的關(guān)系類型持有、嵌入、弓l用。這是在Type(類型)屬性中指定的。源和目標(biāo)端點(diǎn)。每個(gè)端點(diǎn)指定所引用項(xiàng)目的名和類型。源端點(diǎn)字段一般是ItemID(項(xiàng)目ID)類型(未聲明),而必須引用在與關(guān)系實(shí)例同一數(shù)據(jù)存儲(chǔ)中的項(xiàng)目。對(duì)持有和嵌入關(guān)系,目標(biāo)端點(diǎn)字段必須是ItemIDReference(項(xiàng)目ID引用)類型,且它必須引用在與關(guān)系實(shí)例相同存儲(chǔ)中的項(xiàng)目。對(duì)引用關(guān)系,目標(biāo)端點(diǎn)能是任何ItemReference(項(xiàng)目引用)類型,并能引用在其它存儲(chǔ)平臺(tái)數(shù)據(jù)存儲(chǔ)中的項(xiàng)目。能可任選地聲明標(biāo)量或PropertyBase(屬性基礎(chǔ))類型的一個(gè)或多個(gè)字段。這些字段能包含與該關(guān)系相關(guān)聯(lián)的數(shù)據(jù)。關(guān)系實(shí)例被存儲(chǔ)在全局關(guān)系表中。每個(gè)關(guān)系實(shí)例唯一地由組合(源ItemID、關(guān)系ID)標(biāo)識(shí)。對(duì)所有源自給定項(xiàng)目的關(guān)系,在給定的源ItemID中關(guān)系ID是唯一的,而不管它們的類型。源項(xiàng)目是關(guān)系的擁有者。而被指定為擁有者的項(xiàng)目控制關(guān)系的生命周期,關(guān)系本身和與它們相關(guān)的項(xiàng)目分開。存儲(chǔ)平臺(tái)API322提供用于展現(xiàn)與項(xiàng)目相關(guān)聯(lián)的關(guān)系的機(jī)制。這里是一個(gè)關(guān)系聲明的例子。<RdationshipName="Employment"BaseType="Reference"><SourceName="Employee"ItemType="Contact.Person,V><TargetName="Employer"ItemType-"ContactOrganization"ReferenceType="ItemIDReference"/><PropertyName="StartDate,,Type="thestorageplatformTypes.DateTime"/>〈PropertyName="EndDate"Type=,,thestorageplatformTypes.DateTime"/>〈PropertyName="Office"Type="thestorageplatformTypes.DateTime"/></Relationship>這是引用關(guān)系的例子。若由源引用所引用的個(gè)人項(xiàng)目不存在,則不能創(chuàng)建該關(guān)系。而且若該個(gè)人項(xiàng)目被刪除,在個(gè)人和組織之間的關(guān)系實(shí)例也被刪除。然而若組織項(xiàng)目被刪除,關(guān)系不被刪除,而它是搖擺不定的。b)持有關(guān)系持有關(guān)系用于基于目標(biāo)項(xiàng)目的生命周期管理來(lái)對(duì)引用計(jì)數(shù)建模。一個(gè)項(xiàng)目可以是用于對(duì)項(xiàng)目的零個(gè)或多個(gè)關(guān)系的源端點(diǎn)。不是嵌入項(xiàng)目的項(xiàng)目可以是在一個(gè)或多個(gè)持有關(guān)系中的目標(biāo)項(xiàng)目。目標(biāo)端點(diǎn)引用類型必須是ItemIDReference,且它必須引用在與關(guān)系實(shí)例相同的存儲(chǔ)中的項(xiàng)目。持有關(guān)系實(shí)施目標(biāo)端點(diǎn)的生命周期管理。持有關(guān)系實(shí)例和作為目標(biāo)的項(xiàng)目的創(chuàng)建是原子操作??梢詣?chuàng)建將同一項(xiàng)目作為目標(biāo)的另外的持有關(guān)系實(shí)例。當(dāng)具有給定項(xiàng)目作為目標(biāo)端點(diǎn)的最后一個(gè)持有關(guān)系實(shí)例被刪除時(shí),該目標(biāo)項(xiàng)目也被刪除。在關(guān)系聲明中指定的端點(diǎn)項(xiàng)目的類型一般在創(chuàng)建該關(guān)系的實(shí)例時(shí)強(qiáng)制。在關(guān)系建立之后端點(diǎn)項(xiàng)目的類型不能改變。持有關(guān)系在形成項(xiàng)目的名字空間中起著關(guān)鍵作用。它們包含"Name(名字)"屬性,它定義目標(biāo)項(xiàng)目相對(duì)于源項(xiàng)目的名字。對(duì)所有源自給定項(xiàng)目的持有關(guān)系,相對(duì)名字是唯一的。從根項(xiàng)目開始到給定項(xiàng)目的相對(duì)名字的有序類表形成該項(xiàng)目的全名。持有關(guān)系形成一有向非循環(huán)圖(DAG)。在創(chuàng)建持有關(guān)系時(shí),系統(tǒng)確保不產(chǎn)生回路,從而確保項(xiàng)目的名字空間形成DAG。雖然持有關(guān)系控制目標(biāo)項(xiàng)目的生命周期,它不控制目標(biāo)端點(diǎn)項(xiàng)目的操作的一致性。目標(biāo)項(xiàng)目在操作上獨(dú)立于通過(guò)持有關(guān)系擁有它的項(xiàng)目。在作為持有關(guān)系的源的項(xiàng)目上的拷貝、移動(dòng)、備份和其它操作不影響作為同一關(guān)系的目標(biāo)的項(xiàng)目一例如,備份文件夾項(xiàng)目不自動(dòng)地備份該文件夾中所有項(xiàng)目(FolderMember(文件夾成員)關(guān)系中的目標(biāo))。下面是持有關(guān)系的例子(RelationshipName=,,F(xiàn)olderMembers"BaseType=,,Holding,,><SourceName=,,F(xiàn)older"ItemType="Base.Folder7>〈TargetName="Item"ItemType="Base.Item,,ReferenceType="ItemIDReference"/></Rdationship>FolderMember關(guān)系使文件夾的概念成為項(xiàng)目的類屬集合。C)嵌入關(guān)系嵌入關(guān)系將目標(biāo)項(xiàng)目的生命周期的排外控制的概念模型化。它們?cè)试S合成項(xiàng)目的概念。嵌入關(guān)系實(shí)例和作為目標(biāo)的項(xiàng)目的創(chuàng)建是原子操作。一個(gè)項(xiàng)目能是零個(gè)或多個(gè)嵌入關(guān)系的源。然而一個(gè)項(xiàng)目能是一個(gè)且僅是一個(gè)嵌入關(guān)系的目標(biāo)。作為嵌入關(guān)系的目標(biāo)的項(xiàng)目不能是持有關(guān)系的目標(biāo)。目標(biāo)端點(diǎn)引用類型必須是ItemIDReference,且它必須引用在與關(guān)系實(shí)例相同數(shù)據(jù)存儲(chǔ)中的項(xiàng)目。在關(guān)系聲明中指定的端點(diǎn)項(xiàng)目的類型一般在創(chuàng)建該關(guān)系的實(shí)例時(shí)強(qiáng)制。在關(guān)系建立之后端點(diǎn)的類型不能改變。嵌入關(guān)系控制該目標(biāo)端點(diǎn)的操作一致性。例如,串行化項(xiàng)目的操作可包括串行化所有源自該項(xiàng)目及所有其目標(biāo)的所有嵌入關(guān)系;拷貝一項(xiàng)目也拷貝所有它的嵌入項(xiàng)目。下面是示例聲明(RelationshipName=,,ArchiveMembers"BaseType-,,Embedding">〈SourceName="Archive"ItemType="Zip,Archive"/><TargetName="Member"ItemType="Base'Item,,ReferenceType="ItemIDReference"/><PropertyName-"ZipSize"Type="thestorageplatformTypes.bigint"/>〈PropertyName="SizeReduction"Type=,,thestorageplatformTypes.float"/></Relationship>d)引用關(guān)系引用關(guān)系不控制它引用的項(xiàng)目的生命周期。尤其是,引用關(guān)系不保證目標(biāo)的存在,也不保證目標(biāo)的類型如關(guān)系聲明中指定的那樣。這意味著引用關(guān)系能是搖擺不定的。而且引用關(guān)系能引用在其它數(shù)據(jù)存儲(chǔ)中的項(xiàng)目。引用關(guān)系能看作類似于網(wǎng)頁(yè)上的鏈接的概念。下面是引用關(guān)系說(shuō)明的例子(RelationshipName="DocumentAuthor"BaseType-"Reference"><SourcItemType-"Document"ItemType="Base.Document7><TargetItemType-"Author"ItemType="Base.Author"ReferenceType="ItemIDReference"/><PropertyType="Role"Type="Core.CategoryRef,/>〈PropertyType-"DisplayName"Type-"thestorageplatformTypes.nvarchar(256)"/></Relationship>在目標(biāo)的端點(diǎn)允許任何引用類型。參與引用關(guān)系的項(xiàng)目可以是任何項(xiàng)目類型。引用關(guān)系用于對(duì)項(xiàng)目之間的大多數(shù)非生命周期管理關(guān)系建模。因?yàn)椴粡?qiáng)制目標(biāo)的存在,引用關(guān)系便于對(duì)松散耦合的關(guān)系建模。引用關(guān)系能用于在其它存儲(chǔ),包括在其它計(jì)算機(jī)上的存儲(chǔ)中的目標(biāo)項(xiàng)目。e)規(guī)則和約束下列附加規(guī)則和約束應(yīng)用于關(guān)系一個(gè)項(xiàng)目必須是(僅一個(gè)嵌入關(guān)系)或(一個(gè)或多個(gè)持有關(guān)系)的目標(biāo)。一個(gè)例外是根項(xiàng)目。一個(gè)項(xiàng)目能是零個(gè)或多個(gè)引用關(guān)系的目標(biāo)。作為嵌入關(guān)系目標(biāo)的項(xiàng)目不能是持有關(guān)系的源。它能是引用關(guān)系的源。一個(gè)項(xiàng)目若是從文件升級(jí),則不能是持有關(guān)系的源。它能是嵌入關(guān)系和引用關(guān)系的源。一個(gè)從文件升級(jí)的項(xiàng)目不能是嵌入關(guān)系的目標(biāo)。f)關(guān)系的排序在一至少個(gè)實(shí)施例中,本發(fā)明的存儲(chǔ)平臺(tái)支持關(guān)系的排序。通過(guò)在基本關(guān)系定義中名為"Order(排序)"的屬性完成排序。在Order字段中無(wú)唯一性約束。不保證帶有同一"Order"屬性值的關(guān)系的次序,然而保證,它們能排序在帶較低"Order"值的關(guān)系之后并在帶較高"Order"字段值的關(guān)系之前。應(yīng)用程序通過(guò)在在組合(SourceItemID,RelationshipID,Order)上排序得到默認(rèn)次序的關(guān)系。源自給定項(xiàng)目的所有關(guān)系實(shí)例被排序成單個(gè)集合,而不管在集合中關(guān)系的類型。然而這保證,給定類型(如,F(xiàn)olderMembers(文件夾成員))的所有關(guān)系是給定項(xiàng)目的關(guān)系集合的已排序子集。用于處理關(guān)系的數(shù)據(jù)存儲(chǔ)API312實(shí)現(xiàn)一組支持關(guān)系的排序的操作。引入下列術(shù)語(yǔ)幫助解釋那些操作-RelFirst是有序集合中帶次序值OrdFirst的第一個(gè)關(guān)系;RdLast是有序集合帶次序值OrdLast的最后一個(gè)關(guān)系;RdX是集合中帶次序值OrdX的給定關(guān)系;RelPrev是集合中最接近于RelX的帶小于OrdX的次序值OrdPrev的關(guān)系;以及RelNext是集合中最接近于RelX的帶大于OrdX的次序值OrdNext的關(guān)系。操作包括但不限于InsertBeforeFirst(SourceItemID,Relationship)插入關(guān)系作為集合中的第—個(gè)關(guān)系。新關(guān)系的"Order"屬性的值可小于OrdFirst。InsertAfterLast(SourceItemID,Relationship)插入關(guān)系作為集合中的最后—個(gè)關(guān)系。新關(guān)系的"Order"屬性的值可大于OrdLast。InsertAt(SourceItemID,ord,Relationship)插入帶有對(duì)"Order"屬性指定的值的關(guān)系。InsertBefore(SourceItemID,ord,Relationship)在帶有給定次序值的關(guān)系之前插入該關(guān)系。新的關(guān)系可被分配"Order"值,它在OrdPrev和ord之間,但不包括這兩個(gè)值。InsertAfter(SourceItemID,ord,Relationship)在帶有給定次序值的關(guān)系之后插入該關(guān)系。新的關(guān)系可被分配"Order"值,它在ord和OrdNext之間,但不包括這兩個(gè)值。MoveBefore(SourceItemID,ord,Relationship)將帶給定關(guān)系ID的關(guān)系移動(dòng)到帶指定"Order"值的關(guān)系之前。關(guān)系可被分配新的"Order"值,它在OrdPrev和ord之間,但不包括這兩個(gè)值。MoveAfter(SourceItemID,ord,Relationship)將帶給定關(guān)系ID的關(guān)系移動(dòng)到帶指定"Order"值的關(guān)系之后。該關(guān)系可被分配新的次序值,它在ord和OrdNext之間,但不包括這兩個(gè)值。如前提到,每個(gè)項(xiàng)目必須是項(xiàng)目文f^夾的成員。按照關(guān)系,每個(gè)項(xiàng)目必須與一項(xiàng)目文件夾有一關(guān)系。在本發(fā)明的若干實(shí)施例中,某些關(guān)系由在諸項(xiàng)目之間存在的關(guān)系表示。如對(duì)本發(fā)明的各實(shí)施例的實(shí)現(xiàn),關(guān)系提供一有向的二元關(guān)系,它由一個(gè)項(xiàng)目(源)延伸到另一項(xiàng)目(目標(biāo))。關(guān)系由源項(xiàng)目(延伸它的項(xiàng)目)擁有,因此若源被移除則關(guān)系被移除(如在源項(xiàng)目被刪除時(shí)關(guān)系被刪除)。此外在某些情況下,關(guān)系可共享(共同擁有的)目標(biāo)項(xiàng)目的擁有權(quán),且那樣的擁有權(quán)僅可反映在關(guān)系的IsOwned(被擁有)屬性(或其等效屬性)中(如圖7對(duì)關(guān)系屬性類型所示)。在這些實(shí)施例中,創(chuàng)建一新的IsOwned關(guān)系自動(dòng)遞增該目標(biāo)上的引用計(jì)數(shù),而刪除那樣的關(guān)系可遞減該目標(biāo)項(xiàng)目上的引用計(jì)數(shù)。對(duì)這些特定實(shí)施例,若項(xiàng)目具有大于0的引用計(jì)數(shù),則繼續(xù)存在,若項(xiàng)目計(jì)數(shù)達(dá)到O則自動(dòng)刪除。再一次,項(xiàng)目文件夾是具有(或能具有)與其它項(xiàng)目的一組關(guān)系的項(xiàng)目,這些其它項(xiàng)目包括項(xiàng)目文件夾的成員資格。關(guān)系的其它實(shí)際實(shí)現(xiàn)是可能的,并由本發(fā)明構(gòu)想來(lái)實(shí)現(xiàn)這里描述的功能。不管實(shí)際的實(shí)現(xiàn)如何,關(guān)系是從一個(gè)對(duì)象到另一對(duì)象的可選擇的連接。一個(gè)項(xiàng)目屬于一個(gè)以上項(xiàng)目文件夾以及一個(gè)或多個(gè)類別,而不論這些項(xiàng)目、文件夾和類別是公有的或私有的能力是由給予基于項(xiàng)目的結(jié)構(gòu)中的存在(或缺乏)的意義所確定的。這些邏輯關(guān)系是分配給一組關(guān)系的意義,而不論其專門用來(lái)實(shí)現(xiàn)這里所述功能的物理實(shí)現(xiàn)如何。邏輯關(guān)系是在項(xiàng)目及其文件夾或類別之間建立的(或相反),因?yàn)楸举|(zhì)上項(xiàng)目文件夾和類別的每一個(gè)都是特定類型的項(xiàng)目。因此,能象其它項(xiàng)目一樣地對(duì)項(xiàng)目文件夾和類別起作用(拷貝、添加到電子郵件消息中、嵌入文檔等等,而無(wú)限制),而項(xiàng)目文件夾和類別能象其它項(xiàng)目一樣使用相同的機(jī)制串行化和解串行化(導(dǎo)入和導(dǎo)出)。(例如在XML中,所有項(xiàng)目可具有串行化的格式,且此格同等地應(yīng)用于項(xiàng)目文件夾、類別和項(xiàng)目)。代表項(xiàng)目及其項(xiàng)目文件夾之間的關(guān)系的上述關(guān)系在邏輯上能從項(xiàng)目延伸到項(xiàng)目文件夾、從項(xiàng)目文件夾延伸到項(xiàng)目、或兩者。邏輯上從一項(xiàng)目延伸到項(xiàng)目文件夾的關(guān)系表明該項(xiàng)目文件夾對(duì)于該項(xiàng)目是公有的,并與該項(xiàng)目共享其成員資格信息;相反,缺乏從項(xiàng)目到項(xiàng)目文件夾的邏輯關(guān)系表明該項(xiàng)目文件夾對(duì)該項(xiàng)目是私有的,且不與該項(xiàng)目共享其成員資格信息。類似地,邏輯上從項(xiàng)目文件夾延伸到項(xiàng)目的關(guān)系表明該項(xiàng)目是公有的,并可與該項(xiàng)目文件夾共享,而缺乏從項(xiàng)目文件夾延伸到項(xiàng)目的邏輯關(guān)系表明該項(xiàng)目是私有的且不能共享。因此,當(dāng)向其它系統(tǒng)導(dǎo)出項(xiàng)目文件夾時(shí),它是"公有"的項(xiàng)目,它在新的環(huán)境中共享,且當(dāng)項(xiàng)目搜索其項(xiàng)目文件夾尋找其它可共享的項(xiàng)目時(shí),它是"公有"的項(xiàng)目文件夾,它向該項(xiàng)目提供關(guān)于屬于它的可共享項(xiàng)目的信息。圖9是示出項(xiàng)目文件夾(它本身也是項(xiàng)目)、其成員項(xiàng)目、和項(xiàng)目文件夾及其成員項(xiàng)目之間互聯(lián)關(guān)系的框圖。項(xiàng)目文件夾900具有多個(gè)項(xiàng)目902、904和906作為其成員。項(xiàng)目文件夾900具有從它本身到項(xiàng)目902的關(guān)系912,它表明項(xiàng)目902是公有的,且能與項(xiàng)目文件夾900、其成員904和906、和任何可訪問(wèn)項(xiàng)目文件夾900的任何其它項(xiàng)目文件夾、類別、或項(xiàng)目(未示出)共享。然而從項(xiàng)目902到項(xiàng)目文件夾項(xiàng)目900沒有關(guān)系,這表明項(xiàng)目文件夾900對(duì)項(xiàng)目902是私有的,且不與項(xiàng)目902共享其成員資格信息。另一方面,項(xiàng)目904確實(shí)具有從它本身到項(xiàng)目文件夾900的關(guān)系924,這表明項(xiàng)目文件夾900是公有的,且與項(xiàng)目904共享其成員資格信息。然而沒有從項(xiàng)目文件夾900到項(xiàng)目904的關(guān)系,這表明項(xiàng)目904是私有的,且不與項(xiàng)目文件夾卯O、其另外的成員卯2、906、及可訪問(wèn)項(xiàng)目文件夾900的任何其它項(xiàng)目文件夾、類另!J、或項(xiàng)目(未示出)共享。與其到項(xiàng)目902和904的關(guān)系(或沒有這些關(guān)系)相反,項(xiàng)目文件夾900具有從其本身到項(xiàng)目906的關(guān)系916,且項(xiàng)目906具有回到項(xiàng)目文件夾900的關(guān)系926,一起表明項(xiàng)目906是公有的,且能對(duì)文件夾卯0、其成員卯2和904、和可訪問(wèn)項(xiàng)目文件夾900的任何其它項(xiàng)目文件夾、類別、或項(xiàng)目(未示出)共享,且項(xiàng)目文件夾900是公有的,并與項(xiàng)目906共享其成員資格信息。如前討論,在項(xiàng)目文件夾中的項(xiàng)目不需要共享共同性,因?yàn)轫?xiàng)目文件夾未被"描述"。另一方面,類別由對(duì)所有其成員項(xiàng)目共同的共同性描述。因此,類別的成員資格固有地限于具有所描述的共同性的項(xiàng)目,且在某些實(shí)施例中,滿足類別的描述的所有項(xiàng)目自動(dòng)地成為該類別的成員。因此,盡管項(xiàng)目文件夾允許由其成員資格來(lái)表示不重要的類型結(jié)構(gòu),類別基于定義的共同性來(lái)允許成員資格。當(dāng)然,類別描述本質(zhì)上是邏輯的,因而類別可通過(guò)類型、屬性和/或值的任何邏輯表示來(lái)描述。例如,對(duì)一類別的邏輯表示可以是其成員資格,以包括具有兩個(gè)屬性之一或兩者的項(xiàng)目。若這些對(duì)類別描述的屬性是"A"和"B",則該類別的成員資格可包括具有屬性A而沒有B的項(xiàng)目、具有屬性B而沒有A的項(xiàng)目、及兼有屬性A和B的項(xiàng)目。通過(guò)邏輯運(yùn)算符"OR(或)"來(lái)描述屬性的邏輯表示,其中由類別描述成員組是具有屬性AORB的項(xiàng)目。如本領(lǐng)域的技術(shù)人員所理解的,也能使用類似的邏輯運(yùn)算符(包括但不限于單獨(dú)的"AND(和)""XOR(異或)"和"NOT(非)"或其組合)來(lái)描述類別。盡管在項(xiàng)目文件夾(未描述)和類別(已描述)之間有區(qū)別,但在本發(fā)明的許多實(shí)施例中,原則上到項(xiàng)目的類別關(guān)系及到類別的項(xiàng)目關(guān)系以上面對(duì)項(xiàng)目文件夾和項(xiàng)目的同樣方法揭示。圖10是示出一類別(其本身也是項(xiàng)目)、其成員項(xiàng)目、類別及其成員項(xiàng)目之間的互聯(lián)關(guān)系的框圖。類別1000具有多個(gè)項(xiàng)目1002、1004和1006作為成員,所有這些都共享由類別1000描述的共同的屬性、值和類型1008(共同性描述1008,)的某個(gè)組合。類別1000具有從其本身到項(xiàng)目1002的關(guān)系,它表明項(xiàng)目1002是公有的,且能與類別1000、其成員1004和1006、以及可訪問(wèn)類別1000的任何其它類別、項(xiàng)目文件夾、或項(xiàng)目(未示出)共享。然而,沒有從項(xiàng)目1002到類別1000的關(guān)系,這表明類別1000對(duì)項(xiàng)目1002是私有的,且不與項(xiàng)目1002共享成員資格信息。另一方面,項(xiàng)目1004的確具有從其本身到類別1000的關(guān)系1024,這表明類別1000是公有的,且與項(xiàng)目1004共享其成員資格信息。然而,不存在從類別1000延伸到項(xiàng)目1004的關(guān)系,這表明項(xiàng)目1004是私有的,且不能與類別1000、它的其它成員1002和1006、以及可訪問(wèn)類別1000的任何其它類別、項(xiàng)目文件夾、或項(xiàng)目(未示出)共享。與它與項(xiàng)目1002和1004的關(guān)系(或沒有此關(guān)系)相反,類別IOOO具有從其本身到項(xiàng)目1006的關(guān)系1016,且項(xiàng)目1006具有回到類別1000的關(guān)系1026,這一起表明項(xiàng)目1006是公有的,且能與類別1000、其項(xiàng)目成員1002和1004、以及可訪問(wèn)類別1000的任何其它類別、項(xiàng)目文件夾、或項(xiàng)目(未示出)共享,且類別1000是公有的,且與項(xiàng)目1006共享其成員資格信息。最后,由于類別和項(xiàng)目文件夾本身是項(xiàng)目,且項(xiàng)目可以互相關(guān)系,類別可關(guān)系到項(xiàng)目文件夾,反之亦然,且在某些另外實(shí)施例中,類別、項(xiàng)目文件夾和項(xiàng)目可分別關(guān)系到其它類別、項(xiàng)目文件夾和項(xiàng)目。然而在各種實(shí)施例中,項(xiàng)目文件夾結(jié)構(gòu)和/或類別結(jié)構(gòu)在硬件/軟件接口系統(tǒng)級(jí)上禁止包含回路。當(dāng)項(xiàng)目文件夾和類別結(jié)構(gòu)類似于有向圖時(shí),禁止回路的實(shí)施例類似于有向非循環(huán)圖(DAG),根據(jù)圖論領(lǐng)域的數(shù)學(xué)定義,DAG是其中沒有路徑在同一頂點(diǎn)開始與終止的有向圖。6.可擴(kuò)展性如上所述,本存儲(chǔ)平臺(tái)旨在提供初始模式組340。然而,至少在某些實(shí)施例中,該存儲(chǔ)平臺(tái)還允許包括獨(dú)立軟件分銷商(ISV)等顧客創(chuàng)建新的模式344(即新的項(xiàng)目和嵌套的元素類型)。本節(jié)討論通過(guò)擴(kuò)展在初始模式組340中定義的項(xiàng)目類型和嵌套的元素類型(或簡(jiǎn)稱"元素"類型)著眼于創(chuàng)建該模式的機(jī)制。較佳地,項(xiàng)目和嵌套元素類型的初始組的擴(kuò)展如下約束允許ISV引入新的項(xiàng)目類型,即子類型Base.Item;允許ISV引入新的嵌套元素類型,即子類型Base.NestedElement;允許ISV引入新的擴(kuò)展,即子類型Base.NestedElement;但I(xiàn)SV不能子分類由存儲(chǔ)平臺(tái)的初始模式組340定義的任何類型(項(xiàng)目、嵌入元素、或擴(kuò)展類型)。由于由存儲(chǔ)平臺(tái)的初始模式組定義的項(xiàng)目類型或嵌入元素類型可能不精確地匹配ISV應(yīng)用程序的需要,必須允許ISV定制該類型。這就考慮了擴(kuò)展的概念。擴(kuò)展是強(qiáng)類型的實(shí)例,但是(a)它們不能獨(dú)立存在,以及(b)它們必須附屬于項(xiàng)目或嵌套元素。除了解決對(duì)模式可擴(kuò)展性的需要之外,擴(kuò)展還旨在解決"多分類"問(wèn)題。在某些實(shí)施例中,因?yàn)榇鎯?chǔ)平臺(tái)可能不支持多繼承性或重疊子類型,應(yīng)用程序可以使用擴(kuò)展作為模型化重疊類型實(shí)例(如文檔既是合法文檔又是安全文檔)的方法。a)項(xiàng)目擴(kuò)展為提供項(xiàng)目的可擴(kuò)展性,數(shù)據(jù)模型還定義名為Base.Extension的抽象類型。這是擴(kuò)展類型的分層結(jié)構(gòu)的根類型。應(yīng)用程序可以子分類Base.Extension,以創(chuàng)建特定的擴(kuò)展類型。在基礎(chǔ)模式中如下定義Base.Extension類型<TypeName-"Base.Extension"lsAbstract="Tme"><PropetyName-"ltemlD"Type-"thestorageplatformTypes.uniqueidentified"Nullable-"false"MultiValued="false7><PropertyName="ExtensionlD"Type="thestorageplatformTypes.uniqueidentified"Nullable-"false"MultiValued="false7></Type>ItemID字段包含與該擴(kuò)展關(guān)聯(lián)的項(xiàng)目的ItemlD。帶此ItemID的項(xiàng)目必須存在。若帶給定ItemID的項(xiàng)目不存在,則不能創(chuàng)建擴(kuò)展。當(dāng)項(xiàng)目被刪除,帶同一ItemID的所有擴(kuò)展被刪除。二元組(ItemID,ExtensionID)唯一地標(biāo)識(shí)了擴(kuò)展實(shí)例。擴(kuò)展類型的結(jié)構(gòu)類似于項(xiàng)目類型的結(jié)構(gòu)擴(kuò)展類型具有字段;字段可以是原語(yǔ)或嵌套元素類型;以及擴(kuò)展類型可被子分類。下列限制應(yīng)用于擴(kuò)展類型擴(kuò)展不能是關(guān)系的源和目標(biāo);擴(kuò)展類型實(shí)例不能獨(dú)立于項(xiàng)目存在;以及擴(kuò)展類型不能用作在存儲(chǔ)平臺(tái)類型定義中的字段類型對(duì)能與給定的項(xiàng)目類型關(guān)聯(lián)的擴(kuò)展的類型沒有約束。任何擴(kuò)展類型允許擴(kuò)展任何項(xiàng)目類型。當(dāng)多個(gè)擴(kuò)展實(shí)例被附加到一個(gè)項(xiàng)目,它們?cè)诮Y(jié)構(gòu)和行為上彼此獨(dú)立。擴(kuò)展實(shí)例被分別存儲(chǔ)并從項(xiàng)目訪問(wèn)。所有擴(kuò)展類型實(shí)例可從全局?jǐn)U展視圖訪問(wèn)。能組成一有效的查詢,它將返回給定類型的擴(kuò)展的所有實(shí)例,而不管它們關(guān)聯(lián)什么類型的項(xiàng)目。存儲(chǔ)平臺(tái)API提供可存儲(chǔ)、檢索和修改項(xiàng)目擴(kuò)展的編程模型。擴(kuò)展類型可是使用存儲(chǔ)平臺(tái)的單個(gè)繼承模型來(lái)子分類的類型。從一個(gè)擴(kuò)展類型導(dǎo)出創(chuàng)建新的擴(kuò)展類型。一個(gè)擴(kuò)展的結(jié)構(gòu)或行為不能覆蓋或替代項(xiàng)目類型分層結(jié)構(gòu)的結(jié)構(gòu)或行為。類似于項(xiàng)目類型,擴(kuò)展類型實(shí)例能通過(guò)與該擴(kuò)展類型關(guān)聯(lián)的視圖直接訪問(wèn)。擴(kuò)展的ItemID表明,它們屬于哪個(gè)項(xiàng)目,并能用于從全局項(xiàng)目視圖檢索對(duì)應(yīng)的項(xiàng)目對(duì)象。為操作一致性的目的,擴(kuò)展被考慮成項(xiàng)目的一部分??截?移動(dòng)、備份/恢復(fù)和存儲(chǔ)平臺(tái)定義的其它常用操作可以在作為項(xiàng)目的一部分的擴(kuò)展上操作??紤]下述例子。在Windows類型組中定義Contact(聯(lián)系人)類型。<TypeName="Contact"BaseType="Base.Item"><PropertyName="Name"Type="String"Nullable-"false"MultiValued="false7>^PropertyName="Address"Type="Address"Nullable-"true"MultiV3lued="false7></Type>CRM(客戶關(guān)系管理)應(yīng)用程序幵發(fā)者喜歡將CRM應(yīng)用程序擴(kuò)展附加到存儲(chǔ)在存儲(chǔ)平臺(tái)中的聯(lián)系人。應(yīng)用程序開發(fā)者定義包含應(yīng)用程序能處理的附加數(shù)據(jù)結(jié)構(gòu)的CRM擴(kuò)展。<TypeName-"CRMExtension"BaseType="Base.Extension">■^PropertyName="CustomerlD"Type="String"Nullal^le="false"MultiVslued="f3lse7></Type>HR應(yīng)用程序開發(fā)者希望也將附加數(shù)據(jù)附加到聯(lián)系人。此數(shù)據(jù)獨(dú)立于CRM應(yīng)用程序數(shù)據(jù)。應(yīng)用程序開發(fā)者還可創(chuàng)建一擴(kuò)展<TypeName-"HRExtension"EBaseType-"Base,Extension"><PropertyName="EmployeelD"Type="String"Nullable-"false"MultiValued="false7></Type>CRMExtension和HRExtension是能附加到聯(lián)系人項(xiàng)目的兩個(gè)獨(dú)立擴(kuò)展。它們能彼此獨(dú)立地創(chuàng)建和訪問(wèn)。在上述例子中,CRMExtension類型的字段和方法不能覆蓋聯(lián)系人分層結(jié)構(gòu)的字段和方法。應(yīng)注意,CRMExtension類型的實(shí)例能被附加到不同于聯(lián)系人的項(xiàng)目類型。在檢索聯(lián)系人項(xiàng)目時(shí),不自動(dòng)地檢索它的項(xiàng)目擴(kuò)展。給定聯(lián)系人項(xiàng)目,可通過(guò)查詢?nèi)謹(jǐn)U展視圖以尋找?guī)籌temID的擴(kuò)展來(lái)訪問(wèn)其有關(guān)的項(xiàng)目擴(kuò)展??赏ㄟ^(guò)CRMExtension類型視圖來(lái)訪問(wèn)系統(tǒng)中所有的CRMExtension擴(kuò)展,而不論它們屬于什么項(xiàng)目。一個(gè)項(xiàng)目的所有項(xiàng)目擴(kuò)展共享同一項(xiàng)目id。在上述例子中,聯(lián)系人項(xiàng)目實(shí)例和附加的CRMExtension和HRExtension實(shí)例共享同一ItemID。下面的表總結(jié)了在Item(項(xiàng)目)、Extension(擴(kuò)展)和Neste犯lement(嵌套元素)類型之間的相似性和差別項(xiàng)目、項(xiàng)目擴(kuò)展與嵌套元素<table>tableseeoriginaldocumentpage44</column></row><table>關(guān)系語(yǔ)義能具有與項(xiàng)目的關(guān)與項(xiàng)目擴(kuò)展無(wú)關(guān)系與嵌套元素?zé)o關(guān)系系與項(xiàng)目的能通過(guò)持有嵌入和通常只能通過(guò)擴(kuò)展通過(guò)字段來(lái)與項(xiàng)目關(guān)聯(lián)軟關(guān)系與其它項(xiàng)目來(lái)相關(guān)。擴(kuò)展語(yǔ)義類相關(guān)。嵌套元素是項(xiàng)相關(guān)似于嵌入項(xiàng)目語(yǔ)義目的一部分b)擴(kuò)展NestedElement類型嵌套元素類型不用與項(xiàng)目類型相同的機(jī)制擴(kuò)展。嵌套元素的擴(kuò)展用與嵌套元素類型字段相同的機(jī)制存儲(chǔ)和訪問(wèn)。數(shù)據(jù)模型定義了名為Element(元素)的嵌套元素類型的根。<TypeName="Element"lsAbstract="True"><PropertyName-"ElementlD"Type="thestorageplatformTypes.uniqueidentifier"Null3ble="f3lse"MultiValued="false"/></Type>NestedElement類型從此類型繼承。NestedElement元素類型另外定義一字段,它是多組元素。<TypeName="NestedElement"BaseType="Base.Element"lsAbstract='True"><PropertyName="Extensions"Type="Base.Element"Nullable-"false"MultiValued="true7></Type>NestedElement擴(kuò)展在下面方面不同于項(xiàng)目擴(kuò)展-嵌套元素?cái)U(kuò)展不是擴(kuò)展類型。它們不屬于以Base.Extension類型為根的擴(kuò)展類型分層結(jié)構(gòu)。嵌套元素?cái)U(kuò)展與該項(xiàng)目的其它字段一起存儲(chǔ),且不是全局可訪問(wèn)的一不能組成檢索給定擴(kuò)展類型的所有實(shí)例的査詢。象存儲(chǔ)其它嵌套元素(或項(xiàng)目)一樣地存儲(chǔ)這些擴(kuò)展。象其它的嵌套組,NestedElement擴(kuò)展被存在UDT中。它們可通過(guò)嵌套元素類型的Extension(擴(kuò)展)字段來(lái)訪問(wèn)。<table>tableseeoriginaldocumentpage46</column></row><table>如上提到,數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)引擎上實(shí)現(xiàn)。在本實(shí)施例中,數(shù)據(jù)庫(kù)引擎包括諸如MicrosoftSQLServer引擎等實(shí)現(xiàn)SQL査詢語(yǔ)言、帶有對(duì)象關(guān)系擴(kuò)展的關(guān)系數(shù)據(jù)庫(kù)引擎。本節(jié)按照本實(shí)施例,描述數(shù)據(jù)存儲(chǔ)實(shí)現(xiàn)的數(shù)據(jù)模型到關(guān)系存儲(chǔ)的映射,在邏輯API上提供由存儲(chǔ)平臺(tái)的客戶機(jī)使用的信息。然而可以理解,當(dāng)采用不同的數(shù)據(jù)庫(kù)引擎時(shí)可采用不同的映射。確實(shí),除了在關(guān)系型數(shù)據(jù)庫(kù)引擎上實(shí)現(xiàn)存儲(chǔ)平臺(tái)概念數(shù)據(jù)模型之外,也可在其它類型數(shù)據(jù)庫(kù)上實(shí)現(xiàn),如面向?qū)ο蠛蚗ML數(shù)據(jù)庫(kù)。面向?qū)ο?00)數(shù)據(jù)庫(kù)系統(tǒng)為編程語(yǔ)言對(duì)象(如C++、Java)提供持續(xù)性和事務(wù)。"項(xiàng)目"的存儲(chǔ)平臺(tái)概念可很好地映射到面向?qū)ο笙到y(tǒng)中的對(duì)象,雖然嵌入的集合必須添加給對(duì)象。類似繼承性和嵌套元素類型等其它存儲(chǔ)平臺(tái)類型概念也映射到面向?qū)ο箢愋偷南到y(tǒng)。面向?qū)ο笙到y(tǒng)通常已經(jīng)支持對(duì)象身份;因此,項(xiàng)目身份可被映射到對(duì)象身份。項(xiàng)目的行為(操作)很好地映射到對(duì)象方法。然而,面向?qū)ο蟮南到y(tǒng)通常缺乏組織能力并在搜索方面很差。而且,面向?qū)ο蟮南到y(tǒng)不提供對(duì)非結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù)的支持。為支持這里描述的完全存儲(chǔ)平臺(tái)數(shù)據(jù)模型,象關(guān)系、文件夾和擴(kuò)展等概念需要添加到對(duì)象數(shù)據(jù)模型。此外,需要實(shí)現(xiàn)如升級(jí)、同步、通知和安全性等機(jī)制。類似于面向?qū)ο蟮南到y(tǒng),基于XSD(XML模式定義)的XML數(shù)據(jù)庫(kù)支持基于單繼承類型的系統(tǒng)。本發(fā)明的項(xiàng)目類型系統(tǒng)可映射到XSD類型模型。XSD也不提供對(duì)行為的支持。項(xiàng)目的XSD必須增添項(xiàng)目的行為。XML數(shù)據(jù)庫(kù)處理單個(gè)XSD文檔并缺乏組織和拓寬搜索能力。如面向?qū)ο髷?shù)據(jù)庫(kù)那樣,為支持這里描述的數(shù)據(jù)模型,如關(guān)系和文件夾等其它概念需要被結(jié)合到該XML數(shù)據(jù)庫(kù);而且需要實(shí)現(xiàn)如同步、通知和安全性等機(jī)制。關(guān)于下面小節(jié),提供少量圖示以便于一般的信息揭示圖13是示出通知機(jī)制的圖示。圖14是示出兩個(gè)事務(wù)均將新記錄插入同一B樹的例子的圖示。圖15示出數(shù)據(jù)改變檢測(cè)過(guò)程。圖16示出示例性目錄樹。圖17示出其中基于目錄的文件系統(tǒng)的現(xiàn)有文件夾被移動(dòng)到存儲(chǔ)平臺(tái)數(shù)據(jù)存儲(chǔ)中。1.使用UDT的數(shù)據(jù)存儲(chǔ)實(shí)現(xiàn)在本實(shí)施例中,在一個(gè)實(shí)施例中包括MicrosoftSQLServer引擎的關(guān)系型數(shù)據(jù)庫(kù)引擎314支持內(nèi)建的標(biāo)量類型。內(nèi)建的標(biāo)量類型是"原生(native)"且"簡(jiǎn)單"的。它們是原生的意義是,用戶不能定義他們自己的類型;它們是簡(jiǎn)單的意義是,用戶不能封裝復(fù)雜的結(jié)構(gòu)。用戶定義的類型(下文稱為UDT)通過(guò)使用戶能通過(guò)定義復(fù)雜的結(jié)構(gòu)化類型來(lái)擴(kuò)展類型系統(tǒng),提供了一種用于超過(guò)或超越原生的標(biāo)量類型系統(tǒng)的類型可擴(kuò)展性的機(jī)制。一旦由用戶定義,UDT能用于可以使用內(nèi)建標(biāo)量類型的類型系統(tǒng)中的任何地方。按本發(fā)明的一個(gè)方面,存儲(chǔ)平臺(tái)模式被映射到數(shù)據(jù)庫(kù)引擎存儲(chǔ)中的UDT類。數(shù)據(jù)存儲(chǔ)項(xiàng)目被映射到從Base.Item類型導(dǎo)出的UDT類。類似于項(xiàng)目,擴(kuò)展也能映射到UDT類并使用繼承。根擴(kuò)展類型是Base.Extension,從它導(dǎo)出所有擴(kuò)展類型。UDT是CLR類,它具有狀態(tài)(即數(shù)據(jù)字段)和行為(即例程)。使用任何受管語(yǔ)言(c#、VB.NET等)定義UDT。UDT方法和操作符能在T-SQL中針對(duì)該類型的實(shí)例調(diào)用。UDT能是:行中列的類型、T-SQL中例程的參數(shù)的類型、或在T-SQL中變量的類型。存儲(chǔ)平臺(tái)模式到UDT類的映射在高級(jí)別上完全是直接的。一般而言,存儲(chǔ)平臺(tái)模式被映射到CLR名字空間。存儲(chǔ)平臺(tái)類型被映射到CLR類。CLR類的繼承鏡象了存儲(chǔ)平臺(tái)類型的繼承,且存儲(chǔ)平臺(tái)屬性被映射到CLR類屬性。2.項(xiàng)目映射為了希望項(xiàng)目能夠被全局地搜索,并在本實(shí)施例的關(guān)系型數(shù)據(jù)中支持繼承以及類型可替代性,對(duì)在數(shù)據(jù)庫(kù)存儲(chǔ)中的項(xiàng)目存儲(chǔ)的一種可能的實(shí)現(xiàn)是在帶有類型Base.Item的列的單個(gè)表中存儲(chǔ)所有項(xiàng)目。使用類型可替代性,能存儲(chǔ)所有類型的項(xiàng)目,且可按使用Yukon的"isof(類型)"的操作符的項(xiàng)目類型的子類型來(lái)過(guò)濾搜索。然而,由于在本實(shí)施例中牽涉到與這一方法相關(guān)聯(lián)的額外開銷,由頂級(jí)類型將各項(xiàng)目劃分,使得每個(gè)類型"家族"的項(xiàng)目存儲(chǔ)到單獨(dú)的表中。在此劃分模式中,對(duì)每個(gè)直接從Base.Item繼承的項(xiàng)目類型創(chuàng)建一個(gè)表。如上所述,繼承下面這些的類型使用類型的可替代性存儲(chǔ)在合適的類型家族表中。只有從Base.Item的第一級(jí)繼承被專門地處理。使用一"陰影"表存儲(chǔ)所有項(xiàng)目的全局可搜索屬性的副本。此表可由存儲(chǔ)平臺(tái)API的Update()方法維護(hù),通過(guò)此方法作出所有數(shù)據(jù)的改變。不象類型家族表,此全局項(xiàng)目表只包含該項(xiàng)目的頂級(jí)標(biāo)量屬性,而不是全UDT項(xiàng)目對(duì)象。全局項(xiàng)目表允許通過(guò)展現(xiàn)ItemID和TypeID(類型ID)導(dǎo)航到存儲(chǔ)在類型家族表中的項(xiàng)目對(duì)象。ItemlD通常唯一地標(biāo)識(shí)數(shù)據(jù)存儲(chǔ)中的項(xiàng)目??墒褂眠@里未予描述的元數(shù)據(jù)將TypeID映射到類型名和包含該項(xiàng)目的視圖。由于通過(guò)其ItemID尋找項(xiàng)目在全局項(xiàng)目表的上下文及其它情況下都是常用操作,因此給定了項(xiàng)目的Itemld,提供GetltemO函數(shù)來(lái)檢索項(xiàng)目對(duì)象。為便于訪問(wèn)和盡可能地隱藏實(shí)現(xiàn)的細(xì)節(jié),項(xiàng)目的所有查詢可以對(duì)照在上述項(xiàng)目的表上構(gòu)建的視圖進(jìn)行。具體說(shuō)來(lái),對(duì)每個(gè)項(xiàng)目類型針對(duì)合適類型的家族表創(chuàng)建視圖。這些類型視圖可選擇相關(guān)聯(lián)的類型,包括子類型的所有項(xiàng)目。為方便起見,除了UDT對(duì)象,視圖能對(duì)包括繼承字段的該類型的所有頂級(jí)域展現(xiàn)列。3.擴(kuò)展映射擴(kuò)展非常類似于項(xiàng)目,且具有某些相同要求。如支持繼承性的另一根類型,擴(kuò)展受到存儲(chǔ)中許多同樣的考慮和折衷比較。為此,對(duì)擴(kuò)展應(yīng)用類似的類型家族映射,而不是單個(gè)表方法。當(dāng)然,在其它實(shí)施例中,可使用單個(gè)表方法。在本實(shí)施例中,擴(kuò)展通過(guò)ItemID僅與一個(gè)項(xiàng)目關(guān)聯(lián),并包含在項(xiàng)目的上下文中唯一的ExtensionID。如同項(xiàng)目一樣,給定包括ItemID和ExtensionID對(duì)的身份,可提供一函數(shù)用于檢索擴(kuò)展。類似于項(xiàng)目類型視圖,對(duì)每個(gè)擴(kuò)展類型可創(chuàng)建視圖。4.嵌套元素映射嵌套元素是可嵌入到項(xiàng)目、擴(kuò)展、關(guān)系、或其它嵌套元素以形成深嵌套結(jié)構(gòu)的類型。類似于項(xiàng)目和擴(kuò)展,嵌套元素作為UDT實(shí)現(xiàn),但它們存儲(chǔ)在項(xiàng)目和擴(kuò)展中。因此,嵌套元素沒有超越它們的項(xiàng)目和擴(kuò)展容器的映射的存儲(chǔ)映射。換言之,在系統(tǒng)中沒有直接存儲(chǔ)NestedElement類型的實(shí)例的表,且沒有專門用于嵌套元素的視圖。5.對(duì)象身份在數(shù)據(jù)模型中的每一實(shí)體,即每個(gè)項(xiàng)目、擴(kuò)展和關(guān)系具有唯一的關(guān)鍵字值。一個(gè)項(xiàng)目由其Itemld唯一地標(biāo)識(shí)。擴(kuò)展由合成關(guān)鍵字(Itemld,Extensionld)唯一地標(biāo)識(shí)。關(guān)系由合成關(guān)鍵字(Itemld,Relationld)標(biāo)識(shí)。Itemld,Extensionld和Relationshipld均是GUID值。6.SQL對(duì)象命名在數(shù)據(jù)存儲(chǔ)中創(chuàng)建的所有對(duì)象可存儲(chǔ)在從存儲(chǔ)平臺(tái)模式名字導(dǎo)出的SQL模式名字中。例如,存儲(chǔ)平臺(tái)基礎(chǔ)模式(常稱"基礎(chǔ)")可產(chǎn)生在"[System.Storage]"SQL模式中的類型,如"[System.Stomge].Item"。產(chǎn)生的名字可用限定詞加前綴以消除命名的沖突。在合適處可使用驚嘆號(hào)(!)作為名字的每個(gè)邏輯部分的分割符。下面表概括了在數(shù)據(jù)存儲(chǔ)用于對(duì)象的命名習(xí)慣。與用于訪問(wèn)數(shù)據(jù)存儲(chǔ)中的實(shí)例的修飾的命名習(xí)慣一起列出每個(gè)模式元素(項(xiàng)目、擴(kuò)展、關(guān)系和視圖)。<table>tableseeoriginaldocumentpage50</column></row><table>7.列命名當(dāng)映射任一對(duì)象模型到存儲(chǔ)時(shí),由于與應(yīng)用程序?qū)ο笠黄鸫鎯?chǔ)的附加信息,有可能發(fā)生命名沖突。為避免命名沖突,所有非類型的特定列(不直接映射到類型聲明中的命名的屬性的列)用下劃線字符(_)加前綴。在本實(shí)施例中,下劃線字符(_)不允許作為任何標(biāo)識(shí)符屬性的開始字符。此外,為統(tǒng)一在CLR和數(shù)據(jù)存儲(chǔ)之間的命名,存儲(chǔ)平臺(tái)類型或模式元素的所有屬性(關(guān)系等)應(yīng)具有大寫的第一字符。8.搜索視圖由存儲(chǔ)平臺(tái)提供視圖,用于搜索存儲(chǔ)的內(nèi)容。對(duì)每個(gè)項(xiàng)目和擴(kuò)展類型提供SQL視圖。此外,提供視圖以支持關(guān)系和視圖(由數(shù)據(jù)模型定義)。所有SQL視圖和在存儲(chǔ)平臺(tái)中的底層表是只讀的。下面將更充分描述,使用存儲(chǔ)平臺(tái)API的Update0方法可存儲(chǔ)或改變數(shù)據(jù)。在存儲(chǔ)平臺(tái)模式中直接定義的每個(gè)視圖(由模式設(shè)計(jì)者定義,而非由存儲(chǔ)平臺(tái)自動(dòng)地生成)可由命名的SQL視圖[〈schema-name〉].[View!〈view-name〉]訪問(wèn)。例如,在模式"AcmePublisher.Books"中名為"BookSales"的視圖可使用名字"[AcmePublisher.Books].[View舊ookSales]來(lái)訪問(wèn)。因?yàn)橐晥D的輸出格式在每一視圖的基礎(chǔ)上是自定義的(由定義視圖的那一方提供的任意查詢確定的),列基于模式視圖定義被直接映射。存儲(chǔ)平臺(tái)數(shù)據(jù)存儲(chǔ)中的所有SQL搜索視圖使用列的下述排序習(xí)慣如ltemld、Elementld、Relationship^等的視圖結(jié)果的邏輯"關(guān)鍵字"歹U如Typeld等關(guān)于結(jié)果類型的元數(shù)據(jù)信息。改變?nèi)鏑reateVersion(創(chuàng)建版本)、UpdateVersion(更新版本)等跟蹤列類型專用的列(聲明的類型的屬性)類型專用的視圖(家族視圖)也包含返回對(duì)象的對(duì)象列每個(gè)類型家族的成員可使用一系列項(xiàng)目視圖來(lái)搜索,在數(shù)據(jù)存儲(chǔ)中每個(gè)項(xiàng)目類型有一個(gè)視圖。圖28是示出項(xiàng)目搜索視圖的概念的圖示。a)項(xiàng)目每個(gè)項(xiàng)目搜索視圖對(duì)特定類型或其子類型的項(xiàng)目的每個(gè)實(shí)例包含一行。例如,文檔的視圖能返回Document(文檔)、LegalDocument(合法文檔)和ReviewDocument(審閱文檔)的實(shí)例。給定此例,能如圖29那樣概念化項(xiàng)目視圖。(1)主項(xiàng)目搜索視圖存儲(chǔ)平臺(tái)數(shù)據(jù)存儲(chǔ)的每個(gè)實(shí)例定義稱為主項(xiàng)目視圖(MasterItemView)的特殊項(xiàng)目視圖。此視圖提供關(guān)于數(shù)據(jù)存儲(chǔ)中每個(gè)項(xiàng)目的綜述信息。視圖對(duì)每個(gè)項(xiàng)目類型屬性提供一列,其中一列描述項(xiàng)目的類型,若干列用于提供改變跟蹤和同步信息。在數(shù)據(jù)存儲(chǔ)中使用名字"[System.Storage].[Master!Item]"來(lái)標(biāo)識(shí)主項(xiàng)目視圖。<table>tableseeoriginaldocumentpage52</column></row><table>每個(gè)項(xiàng)目類型也具有搜索視圖。類似于根項(xiàng)目視圖,此視圖還提供通過(guò)"Jtem"列對(duì)項(xiàng)目對(duì)象的訪問(wèn)。在數(shù)據(jù)存儲(chǔ)中使用名字[schemaName].[itemTypeName]標(biāo)識(shí)每個(gè)分類型的項(xiàng)目搜索視圖。例如[AcmeCorp.Dod].[OfficeDoc]。<table>tableseeoriginaldocumentpage52</column></row><table>WinFs存儲(chǔ)中的所有項(xiàng)目擴(kuò)展也可使用搜索視圖來(lái)訪問(wèn)。(1)主擴(kuò)展搜索視圖數(shù)據(jù)存儲(chǔ)的每個(gè)實(shí)例定義一稱為主擴(kuò)展視圖(MasterExtensionView)的特殊擴(kuò)展視圖。此視圖提供關(guān)于數(shù)據(jù)存儲(chǔ)中每個(gè)擴(kuò)展的綜述信息。該視圖對(duì)每個(gè)擴(kuò)展屬性有一列,其中一列描述擴(kuò)展的類型,而若干列用于提供改變跟蹤和同步信息。使用名字"[System.Storage].[Master!Extension]"在數(shù)據(jù)存儲(chǔ)中標(biāo)識(shí)主擴(kuò)展視圖。<table>tableseeoriginaldocumentpage52</column></row><table><table>tableseeoriginaldocumentpage53</column></row><table>(2)分類型的擴(kuò)展搜索視圖每個(gè)擴(kuò)展類型還具有搜索視圖。類似于主擴(kuò)展視圖,此視圖還提供通過(guò)—Extension列對(duì)項(xiàng)目對(duì)象的訪問(wèn)。在數(shù)據(jù)存儲(chǔ)中使用名字[SehemaName〗,[Extension!extensionTypeName]標(biāo)識(shí)每個(gè)分類型的擴(kuò)展搜索視圖。例如[AcmeCorp.Doc].[Extension!OfficeDocExt]。<table>tableseeoriginaldocumentpage53</column></row><table>所有嵌套的元素存儲(chǔ)在項(xiàng)目、擴(kuò)展或關(guān)系實(shí)例之中。因此,它們能通過(guò)查詢合適的項(xiàng)目、擴(kuò)展或關(guān)系搜索視圖來(lái)訪問(wèn)。d)關(guān)系如上討論,關(guān)系形成在存儲(chǔ)平臺(tái)數(shù)據(jù)存儲(chǔ)中各項(xiàng)目之間鏈接的基本單元。(1)主關(guān)系搜索視圖每個(gè)數(shù)據(jù)存儲(chǔ)提供一主關(guān)系視圖。此視圖提供關(guān)于數(shù)據(jù)存儲(chǔ)中所有關(guān)系實(shí)例的信息。在數(shù)據(jù)存儲(chǔ)中使用名字"[System.Storage].[Master!Relationship]"來(lái)標(biāo)識(shí)主關(guān)系視圖。<table>tableseeoriginaldocumentpage54</column></row><table>e)9.更新存儲(chǔ)平臺(tái)數(shù)據(jù)存儲(chǔ)中所有視圖是只讀的。為創(chuàng)建數(shù)據(jù)模型元素(項(xiàng)目、擴(kuò)展或關(guān)系)的新實(shí)例,或更新現(xiàn)有的實(shí)例,必須使用存儲(chǔ)平臺(tái)API的ProcessOperation或ProcessUpdategram方法。ProcessOperation方法是單個(gè)存儲(chǔ)的過(guò)程,它是由消費(fèi)細(xì)化擬執(zhí)行的動(dòng)作的"操作"的數(shù)據(jù)存儲(chǔ)定義的。ProcessUpdategram方法是存儲(chǔ)的過(guò)程,它采取稱為"更新元素(updategram)"的一組有序的操作,它們共同細(xì)化擬執(zhí)行的一組動(dòng)作。操作格式是可擴(kuò)展的,并提供在模式元素上的各種操作。某些公用操作包括1.項(xiàng)目操作a.Createltem(在嵌入或持有關(guān)系的上下文中創(chuàng)建一新的項(xiàng)目)b.Updateltem(更新一現(xiàn)有的項(xiàng)目)2.關(guān)系操作a.CreateRelationship(創(chuàng)建引用或持有關(guān)系的實(shí)例)b.UpdateRelationship(更新一關(guān)系實(shí)例)c.DeleteRelationship(移除一關(guān)系實(shí)例)3.擴(kuò)展操作a.CreateExtension(添加一擴(kuò)展到現(xiàn)有的項(xiàng)目)b.UpdateExtension(更新一現(xiàn)有的擴(kuò)展)c.DeleteExtension(刪除一擴(kuò)展)10.改變跟蹤及墓碑如下面更充分討論,由數(shù)據(jù)存儲(chǔ)提供改變跟蹤和墓碑服務(wù)。本節(jié)提供在數(shù)據(jù)存儲(chǔ)中展現(xiàn)的改變跟蹤信息的概述a)改變跟蹤由數(shù)據(jù)存儲(chǔ)提供的每個(gè)搜索視圖包含用于提供改變跟蹤信息的列;那些列對(duì)所有項(xiàng)目、擴(kuò)展和關(guān)系視圖是公用的。由模式設(shè)計(jì)者明確地定義的存儲(chǔ)平臺(tái)模式視圖不自動(dòng)地提供改變跟蹤信息一該信息是通過(guò)在其上構(gòu)建視圖本身的搜索視圖來(lái)間接提供的。對(duì)數(shù)據(jù)存儲(chǔ)中的每個(gè)元素,可從兩個(gè)地方得到改變跟蹤信息"主"元素視圖和"分類型的"元素視圖。例如,可從主項(xiàng)目視圖"[System.Storage].[Master!Item]"和分類型的項(xiàng)目視圖[AcmeCorp.Document].[Document]中得至lj關(guān)于AcmeCorp.Document.Document項(xiàng)目類型的改變跟蹤信息。(1)"主"搜索視圖中的改變跟蹤主搜索視圖中的改變跟蹤信息提供關(guān)于元素的創(chuàng)建和更新版本的信息、關(guān)于哪個(gè)同步伙伴創(chuàng)建該元素的信息、關(guān)于哪個(gè)同步伙伴最后一次更新該元素的信息、以及來(lái)自每個(gè)伙伴的用于創(chuàng)建和更新的版本號(hào)。用伙伴關(guān)鍵字來(lái)標(biāo)識(shí)同步關(guān)系中的伙伴(下面描述)。類型[System.Storge.Store].ChangeTrackinglnfo的名為—ChangeTrackinglnfo的單個(gè)UDT對(duì)象包含所有這些信息。在System.Storage模式中定義類型。在項(xiàng)目、擴(kuò)展和關(guān)系的所有全局搜索視圖中可得到—ChangeTrackinglnfo?!狢hangeTrackinglnfo的類型定義是<TypeName-"ChangeT:i:ackinglnfo"BaseType="Base.NestedElement"><FieldPropertyUame-"C:i:eationliOcalTS"Type="SqlTypesSqllnt64"Nullable="False"/><FieldPropertyName="CreatingPairtne:rKey"Type="SqlTypes.Sqllnt32"Nullable="False"/><FieldPrope:rtyName="C:reatingPartnerTS"Type-"SqlTypes.Sqllnt64"Nullable="False"/><FieldPropertyName-"LastUpdateIjOcalTS"Type="SqlTypes.Sqllnt64"Nullable="False"/><FieldPropertyName=":LastUpdatingPartiie:i:Key"Type="SqlTypesSqllnt32"Nullable-"False"/><FieldPrope:i:tyName="IjastUpdatingPartne:i:TS"Type-"SqlTypesSqllnt64"Nullable="False"/></Type>這些屬性包含下述信息:<table>tableseeoriginaldocumentpage56</column></row><table><table>tableseeoriginaldocumentpage57</column></row><table>(2)"分類型的"搜索視圖中的改變跟蹤除了提供與全局搜索視圖相同信息外,每個(gè)分類型的搜索視圖提供記錄在同步拓?fù)渲忻總€(gè)元素的同步狀態(tài)的附加信息。<table>tableseeoriginaldocumentpage57</column></row><table>b)墓碑?dāng)?shù)據(jù)存儲(chǔ)為項(xiàng)目、擴(kuò)展和關(guān)系提供墓碑信息。墓碑視圖提供一個(gè)地方中有關(guān)活動(dòng)和墓碑實(shí)體兩者(項(xiàng)目、擴(kuò)展和關(guān)系)的信息。項(xiàng)目和擴(kuò)展墓碑視圖不提對(duì)對(duì)應(yīng)對(duì)象的訪問(wèn),而關(guān)系墓碑視圖提供對(duì)關(guān)系對(duì)象的訪問(wèn)(在墓碑關(guān)系的情況下關(guān)系對(duì)象為空)。(1)項(xiàng)目墓碑通過(guò)視圖[System.Storage].[Tombstone!item]從系統(tǒng)檢索項(xiàng)目墓碑。<table>tableseeoriginaldocumentpage57</column></row><table><table>tableseeoriginaldocumentpage58</column></row><table>(2)擴(kuò)展墓碑使用視圖[System.Storage].[Tombstone!Extension]從系統(tǒng)檢索擴(kuò)展墓碑。擴(kuò)展改變跟蹤信息類似于為項(xiàng)目提供的添加了Extensionld屬性的信息。<table>tableseeoriginaldocumentpage58</column></row><table>(3)關(guān)系墓碑通過(guò)視圖[System.Storage].[Tombstone!Relationship]從系統(tǒng)檢索關(guān)系墓碑。關(guān)系墓碑信息類似于對(duì)擴(kuò)展提供的信息。然而,在關(guān)系實(shí)例的目標(biāo)ItemRef上提供附加信息。此外,還選擇關(guān)系對(duì)象。<table>tableseeoriginaldocumentpage58</column></row><table><table>tableseeoriginaldocumentpage59</column></row><table>(4)墓碑清除為防止墓碑信息無(wú)限制地增長(zhǎng),數(shù)據(jù)存儲(chǔ)提供墓碑清除任務(wù)。此任務(wù)確定什么時(shí)候可以舍棄墓碑信息。該任務(wù)計(jì)算本地創(chuàng)建/更新版本的界限,并隨后通過(guò)舍棄所有更早的墓碑版而截?cái)嗄贡畔ⅰ?1.助手API和函數(shù)基礎(chǔ)映射還提供若干助手函數(shù)。提供這些函數(shù)以幫助在該數(shù)據(jù)模型上的公用操作。a)函數(shù)System.Storage.Getltem〃給定Itemld返回一項(xiàng)目對(duì)象ItemGetltem(ItemldItemld)b)函數(shù)[System.Storage].GetExtension〃給定Itemld和Extensionld返回一擴(kuò)展對(duì)象ExtensionGetExtension(ItemldItemld,ExtensionldExtensionld)c)函數(shù)[System.Storage].GetRelationship〃給定Itemld和Relationshipld返回—關(guān)系對(duì)象RelationshipGetRelationship(ItemldItemld,RelationshipldRelationshipld)12.元數(shù)據(jù)有兩類在存儲(chǔ)中表示的元數(shù)據(jù)實(shí)例元數(shù)據(jù)(項(xiàng)目的類型等),和類型元數(shù)據(jù)。a)模式元數(shù)據(jù)模式元數(shù)據(jù)作為來(lái)自元模式的項(xiàng)目類型的實(shí)例存儲(chǔ)在數(shù)據(jù)存儲(chǔ)中。b)實(shí)例元數(shù)據(jù)應(yīng)用程序使用實(shí)例元數(shù)據(jù)來(lái)查詢項(xiàng)目的類型,并尋找與項(xiàng)目相關(guān)聯(lián)的擴(kuò)展。給定項(xiàng)目的Itemld,應(yīng)用程序可查詢?nèi)猪?xiàng)目視圖,以返回該項(xiàng)目的類型,并使用此值來(lái)査詢Meta.Type視圖以返回關(guān)于該項(xiàng)目的聲明的類型的信息。例如,〃對(duì)給定的項(xiàng)目實(shí)例返回元數(shù)據(jù)項(xiàng)目對(duì)象SELECTm,_ltemASmetadatalnfoObjFROM[Syst"im.Storagej.ltemiINNERJOIN[Meta].[TypemONi.一Typeld=m.ltemldWHEREi.ltemld=@ltemldE.安全性一般而言,所有可保護(hù)的對(duì)象使用圖26中所示的訪問(wèn)掩碼格式來(lái)安排訪問(wèn)權(quán)限。在此格式中,低16位用于對(duì)象專用的的訪問(wèn)權(quán)限,接著7位用于應(yīng)用于大多數(shù)對(duì)象類型的標(biāo)準(zhǔn)訪問(wèn)權(quán)限,高4位用于指定類屬訪問(wèn)權(quán)限,每個(gè)對(duì)象類型將其映射到一組標(biāo)準(zhǔn)且對(duì)象專用的權(quán)限。ACCESS—SYSTEM—SECURITY位對(duì)應(yīng)于訪問(wèn)對(duì)象的SACL的權(quán)限。在圖26的訪問(wèn)掩碼結(jié)構(gòu)中,項(xiàng)目專用的權(quán)限被放置在對(duì)象專用權(quán)限段(低16位)。由于在本實(shí)施例中,存儲(chǔ)平臺(tái)向管理員安全性展現(xiàn)兩組API:Win32和存儲(chǔ)平臺(tái)API,為促進(jìn)存儲(chǔ)平臺(tái)對(duì)象專用權(quán)限的設(shè)計(jì),必須考慮文件系統(tǒng)對(duì)象專用的權(quán)限。在通過(guò)引用結(jié)合于此的有關(guān)專利中充分描述了用于本發(fā)明的存儲(chǔ)平臺(tái)的安全模型。在這點(diǎn)上,圖27(部分a、b和c)畫出按安全模型的一實(shí)施例,作為從現(xiàn)有安全區(qū)域開拓出的新的等同地保護(hù)的安全區(qū)域。F.通知和改變跟蹤按本發(fā)明的另一方面,存儲(chǔ)平臺(tái)提供允許應(yīng)用程序跟蹤數(shù)據(jù)改變的通知能力。此特征主要供保持易失狀態(tài)或執(zhí)行數(shù)據(jù)改變事件上的業(yè)務(wù)邏輯的應(yīng)用程序使用。應(yīng)用程序注冊(cè)在項(xiàng)目、項(xiàng)目擴(kuò)展及項(xiàng)目關(guān)系上的通知。在提交了數(shù)據(jù)改變通知被異步地傳送。應(yīng)用程序可按項(xiàng)目、擴(kuò)展和關(guān)系類型以及操作類型來(lái)過(guò)濾通知。按一個(gè)實(shí)施例,存儲(chǔ)平臺(tái)API322為通知提供兩類接口。第一,應(yīng)用程序注冊(cè)由對(duì)項(xiàng)目、項(xiàng)目擴(kuò)展和項(xiàng)目關(guān)系的改變觸發(fā)的簡(jiǎn)單數(shù)據(jù)改變事件。第二,應(yīng)用程序創(chuàng)建"監(jiān)視程序"對(duì)象來(lái)監(jiān)視項(xiàng)目、項(xiàng)目擴(kuò)展和項(xiàng)目之間關(guān)系的組。在系統(tǒng)失敗或系統(tǒng)離線超過(guò)預(yù)定時(shí)間之后,可保存和重新創(chuàng)建監(jiān)視程序?qū)ο蟮臓顟B(tài)。單個(gè)通知可反映多個(gè)更新。關(guān)于此功能的附加細(xì)節(jié)能在通過(guò)引用結(jié)合于此的有關(guān)專利中找到。G.同步按本發(fā)明的另一方面,存儲(chǔ)平臺(tái)提供同步服務(wù)330,它(I)允許存儲(chǔ)平臺(tái)的多個(gè)實(shí)例(每個(gè)有自己的數(shù)據(jù)存儲(chǔ)302)按一組靈活的規(guī)則來(lái)同步它們的內(nèi)容的各部分,以及(ii)為第三方提供基礎(chǔ)結(jié)構(gòu)以將本發(fā)明的存儲(chǔ)平臺(tái)的數(shù)據(jù)存儲(chǔ)與實(shí)現(xiàn)專有協(xié)議的其它數(shù)據(jù)源同步。存儲(chǔ)平臺(tái)到存儲(chǔ)平臺(tái)的同步在一組參與的復(fù)制品之間發(fā)生。例如參考圖3,希望在多半是在不同的計(jì)算機(jī)系統(tǒng)上運(yùn)行的存儲(chǔ)平臺(tái)的另一實(shí)例的控制下提供在存儲(chǔ)平臺(tái)300的數(shù)據(jù)存儲(chǔ)302和另一遠(yuǎn)程數(shù)據(jù)存儲(chǔ)338之間的同步。該組的總的成員資格不必在任何給定時(shí)間被任何給定復(fù)制品知道。不同的復(fù)制可以獨(dú)立地(即并發(fā)地)作出改變。將同步過(guò)程定義成使每個(gè)復(fù)制品知道由其它復(fù)制品作出的改變。此同步能力本質(zhì)上是多主的(multi-master)。本發(fā)明的同步能力允許各復(fù)制品確定另一復(fù)制品知道什么改變;請(qǐng)求關(guān)于此復(fù)制品不知道的改變的信息;傳輸關(guān)于其它復(fù)制品不知道的改變的信息;確定兩個(gè)改變何時(shí)互相沖突;本地應(yīng)用改變;傳輸沖突分解到其它復(fù)制品以確保會(huì)聚性;以及基于對(duì)沖突分解指定的政策分解沖突。1.存儲(chǔ)平臺(tái)到存儲(chǔ)平臺(tái)的同步本發(fā)明的存儲(chǔ)平臺(tái)的同步服務(wù)300的基本應(yīng)用是同步存儲(chǔ)平臺(tái)(每個(gè)帶有它自己的數(shù)據(jù)存儲(chǔ))的多個(gè)實(shí)例。同步服務(wù)在存儲(chǔ)平臺(tái)模式級(jí)上操作(而不是在數(shù)據(jù)庫(kù)引擎314的底層表中)。因此,例如"范圍(Scope)"用于定義下面討論的同步組。同步服務(wù)按"純改變(netchange)"的原則操作。不是記錄和發(fā)送各個(gè)操作(如事務(wù)復(fù)制),同步服務(wù)而是發(fā)送這些操作的最終結(jié)果,因此常將多個(gè)操作的結(jié)果合并成單個(gè)最終結(jié)果。同步服務(wù)通常不考慮事務(wù)邊界。換言之,若在單個(gè)事務(wù)中對(duì)存儲(chǔ)平臺(tái)數(shù)據(jù)存儲(chǔ)作出兩個(gè)改變,不保證這些改變?cè)拥貞?yīng)用到所有其它復(fù)制品上一可以示出一個(gè)改變而不示出其它改變。此原則的例外是,若在同一事務(wù)中對(duì)同一項(xiàng)目作出兩個(gè)改變,則這些改變保證被原子地發(fā)送和應(yīng)用到其它復(fù)制。因此,項(xiàng)目是同步服務(wù)的一致性單元。a)同步(Sync)控制應(yīng)用程序任一應(yīng)用程序可連接到同步服務(wù)并啟動(dòng)sync(同步)操作。那樣的應(yīng)用程序提供執(zhí)行同步(見下面同步概況)所需的所有參數(shù)。那樣的應(yīng)用程序在這里被稱為同步控制應(yīng)用程序(SCA)。在同步兩個(gè)存儲(chǔ)平臺(tái)實(shí)例時(shí),在一側(cè)由SCA啟動(dòng)同步。該SCA通知本地同步服務(wù)與遠(yuǎn)程伙伴同步。在另一側(cè),同步服務(wù)通過(guò)由來(lái)自發(fā)起機(jī)器的同步服務(wù)發(fā)出的消息喚醒。它基于在目標(biāo)機(jī)器上存在的持久配置信息(見下文的映射)作出響應(yīng)。同步服務(wù)能按時(shí)間表或響應(yīng)于事件運(yùn)行。在這些情況下,實(shí)現(xiàn)時(shí)間表的同步服務(wù)成為SCA。為啟用同步,需要采取兩個(gè)步驟。首先,模式設(shè)計(jì)者必須用合適的同步語(yǔ)義注釋存儲(chǔ)平臺(tái)模式(如下文所述的指定改變單元)。其次,同步必須在具有參與同步的存儲(chǔ)平臺(tái)的實(shí)例的所有機(jī)器上正確地配置(如下所述)。b)模式注釋同步服務(wù)的基本概念是改變單元(ChangeUnit)的概念。改變單元是由存儲(chǔ)平臺(tái)個(gè)別地跟蹤的最小的模式片段。對(duì)每個(gè)改變單元,同步服務(wù)能確定自從最后一次同步以來(lái)它是被改變還是未被改變。指定模式中的改變單元達(dá)到若干目的。首先,它確定了在線的同步服務(wù)如何羅嗦。當(dāng)在改變單元內(nèi)作出改變時(shí),整個(gè)改變單元被發(fā)送到其它復(fù)制品,因?yàn)橥椒?wù)不知道改變單元的哪部分被改變。其次,它確定了沖突檢測(cè)的粒度。當(dāng)對(duì)同一改變單元作出兩個(gè)并發(fā)的改變(這些術(shù)語(yǔ)在后繼章節(jié)中詳細(xì)定義),同步服務(wù)引起沖突;另一方面,若對(duì)不同改變單元作出并發(fā)改變,則無(wú)沖突發(fā)生,且改變被自動(dòng)地合并。第三,它嚴(yán)重地影響了由系統(tǒng)保持的元數(shù)據(jù)的量。對(duì)每個(gè)改變單元保持許多同步服務(wù)元數(shù)據(jù);因此,使改變單元更小會(huì)增加同步的額外開銷。定義改變單元需要找出正確的折衷。為此,同步服務(wù)允許模式設(shè)計(jì)者參與此過(guò)程。在一個(gè)實(shí)施例中,同步服務(wù)不支持大于一個(gè)元素的改變單元。然而,它支持讓模式設(shè)計(jì)者指定比一個(gè)元素更小的改變單元的能力一即將一個(gè)元素的多個(gè)屬性組合到單獨(dú)的改變單元中。在該實(shí)施例中,這是使用下述句法實(shí)現(xiàn)的<TypeName="Appointment"MajorVersion-'T'MinorVersion-"O"ExtendsType-"Base.ltem"ExtendsVersion-"1"><FieldName="MeetingStatus"Type="thestorageplatformTypes.uniqueidentifierNullable="False"/><FileldName="OrganizerName"Type="thestorageplatformTypes.nvarchar(512)"Nullable="False7><FiledName-"OrganizerEmail"Type="thestorageplatformTypes.nvarchar(512)"TypeMajorVersion-'T'Multi^alued="True7><ChangeUnitName-"CU_Status"><FieldName-"MeetingStatus"/></ChangeUnit><ChangeUnitName="CU_Organizer"/><FieldName-"OrganizerName"/><FieldName-"OrganizerEmai卩'/></ChangeUnit></Type>c)同步配置希望保持它們數(shù)據(jù)的某些部分同步的一組存儲(chǔ)平臺(tái)伙伴被稱為同步共同體。雖然共同體的成員希望保持同步,它們不需要以完全相同的方式表示數(shù)據(jù);換言之,同步伙伴可轉(zhuǎn)換他們正在同步的數(shù)據(jù)。在對(duì)等情況下,讓對(duì)等方對(duì)所有它們的伙伴維持轉(zhuǎn)換映射是不現(xiàn)實(shí)的。取代地,同步服務(wù)采取定義"共同體文件夾"的方法。共同體文件夾是代表所有共同體成員正在與之同步的假設(shè)的"共享文件夾"的抽象。此概念最好用一例子說(shuō)明。若Joe希望保持他的若干計(jì)算機(jī)的MyDocuments(我的文檔)文件夾同步,Joe定義一共同體文件夾,如稱為JoeDocuments。隨后在每臺(tái)計(jì)算機(jī)上,Joe在假設(shè)的JoeDocuments文件夾和本地MyDocuments文件夾之間配置一映射。從這點(diǎn)出發(fā),當(dāng)Joe的計(jì)算機(jī)彼此同步時(shí),它們借助JoeDocuments中的文檔而不是它們的本地項(xiàng)目來(lái)交談。以此方法,所有Joe的計(jì)算機(jī)互相理解,而不必知道其它人是誰(shuí)一共同體文件夾成為同步共同體的通用語(yǔ)。配置同步服務(wù)包括三個(gè)步驟(1)定義在本地文件夾和共同體文件夾之間的映射;(2)定義確定哪個(gè)得到同步的同步概況(如與誰(shuí)同步,以及哪個(gè)子集應(yīng)當(dāng)被發(fā)送、哪個(gè)被接收);以及(3)定義不同的同步概況應(yīng)當(dāng)運(yùn)行的時(shí)間表,或手動(dòng)運(yùn)行它們。(1)共同體文件夾一映射共同體文件夾映射作為XML配置文件被存儲(chǔ)在個(gè)別機(jī)器上。每個(gè)映射具有以下模式/mappings/communityFolder此元素命名映射的共同體文件夾。名字遵循文件夾的句法規(guī)則。/mappings/localFolder此元素命名映射所轉(zhuǎn)換到的本地文件夾。此名字遵循文件夾的句法規(guī)則。為了映射有效,文件夾必須已存在。此文件夾中的項(xiàng)目被看作對(duì)每一此映射的同步。/mappings/transformations此元素定義如何將項(xiàng)目從共同體文件夾轉(zhuǎn)換到本地文件夾以及如何反向轉(zhuǎn)換。若缺少或?yàn)榭?,不?zhí)行轉(zhuǎn)換。具體說(shuō)來(lái),這意味著無(wú)ID被映射。此配置主要用于創(chuàng)建文件夾的高速緩存。/mappings/transformations/mapIDs此元素請(qǐng)求新生成的本地ID被賦予所有從共同體文件夾映射的項(xiàng)目,而不是重新使用共同體ID。同步運(yùn)行庫(kù)維護(hù)ID映射,以來(lái)回轉(zhuǎn)換項(xiàng)目。/mappings/transformations/localRoot此元素請(qǐng)求共同體文件夾中的所有根項(xiàng)目作為指定根的子項(xiàng)目。/mappings/runAs此元素控制,在誰(shuí)的授權(quán)下處理針對(duì)此映射的請(qǐng)求。若不存在,則假設(shè)發(fā)送者。/mappings/runAs/sender存在此元素表明,對(duì)此映射的消息發(fā)送者必須是人格化的,且在他的憑證下處理請(qǐng)求。(2)概況同步概況是分離同步所需的總的參數(shù)組。由SCA將其提供給同步運(yùn)行庫(kù)以啟動(dòng)同步。存儲(chǔ)平臺(tái)到存儲(chǔ)平臺(tái)的同步的同步概況包含以下信息本地文件夾,用作改變的源和目標(biāo);與之同步的遠(yuǎn)程文件夾名一此文件夾必須通過(guò)如上定義的映射從遠(yuǎn)程伙伴發(fā)布;方向一同步服務(wù)支持只發(fā)送、只接收以及發(fā)送一接收同步;本地過(guò)濾器一選擇發(fā)送什么本地信息到遠(yuǎn)程伙伴。表示成本地文件夾上的存儲(chǔ)平臺(tái)査詢;遠(yuǎn)程過(guò)濾器一選擇從遠(yuǎn)程伙伴接收什么遠(yuǎn)程信息一表示成共同體文件夾上的存儲(chǔ)平臺(tái)查詢;轉(zhuǎn)換一定義如何在項(xiàng)目和本地格式間轉(zhuǎn)換;本地安全性一指定是在遠(yuǎn)程端點(diǎn)(人格化)的許可下應(yīng)用從遠(yuǎn)程端點(diǎn)檢索的改變,還是用戶在本地啟動(dòng)同步;以及沖突分解政策一指定沖突是否應(yīng)被拒絕、記入日志或自動(dòng)分解一在后一種情況下,指定使用哪個(gè)沖突分解器以及它的配置參數(shù)。同步服務(wù)提供允許簡(jiǎn)單構(gòu)建同步概況的運(yùn)行時(shí)CLR類。概況可被串行化成XML文件或從XML文件串行化,以便容易存儲(chǔ)(常與時(shí)間表一起)。然而,在存儲(chǔ)平臺(tái)中沒有存儲(chǔ)所有概況的標(biāo)準(zhǔn)地方;歡迎SCA在不必永久保持的點(diǎn)上構(gòu)建概況。注意,不需要具有本地映射來(lái)啟動(dòng)同步。能在概況中指定所有同步信息。然而為響應(yīng)于由遠(yuǎn)程方啟動(dòng)的同步請(qǐng)求,需要映射。(3)時(shí)間表在一個(gè)實(shí)施例中,同步服務(wù)不提供它自己的調(diào)度基礎(chǔ)結(jié)構(gòu)。相反,它依賴于另一組件來(lái)完成此任務(wù)一在MicrosoftWindows操作系統(tǒng)中可得到的WindowsScheduler。同步服務(wù)包括命令行實(shí)用程序,它擔(dān)當(dāng)SCA并基于保存在XML文件中的同步概況觸發(fā)同步。該實(shí)用程序使得按時(shí)間表或者響應(yīng)于如用戶登錄或登出等事件來(lái)配置WindowsScheduler變得非常容易。d)沖突處理同步服務(wù)中的沖突處理被劃分成三個(gè)階段(1)發(fā)生在改變應(yīng)用時(shí)的沖突檢測(cè)一此步驟判斷是否可安全地應(yīng)用改變;(2)自動(dòng)沖突分解并記入日志一在此步驟(發(fā)生在緊接著沖突檢測(cè)之后)資訊自動(dòng)沖突分解器,以査看沖突是否能被分解一若不能,可任選地將沖突記入日志;以及(3)沖突檢査與分解一若某些沖突已被記入日志,且發(fā)生在同步會(huì)話之外,則采取此步驟一此時(shí),被記入日志的沖突能被分解并從日志中移除。(1)沖突檢測(cè)在本實(shí)施例中,同步服務(wù)檢測(cè)兩類沖突基于知識(shí)和基于約束的。(a)基于知識(shí)的沖突當(dāng)兩個(gè)復(fù)制對(duì)同一改變單元作出獨(dú)立的改變時(shí),發(fā)生基于知識(shí)的沖突。兩個(gè)改變?nèi)羰撬鼈冊(cè)诨ハ嗖恢赖那闆r作出的,則稱為獨(dú)立的一換言之,第一個(gè)的版本不被第二個(gè)的知識(shí)所覆蓋,反之亦然。同步服務(wù)基于上述復(fù)制品的知識(shí)自動(dòng)檢測(cè)所有那些沖突。將沖突想成在改變單元的版本歷史中的分叉有時(shí)是有益的。若在改變單元的生命中不發(fā)生沖突,其版本歷史是簡(jiǎn)單的鏈一每個(gè)發(fā)生在前一個(gè)之后。在基于知識(shí)的沖突的情況下,兩個(gè)改變并行發(fā)生,導(dǎo)致鏈分裂,成為版本樹。(b)基于約束的沖突存在獨(dú)立的改變?cè)谝黄饝?yīng)用時(shí)破壞完整性約束的情況。例如,在同一目錄中用同樣的名字創(chuàng)建一個(gè)文件的兩個(gè)復(fù)制品能導(dǎo)致發(fā)生那樣的沖突?;诩s束的沖突牽涉到兩個(gè)獨(dú)立的改變(就象基于知識(shí)的沖突),但它們不影響同一改變單元。相反,它們影響不同的改變單元,但在它們之間存在約束。同步服務(wù)檢測(cè)在改變應(yīng)用時(shí)的約束破壞,并自動(dòng)引起基于約束的沖突。分解基于約束的沖突通常需要自定義代碼,它以不破壞約束的方式修改那些改變;同步服務(wù)不提供這樣做的通用機(jī)制。(2)沖突處理在檢測(cè)到?jīng)_突時(shí),同步服務(wù)可采取三個(gè)動(dòng)作之一(由同步概況中的同步啟動(dòng)者選擇)(1)拒絕該改變,將其返回到發(fā)送者;(2)將沖突記入到?jīng)_突日志;或(3)自動(dòng)分解沖突。若改變被拒絕,同步服務(wù)如同該改變沒有到達(dá)該復(fù)制品那樣地運(yùn)作。否定確認(rèn)被發(fā)回到發(fā)起者。此分解政策主要在無(wú)領(lǐng)導(dǎo)的復(fù)制品(如文件服務(wù)器)上有用,在那里將沖突記入日志是不可行的。相反,那些復(fù)制品通過(guò)拒絕它們來(lái)強(qiáng)迫其它復(fù)制品處理那些沖突。同步啟動(dòng)者在它們的同步概況中配置沖突分解。同步服務(wù)支持在單個(gè)概況中以下列方式組合多個(gè)沖突分解器一首先通過(guò)指定沖突分解器的列表,一個(gè)接著一個(gè)地嘗試分解,直到其中一個(gè)成功;第二,通過(guò)將沖突分解器與沖突類型相關(guān)聯(lián),如引導(dǎo)更新一更新基于知識(shí)的沖突到一個(gè)分解器,但所有其它沖突記入曰志。(a)自動(dòng)沖突分解同步服務(wù)提供若干默認(rèn)的沖突分解器。其列表包括本地贏若與本地存儲(chǔ)的數(shù)據(jù)沖突,則不予處理進(jìn)入的改變;遠(yuǎn)程贏若與進(jìn)入的改變沖突,則不予處理本地?cái)?shù)據(jù);最后寫贏基于改變的時(shí)間標(biāo)記挑選每個(gè)改變單元的本地贏或遠(yuǎn)程贏(注意,同步服務(wù)一般不依賴于時(shí)鐘值;此沖突分解器是該規(guī)則的唯一例外);確定的以保證在所有復(fù)制品上相同,但在其它情況下無(wú)意義的方式挑選贏者一同步服務(wù)的一個(gè)實(shí)施例使用伙伴ID的字典式比較來(lái)實(shí)現(xiàn)此特征。此外,ISV能實(shí)現(xiàn)并安裝它們自己的沖突分解器。自定義沖突分解器可接受配置參數(shù);那些參數(shù)必須由SCA在同步概況中的沖突分解段中指定在沖突分解器處理沖突時(shí),它向運(yùn)行庫(kù)返回需要執(zhí)行的操作(替代沖突改變)的列表。然后同步服務(wù)應(yīng)用這些操作,其具有正確地調(diào)整的遠(yuǎn)程指示,以包括沖突處理器所考慮的所有內(nèi)容。在應(yīng)用分解的同時(shí)可能檢測(cè)到另外沖突。在那樣情況下,新的沖突必須在原先處理重新開始之前被分解。將沖突考慮成項(xiàng)目的版本歷史中的分枝時(shí),沖突分解可看成合并一組合兩個(gè)分枝以形成單個(gè)點(diǎn)。因此,沖突分解將版本歷史轉(zhuǎn)到DAG。(b)沖突日志記錄一種非常特定類型的沖突分解器是沖突日志記錄器。同步服務(wù)將沖突記入曰志作為ConflictRecord(沖突記錄)的項(xiàng)目。這些記錄反過(guò)來(lái)與沖突中的項(xiàng)目有關(guān)(除非項(xiàng)目本身已被刪除)。每個(gè)沖突記錄包括導(dǎo)致沖突的進(jìn)入的改變;沖突的類型;更新一更新、更新一刪除、刪除一更新、插入一插入或約束;以及進(jìn)入的改變的版本和發(fā)送它的復(fù)制品的知識(shí)。記入日志的沖突可用于下面所述的檢查和分解。(C)沖突審査和分解同步服務(wù)對(duì)應(yīng)用程序提供API,以檢查沖突日志并建議其中的沖突分解。該API允許應(yīng)用程序枚舉所有沖突,或與給定項(xiàng)目有關(guān)的沖突。還允許那些應(yīng)用程序以下列三種方法之一分解記入日志的沖突(1)遠(yuǎn)程贏一接受記入日志的改變并覆寫沖突的本地改變;(2)本地贏一忽略記入日志的改變的沖突部分;以及(3)建議新的改變一其中,應(yīng)用程序提議一合并,以它的觀點(diǎn),該合并分解沖突。一旦由應(yīng)用程序分解了沖突,同步服務(wù)將它們從日志中移除。(d)復(fù)制品的會(huì)聚性及沖突分解的傳播在復(fù)雜同步的情況下,在多個(gè)復(fù)制品中能檢測(cè)到同一沖突。若發(fā)生此情況,發(fā)生若干事情(l)在一個(gè)復(fù)制品上能分解沖突,并將分解送到其它復(fù)制品;(2)沖突在兩個(gè)復(fù)制品上被自動(dòng)分解;以及(3)在兩個(gè)復(fù)制品上手動(dòng)分解沖突(通過(guò)分解檢查API)。為保證會(huì)聚性,同步服務(wù)將沖突分解轉(zhuǎn)發(fā)到其它復(fù)制品。當(dāng)分解沖突的改變到達(dá)復(fù)制品時(shí),同步服務(wù)自動(dòng)地在日志中尋找由此更新分解的任何沖突,并消除它們。在此情況下,一個(gè)復(fù)制品上的沖突分解被綁定到所有其它復(fù)制品。若不同的復(fù)制品對(duì)同一沖突選擇了不同的贏者,則同步服務(wù)應(yīng)用綁定沖突分解的原則,并自動(dòng)地挑選兩個(gè)分解中一個(gè)勝過(guò)另一個(gè)。以確定性的方式挑選贏者以保證在所有時(shí)刻都產(chǎn)生同樣的結(jié)果(一個(gè)實(shí)施例使用復(fù)制品ID字典式比較)。若不同復(fù)制對(duì)同一沖突建議不同的"新改變",則同步服務(wù)將此新沖突處理成特殊沖突,并使用沖突日志記錄器來(lái)防止它傳播到其它復(fù)制品。那樣情況常在手動(dòng)沖突分解時(shí)發(fā)生。2.對(duì)非存儲(chǔ)平臺(tái)數(shù)據(jù)存儲(chǔ)的同步按本發(fā)明的存儲(chǔ)平臺(tái)的另一方面,存儲(chǔ)平臺(tái)提供ISV用于實(shí)現(xiàn)同步適配器的體系結(jié)構(gòu),同步適配器使存儲(chǔ)平臺(tái)能與如MicrosoftExchange、AD、Hotmail等傳統(tǒng)系統(tǒng)同步。同步適配器得益于由下述同步服務(wù)提供的許多同步服務(wù)。不管其名稱如何,同步適配器不需要作為某個(gè)存儲(chǔ)平臺(tái)體系結(jié)構(gòu)的插件來(lái)實(shí)現(xiàn)。在需要時(shí),"同步適配器"能簡(jiǎn)單地是利用同步服務(wù)運(yùn)行庫(kù)接口來(lái)獲得如改變枚舉和應(yīng)用等服務(wù)的任何應(yīng)用程序。為了使其他人能更容易地配置和運(yùn)行到給定背端(backend)的同步,鼓勵(lì)同步適配器的編寫者展現(xiàn)標(biāo)準(zhǔn)同步適配器接口,它在給定上述的同步概況時(shí)運(yùn)行同步。概況提供配置信息給適配器,某些適配器傳送到同步運(yùn)行庫(kù)以控制運(yùn)行庫(kù)服務(wù)(如,要同步的文件夾)。a)同步服務(wù)同步服務(wù)向適配器編寫者提供若干同步服務(wù)。在本節(jié)余下部分,方便地將存儲(chǔ)平臺(tái)在其上做同步的機(jī)器稱為"客戶機(jī)",而適配器正與其對(duì)話的非存儲(chǔ)平臺(tái)背端稱為"服務(wù)器"。(1)改變枚舉基于由同步服務(wù)維持的改變跟蹤數(shù)據(jù),改變枚舉允許同步適配器容易地枚舉自從最后一次與該伙伴試圖作出同步以來(lái)對(duì)數(shù)據(jù)存儲(chǔ)文件夾發(fā)生的改變?;?錨位(anchor)"的概念來(lái)枚舉改變一這是表示有關(guān)最后一次同步的信息的不透明的結(jié)構(gòu)。如以前章節(jié)所述,錨位采取存儲(chǔ)平臺(tái)知識(shí)的形式。利用改變枚舉服務(wù)的同步適配器落入兩大類別使用"存儲(chǔ)的錨位"的適配器和使用"提供的錨位"的適配器。區(qū)別基于關(guān)于最后一次同步的信息存儲(chǔ)在哪里一在客戶機(jī)上或在服務(wù)器上。適配器常常容易地存儲(chǔ)此信息在客戶機(jī)上一背端往往不能容易地存儲(chǔ)此信息。另一方面,若多個(gè)客戶機(jī)與同一背端同步,則將此信息存儲(chǔ)在客戶機(jī)上是低效且在某些情況下是不正確的一這使一個(gè)客戶機(jī)不知道其它客戶機(jī)已推到服務(wù)器的改變。若適配器希望使用服務(wù)器存儲(chǔ)的錨位,則適配器需要在改變枚舉時(shí)將其送回到存儲(chǔ)平臺(tái)為了讓存儲(chǔ)平臺(tái)維護(hù)錨位(用于本地或遠(yuǎn)程存儲(chǔ)),存儲(chǔ)平臺(tái)需要知道成功地應(yīng)用在服務(wù)器上的改變。這些且只有這些改變能包括在錨位中。在改變枚舉期間,同步適配器使用確認(rèn)(Acknowledgement)接口,以報(bào)告哪個(gè)改變已被成功地應(yīng)用。在同步結(jié)束時(shí),使用提供的錨位的適配器必須讀出新錨位(它集合所有成功應(yīng)用的改變)并將其發(fā)送到它們的背端。各適配器常常需要存儲(chǔ)適配器專用數(shù)據(jù)以及插入到存儲(chǔ)平臺(tái)數(shù)據(jù)存儲(chǔ)中的各項(xiàng)目。該數(shù)據(jù)存儲(chǔ)的常見例子是遠(yuǎn)程ID和遠(yuǎn)程版本(時(shí)間標(biāo)記)。同步服務(wù)提供用于存儲(chǔ)此數(shù)據(jù)的機(jī)制,而改變枚舉提供接收此額外數(shù)據(jù)以及要返回的改變的機(jī)制。在大多數(shù)情況下,這消除了適配器重新査詢數(shù)據(jù)庫(kù)的需求。(2)改變應(yīng)用改變應(yīng)用允許同步適配器將從它們的背端接收的改變應(yīng)用到本地存儲(chǔ)平臺(tái)。期望適配器將改變轉(zhuǎn)換到存儲(chǔ)平臺(tái)模式。圖24示出從存儲(chǔ)平臺(tái)模式生成存儲(chǔ)平臺(tái)API類的過(guò)程。改變應(yīng)用的主要功能是自動(dòng)檢測(cè)沖突。如在存儲(chǔ)平臺(tái)到存儲(chǔ)平臺(tái)同步的情況下,沖突被定義成在互相不知道時(shí)作出的兩個(gè)重疊的改變。當(dāng)適配器使用改變應(yīng)用時(shí),它們必須指定對(duì)其執(zhí)行沖突檢測(cè)的錨位。若檢測(cè)到未被適配器的知識(shí)覆蓋的重疊的本地改變,則改變應(yīng)用引起沖突。類似于改變枚舉,適配器可使用存儲(chǔ)的或提供的錨位。改變應(yīng)用支持適配器專用元數(shù)據(jù)的有效存儲(chǔ)。那樣的數(shù)據(jù)可由適配器將其附加到要應(yīng)用的改變上,且可被同步服務(wù)存儲(chǔ)。數(shù)據(jù)可在下次改變枚舉時(shí)返回。(3)沖突分解上述沖突分解機(jī)制(記入日志和自動(dòng)分解選項(xiàng))也對(duì)同步適配器可用。在應(yīng)用改變時(shí),同步適配器能指定用于沖突分解的政策。若指定了,沖突可被傳遞到指定的沖突處理程序并予以分解(若可能)。沖突也能被記入日志。當(dāng)試圖將本地改變應(yīng)用到背端時(shí),適配器有可能檢測(cè)沖突。在那樣情況下,適配器仍可以將沖突傳遞到同步運(yùn)行庫(kù),以按政策分解。此外,同步適配器可請(qǐng)求任何由同步服務(wù)檢測(cè)的沖突發(fā)回給它們以便處理。在背端能存儲(chǔ)或分解沖突的情況這特別方便。b)適配器實(shí)現(xiàn)雖然某些"適配器"簡(jiǎn)單地是利用運(yùn)行庫(kù)接口的應(yīng)用程序,然而鼓勵(lì)適配器實(shí)現(xiàn)標(biāo)準(zhǔn)的適配器接口。這些接口允許同步控制應(yīng)用程序請(qǐng)求適配器按給定的同步概況執(zhí)行同步;取消正進(jìn)行的同步;以及接收關(guān)于正進(jìn)行同步的進(jìn)展報(bào)告(完成百分比)。3.安全性同步服務(wù)努力將盡可能少的同步引入到由存儲(chǔ)平臺(tái)實(shí)現(xiàn)的安全模式。不是去定義對(duì)同步新的權(quán)限,而是使用現(xiàn)有的權(quán)限。具體地,能讀數(shù)據(jù)存儲(chǔ)項(xiàng)目的任何人可枚舉對(duì)那個(gè)項(xiàng)目的改變;能寫到數(shù)據(jù)存儲(chǔ)項(xiàng)目的任何人可應(yīng)用改變到該項(xiàng)目;以及能擴(kuò)展數(shù)據(jù)存儲(chǔ)項(xiàng)目的任何人可將同步元數(shù)據(jù)與該項(xiàng)目關(guān)聯(lián)。同步服務(wù)不維護(hù)安全授權(quán)信息。當(dāng)在復(fù)制品A由用戶U作出改變,且將其轉(zhuǎn)發(fā)到復(fù)制品B時(shí),該改變最初在A處(由U)作出的事實(shí)丟失了。若B將此改變轉(zhuǎn)發(fā)到復(fù)制品C,則這是在B的授權(quán)而不是在A的授權(quán)下完成的。這就導(dǎo)致下述限制若不信任一個(gè)復(fù)制品對(duì)一個(gè)項(xiàng)目作出它自己的改變,它不能轉(zhuǎn)發(fā)由其它復(fù)制品作出的改變。在啟動(dòng)同步服務(wù)時(shí),由同步控制應(yīng)用程序完成。同步服務(wù)人格化SCA的身份,并在該身份下完成所有操作(本地的和遠(yuǎn)程的)。作為說(shuō)明,觀察到用戶U不能使本地同步服務(wù)從遠(yuǎn)程存儲(chǔ)平臺(tái)檢索對(duì)用戶U不具有讀訪問(wèn)的項(xiàng)目的改變。4.可管理性監(jiān)視復(fù)制品的分布式共同體是復(fù)雜的問(wèn)題。同步服務(wù)可使用"掃描(sweep)"算法來(lái)收集和分發(fā)關(guān)于該復(fù)制品的狀態(tài)的信息。掃描算法的屬性確保關(guān)于所有所配置的復(fù)制品的信息最終被收集,且檢測(cè)到該失敗(無(wú)響應(yīng))的復(fù)制品。在每個(gè)復(fù)制品上可得到共同體范圍的監(jiān)視信息。可在任意選取的復(fù)制品上運(yùn)行監(jiān)視工具,以檢查此監(jiān)視信息并作出管理決策。在受影響的復(fù)制品上必須直接作出配置改變。H.傳統(tǒng)文件互操作性如上提到,至少在某些實(shí)施例中,本發(fā)明的存儲(chǔ)平臺(tái)旨在被實(shí)施為計(jì)算機(jī)系統(tǒng)的硬件/軟件接口系統(tǒng)的整體部分。例如,本發(fā)明的存儲(chǔ)平臺(tái)可被實(shí)施為如MicrosoftWindows家族操作系統(tǒng)的整體部分。在這方面,存儲(chǔ)平臺(tái)API成為操作系統(tǒng)API的一部分,應(yīng)用程序通過(guò)它與操作系統(tǒng)交互。因此,存儲(chǔ)平臺(tái)成為裝置,應(yīng)用程序通過(guò)它將信息存到操作系統(tǒng)上,且從而基于項(xiàng)目的存儲(chǔ)平臺(tái)的數(shù)據(jù)模型替代了這一操作系統(tǒng)的傳統(tǒng)文件系統(tǒng)。例如,當(dāng)在MicrosoftWindows家族操作系統(tǒng)中實(shí)施時(shí),存儲(chǔ)平臺(tái)可替代在該操作系統(tǒng)中實(shí)現(xiàn)的NTFS文件系統(tǒng)。當(dāng)前,應(yīng)用程序通過(guò)由Windows家族操作系統(tǒng)展現(xiàn)的Win32API來(lái)訪問(wèn)NTFS文件系統(tǒng)的服務(wù)。然而,應(yīng)認(rèn)識(shí)到,完全用本發(fā)明的存儲(chǔ)平臺(tái)替代NTFS文件系統(tǒng)需要重新編碼現(xiàn)有的基于Win32的應(yīng)用程序,且那樣的重新編碼可能是不合需要的,因此本發(fā)明的存儲(chǔ)平臺(tái)提供與如NTFS等現(xiàn)有文件系統(tǒng)的某種互操作性是有益的。從而,在本發(fā)明的一個(gè)實(shí)施例中,存儲(chǔ)平臺(tái)使依賴于Win32編程模型的應(yīng)用程序能同時(shí)訪問(wèn)存儲(chǔ)平臺(tái)的數(shù)據(jù)存儲(chǔ)以及傳統(tǒng)的NTFS文件系統(tǒng)的數(shù)據(jù)存儲(chǔ)的內(nèi)容。為此,存儲(chǔ)平臺(tái)使用作為Win32命名習(xí)慣的超集(superset)的命名習(xí)慣以便于容易的互操作性。此外,存儲(chǔ)平臺(tái)支持通過(guò)Win32API訪問(wèn)存儲(chǔ)在存儲(chǔ)平臺(tái)巻中的文件和目錄。關(guān)于此功能的另外細(xì)節(jié)能在通過(guò)引用結(jié)合于此的有關(guān)專利中找到。I.存儲(chǔ)平臺(tái)API存儲(chǔ)平臺(tái)包括一API,它使應(yīng)用程序能訪問(wèn)上面討論的存儲(chǔ)平臺(tái)的特征和能力,并訪問(wèn)存儲(chǔ)在數(shù)據(jù)存儲(chǔ)中的項(xiàng)目。本節(jié)描述本發(fā)明的存儲(chǔ)平臺(tái)的存儲(chǔ)平臺(tái)API的一個(gè)實(shí)施例。關(guān)于此功能的細(xì)節(jié)能在通過(guò)引用結(jié)合于此的有關(guān)專利中找到,為方便起見在下面總結(jié)此信息的某一些。參考圖18,包含文件夾是一個(gè)項(xiàng)目,它包含與其它項(xiàng)目的持有關(guān)系,且與通常概念的文件系統(tǒng)文件夾等價(jià)。每個(gè)項(xiàng)目"包含"在至少一個(gè)包含文件夾中。圖19示出按本實(shí)施例的存儲(chǔ)平臺(tái)API的基本體系結(jié)構(gòu)。存儲(chǔ)平臺(tái)API使用SQL客戶機(jī)1900與本地?cái)?shù)據(jù)存儲(chǔ)302對(duì)話,并還使用SQL客戶機(jī)l卯0與遠(yuǎn)程數(shù)存儲(chǔ)(如數(shù)據(jù)存儲(chǔ)340)對(duì)話。本地存儲(chǔ)還可使用DQP(分布式査詢處理器)或通過(guò)上述的存儲(chǔ)平臺(tái)同步服務(wù)("Sync")與遠(yuǎn)程數(shù)據(jù)存儲(chǔ)340對(duì)話。存儲(chǔ)平臺(tái)API322還擔(dān)當(dāng)數(shù)據(jù)存儲(chǔ)通知的橋接器API,將應(yīng)用程序的下標(biāo)傳送到通知引擎,并如上所述將通知路由到應(yīng)用程序(如應(yīng)用程序350a、350b或350c)。在一個(gè)實(shí)施例中,存儲(chǔ)平臺(tái)API322還定義受限制的"提供者"體系結(jié)構(gòu),使得它能訪問(wèn)MicrosoftExchange和AD中的數(shù)據(jù)。圖20示意性地表示存儲(chǔ)平臺(tái)API的各種組件。存儲(chǔ)平臺(tái)AP包括下列組件(1)數(shù)據(jù)類2002,它代表存儲(chǔ)平臺(tái)元素和項(xiàng)目類型;(2)運(yùn)行庫(kù)架構(gòu)2004,它管理對(duì)象的持久性并提供支持類2006;以及(3)工具2008,它用于從存儲(chǔ)平臺(tái)模式生成CLR類。從給定模式得出的類的分層結(jié)構(gòu)直接反應(yīng)了該模式中類型的分層結(jié)構(gòu)。作為例子,考慮在如圖21A和圖21B中所示的聯(lián)系人模式中定義的項(xiàng)目類型。圖22示出操作中的運(yùn)行庫(kù)架構(gòu)。運(yùn)行庫(kù)架構(gòu)如下操作1.應(yīng)用程序350a、350b或350c綁定到存儲(chǔ)平臺(tái)的項(xiàng)目。2.架構(gòu)2004創(chuàng)建對(duì)應(yīng)于綁定項(xiàng)目的ItemContext對(duì)象2202,并將其返回給應(yīng)用程序。3.應(yīng)用程序提交在此ItemContext(項(xiàng)目上下文)上的Find(尋找),以得到項(xiàng)目的集合;返回的集合在概念上是對(duì)象圖2204(由于關(guān)系)。4.應(yīng)用程序改變、刪除和插入數(shù)據(jù)。5.應(yīng)用程序通過(guò)調(diào)用Update()方法保存改變。圖23示出"FindAll(尋找所有)"操作的執(zhí)行。圖24示出從存儲(chǔ)平臺(tái)模式生成存儲(chǔ)平臺(tái)API類的過(guò)程。圖25示出文件API所基于的模式。存儲(chǔ)平臺(tái)API包括處理文件對(duì)象的名字空間。該名字空間被稱為System.Storage.Files。System.Storage.Files中的類的數(shù)據(jù)成員直接反映了存儲(chǔ)在存儲(chǔ)平臺(tái)存儲(chǔ)中的信息;此信息是從文件系統(tǒng)對(duì)象的"升級(jí)"或使用Win32API本機(jī)地創(chuàng)建。System.Storage.Files名字空間具有兩個(gè)類Fileltem(文件項(xiàng)目)和Directoryltem(目錄項(xiàng)目)。這些類的成員及其方法可通過(guò)審閱圖25中的模式圖來(lái)預(yù)測(cè)。Fileltem和Directoryltem是從存儲(chǔ)平臺(tái)API只讀的。為修改它們,必須使用System.IO中的Win32API或類。對(duì)于API,編程接口(或簡(jiǎn)稱之為接口)可以被視為用于令代碼的一個(gè)或多個(gè)片斷能與由代碼的一個(gè)或多個(gè)其它片斷提供的功能進(jìn)行通信或?qū)ζ溥M(jìn)行訪問(wèn)的任一機(jī)制、過(guò)程、協(xié)議。或者,編程接口可以被視為能夠通信地耦合至其它計(jì)算機(jī)的一個(gè)或多個(gè)機(jī)制、方法、函數(shù)調(diào)用、模塊等的系統(tǒng)的組件的一個(gè)或多個(gè)機(jī)制、方法、函數(shù)調(diào)用、模塊、對(duì)象等。上述語(yǔ)句中的術(shù)語(yǔ)"代碼片斷"意在包括代碼的一個(gè)或多個(gè)指令或代碼行,并包括,如,代碼模塊、對(duì)象、子例程、函數(shù)等等,無(wú)論應(yīng)用的術(shù)語(yǔ)是什么、或代碼片斷是否被單獨(dú)編譯、或代碼片斷是否被提供為源碼、中間碼或?qū)ο蟠a、代碼片斷是否在運(yùn)行時(shí)系統(tǒng)或進(jìn)程中使用、或它們是否位于同一或不同機(jī)器上或跨多個(gè)機(jī)器分布、或由代碼片斷表示的功能是否完全由軟件、完全由硬件或硬件和軟件的組合來(lái)實(shí)現(xiàn)。概念上,編程接口可以被一般地察看,如圖30A或圖30B所示的。圖30A示出了接口"接口1"為管道,第一和第二代碼片斷通過(guò)該管道進(jìn)行通信。圖30B示出了接口包括接口對(duì)象Il和12(可以是或不是第一和第二代碼片斷的部分),它們令系統(tǒng)的第一和第二代碼片斷能通過(guò)介質(zhì)M進(jìn)行通信。在圖30B中,可以認(rèn)為接口對(duì)象II和12為同一系統(tǒng)的單獨(dú)接口,并且也可以認(rèn)為對(duì)象II和12加上介質(zhì)M構(gòu)成了接口。盡管圖30A和30B示出了雙向流程以及該流程的每一側(cè)上的接口,某些實(shí)現(xiàn)可僅具有一個(gè)方向上的信息流(或如下所述沒有信息流),或僅具有一側(cè)的接口對(duì)象。作為示例而非局限,諸如應(yīng)用編程或程序接口(API)、入口點(diǎn)、方法、函數(shù)、子例程、遠(yuǎn)程過(guò)程調(diào)用和組件對(duì)象模型(COM)接口等術(shù)語(yǔ)包含在編程接口的定義之內(nèi)。這類編程接口的方面可包括第一代碼片斷向第二代碼片斷發(fā)送信息的方法(其中,"信息"以其最廣泛的意義使用,并包括數(shù)據(jù)、命令、請(qǐng)求等等);第二代碼片斷接收信息的方法;以及該信息的結(jié)構(gòu)、序列、語(yǔ)法、組織、模式、定時(shí)和內(nèi)容。在這一點(diǎn)上,只要信息以接口所定義的方式傳輸,底層傳輸介質(zhì)本身可以對(duì)接口的操作不重要,無(wú)論該介質(zhì)是有線還是無(wú)線,或兩者的組合。在某些情況下,在常規(guī)意義上,當(dāng)一個(gè)代碼片斷僅訪問(wèn)由第二代碼片斷執(zhí)行的功能時(shí),信息可不在一個(gè)或兩個(gè)方向上傳輸,因?yàn)樾畔鬏斂梢允腔蛘咄ㄟ^(guò)另一機(jī)制(如,信息被放置在與代碼片斷之間的信息流分離的緩存、文件等中)或者不存在。這些方面的任一個(gè)或所有可以在給定的情況下重要,如,取決于代碼片斷是否是松耦合或緊耦合配置的系統(tǒng)的一部分,并且因此該列表應(yīng)當(dāng)被認(rèn)為是說(shuō)明性的而非限制。編程接口的這一概念對(duì)本領(lǐng)域的技術(shù)人員是己知的,并且可以閱讀上述本發(fā)明的詳細(xì)描述而清楚這一概念。然而,有其它方法來(lái)實(shí)現(xiàn)編程接口,并且除非明顯地排除,這些方法也由所附權(quán)利要求書包含在內(nèi)。這些其它方法看似比圖30A和30B的視圖更精密或復(fù)雜,但是它們?nèi)詧?zhí)行類似的功能來(lái)完成同一整體結(jié)果?,F(xiàn)在簡(jiǎn)要描述編程接口的某些說(shuō)明性替換實(shí)現(xiàn)。分解:可以通過(guò)將通信分裂成多個(gè)離散通信來(lái)間接地實(shí)現(xiàn)從一個(gè)代碼片斷到另一個(gè)的通信。這在圖31A和31B中示意性地描述。如圖所示,可以按照功能的可分組來(lái)描述某些接口。由此,可以分解圖30A和30B的接口功能來(lái)達(dá)到相同的結(jié)果,如同可以在數(shù)學(xué)上提供24,或2乘2乘3乘2—樣。因此,如圖31A所示,可以細(xì)分由接口"接口l"提供的功能以將該接口的通信變換成多個(gè)接口"接口1A"、"接口1B"、"接口1C"等,而達(dá)到相同的結(jié)果。如圖31B所示,由接口II提供的函數(shù)可以被細(xì)分成多個(gè)接口Ila、Ilb、Ilc等,而達(dá)到相同的結(jié)果。類似地,從第一代碼片斷接收信息的第二代碼片斷的接口12可以被分解成多個(gè)接口12a、12b、12c等。當(dāng)分解時(shí),包括在第一代碼片斷中的接口的數(shù)量不需要匹配包括在第二代碼片斷中的接口的數(shù)量。在圖31A或31B的任一情況下,接口"接口1"和II的功能性精神分別與圖30A和30B的保持相同。接口的分解也可遵從聯(lián)合、通信和其它數(shù)學(xué)性質(zhì),使得分解較難識(shí)別。例如,命令操作可以是不重要的,并且因此由接口完成的功能可以在達(dá)到該接口之前由另一段代碼或接口較好地完成,或者由系統(tǒng)的單獨(dú)組件執(zhí)行。此外,編程領(lǐng)域的普通技術(shù)人員可以理解有各種方式來(lái)作出不同的函數(shù)調(diào)用而達(dá)到相同的結(jié)果。重定義:在某些情況下,可能忽略、添加或重定義編程接口的某些方面(如參數(shù)),而仍達(dá)到預(yù)期的結(jié)果。這在圖32A和32B中示出。例如,假定圖30A的接口"接口1"包括函數(shù)調(diào)用^Mflre^pwAFec/w'o",o"0W(平方),它包括三個(gè)參數(shù),z'";w/(輸入)、;rec/w'o"(精度)和ow0wf(輸出),并且由第一代碼片斷向第二代碼片斷發(fā)布。如果中間參數(shù);^c/^"在給定的情形下無(wú)關(guān)緊要,如圖32A所示,它也可以被忽略或甚至由meam'"g/ew(無(wú)意義)(在這一情況下)參數(shù)來(lái)替換。也可以添加無(wú)關(guān)緊要的^toY/o"a/(另外)參數(shù)。在任一情況下,只要在輸入由第二代碼片斷平方之后返回輸出,就可以達(dá)到square(平方)的功能。iVec&fo"也有可能對(duì)計(jì)算系統(tǒng)的某一下游或其它部分是極有意義的參數(shù);然而,一旦認(rèn)識(shí)到;wc/^w對(duì)計(jì)算平方這一有限目的不是必需的,它可以被替換或忽略。例如,不是傳遞一個(gè)有效的pn'c/w'ow值,而是在不對(duì)結(jié)果產(chǎn)生不利影響的情況下傳遞諸如出生日期等無(wú)意義的值。類似地,如圖32B所示,接口Il由接口I1'替換,它被重新定義來(lái)忽略或向接口添加參數(shù)。接口I2可類似地被重定義為接口I2',它被重定義來(lái)忽略不必要的參數(shù),或可在別處處理的參數(shù)。此處的要點(diǎn)是在某些情況下,編程接口可包括對(duì)某一目的而言所不需要的方面,諸如參數(shù),因此可以忽略或重定義它們,或在別處處理它們用于其它目的。內(nèi)嵌代碼:合并兩個(gè)單獨(dú)的代碼模塊的一些或全部功能也是可行的,使得它們之間的"接口"改變形式。例如,圖30A和30B的功能可以被分別轉(zhuǎn)化到圖33A和33B的功能。在圖33A中,圖30A的先前的第一和第二代碼片斷被合并成包含兩者的模塊。在這一情況下,該代碼片斷仍可以彼此通信,但是該接口可以適用于更適合單個(gè)模塊的形式。由此,例如,正式的調(diào)用(Call)和返回(Return)語(yǔ)句將不再必需,但是依照接口"接口1"的類似的處理或響應(yīng)仍是有效的。類似地,如圖33B所示,圖30B的部分(或所有)接口12可以內(nèi)嵌地寫入接口II來(lái)形成接口ir。如圖所示,接口12被劃分成I2a和I2b,并且接口部分I2a內(nèi)嵌在接口II中書寫代碼來(lái)形成接口n"。對(duì)于具體的示例,考慮圖30B的接口l執(zhí)行函數(shù)調(diào)用W"wef^/7W,ow0w(;,它由接口I2接收,在由第二代碼片斷處理傳遞到/";W的值(對(duì)其求平方)之后,它被使用oW;7W傳遞回已求平方的結(jié)果。在這一情況下,由第二代碼片斷執(zhí)行的處理(對(duì)/甲"f求平方)可以由第一代碼片斷在不調(diào)用該接口的情況下執(zhí)行。脫離:可以通過(guò)將通信分裂成多個(gè)離散的通信來(lái)間接地完成從一個(gè)代碼片斷到另一個(gè)的通信。這在圖34A和34B中示意性地描述。如圖34A所示,提供了中間件的一個(gè)或多個(gè)片斷(脫離接口(DivorceInterface),因?yàn)樗鼈儚脑嫉慕涌诿撾x的功能和/或接口函數(shù)),以轉(zhuǎn)化第一接口"接口1"上的通信,使得它們符合不同的接口,在本情況下為"接口2A"、"接口2B"和"接口2C"。這可以在這樣一種情況中完成,例如,依照"接口1"協(xié)議設(shè)計(jì)應(yīng)用的已安裝基礎(chǔ)與如操作系統(tǒng)進(jìn)行通信,但是然后改變?cè)摬僮飨到y(tǒng)來(lái)使用不同的接口,在本情況下為接口"接口2A"、"接口2B"和"接口2C"。要點(diǎn)是改變了由第二代碼片斷使用的原始接口,使得它不再與第一代碼片斷所使用的接口兼容,因此使用中介來(lái)令舊接口和新接口兼容。類似地,如圖34B所示,可以使用脫離接口DI1引入第三代碼片斷以從接口II接收信息,并使用脫離接口DI2引入第三代碼片斷以向例如接口I2a和12b發(fā)送接口功能,重新設(shè)計(jì)接口I2a和I2b以使用DI2,但是提供相同的功能性結(jié)果。類似地,DI1和DI2可共同工作以將圖30B的接口II和12的功能轉(zhuǎn)換成一新操作系統(tǒng),而提供相同或類似的功能性結(jié)果。重寫:再一種可能的變化是動(dòng)態(tài)地重寫代碼,使用別的東西來(lái)替換接口的功能,而仍達(dá)到相同的總體結(jié)果。例如,可以有一種系統(tǒng),其中,向執(zhí)行環(huán)境(如由.Net框架提供的環(huán)境、Java運(yùn)行時(shí)環(huán)境或其它類似的運(yùn)行時(shí)刻類型環(huán)境)中的及時(shí)(Just-in-Time)(JIT)編譯器或解釋器提供了中間語(yǔ)言(如MicrosoftIL、JavaByteCode等)中呈現(xiàn)的代碼片斷??梢詴鴮慗IT編譯器以動(dòng)態(tài)地將通信從第一代碼片斷轉(zhuǎn)化到第二代碼片斷,即,令它們符合第二代碼片斷(原始或不同的第二代碼片斷)所需要的不同接口。這在圖35A和35B中有描述。如圖35A中所看見的,這一方式類似于上述的脫離情形。它可以在這樣一種情況下完成,例如,依照"接口l"協(xié)議設(shè)計(jì)應(yīng)用的已安裝基礎(chǔ)操作系統(tǒng)進(jìn)行通信,然后改變?cè)摬僮飨到y(tǒng)以使用不同的接口。JIT編譯器可以用于令已安裝基礎(chǔ)應(yīng)用的空中通信符合操作系統(tǒng)的新接口。如圖35B所描述的,可以應(yīng)用這一動(dòng)態(tài)重寫接口的方法以進(jìn)行動(dòng)態(tài)分解,或者改變接口。應(yīng)當(dāng)注意,上述通過(guò)替換實(shí)施例實(shí)現(xiàn)與接口相同或相似的結(jié)果的情形也可以以各種方式串行、并行或與其它干預(yù)代碼組合。由此,上文呈現(xiàn)的替換實(shí)施例并非相互窮盡,并且可以被混合、匹配和組合以產(chǎn)生與圖30A和30B中所呈現(xiàn)的一般情形相同或等效的情形。也應(yīng)當(dāng)注意,如同大多數(shù)編程構(gòu)造,本發(fā)明可能未描述達(dá)到與接口相同或相似的功能的其它類似的方式,但是它們?nèi)杂杀景l(fā)明的精神和范圍來(lái)表示,S卩,應(yīng)當(dāng)注意,它至少部分地是由作為接口的值的基礎(chǔ)的接口表示的功能或由其啟用的有利結(jié)果。III.圖象模式和輔助模式(圖象模式組)在這里揭示的本發(fā)明的各個(gè)實(shí)施例中,圖象(如JPEG、TIEF、位圖等)被處理成核心平臺(tái)對(duì)象("圖象項(xiàng)目"或更簡(jiǎn)單地"圖象"),且本發(fā)明包括"圖象(Image)模式"以提供系統(tǒng)中圖象的可擴(kuò)展的表示一即,圖象的特征和該圖象如何與系統(tǒng)中的其它項(xiàng)目(包括但不限于其它圖象)相關(guān)。為此,圖象模式對(duì)系統(tǒng)中的圖象定義屬性、行為和關(guān)系,且模式還強(qiáng)制實(shí)行關(guān)于圖象的規(guī)則,如,圖像必須包含什么專用數(shù)據(jù)、圖像能可任選地包含哪些專用數(shù)據(jù)、特定圖象如何擴(kuò)展,等等。圖象模式包括表示不同類型圖象所必須的類型信息,包括用于表示圖象的文件格式的屬性(包括GIF、TIEF、JPEG以及其它已知圖象對(duì)象類型)以及表示圖象的語(yǔ)義內(nèi)容的屬性。本發(fā)明的各實(shí)施例的圖象模式是構(gòu)建所有圖象相關(guān)功能的基礎(chǔ)。除圖象模式外,這里還提供并討論對(duì)"照片(Photo)"、"分析屬性(AnalysisProperties)"、"位置(Location)"項(xiàng)目的相關(guān)輔助模式(總稱為"圖象模式組"),且本發(fā)明的某些實(shí)施例包括這些輔助模式的一個(gè)或多個(gè)。照片模式是照片對(duì)象("照片項(xiàng)目"或簡(jiǎn)單的"照片")的可擴(kuò)展的表示,其中照片項(xiàng)目類型是圖象項(xiàng)目類型的子類型。分析屬性模式(AP模式)是照片項(xiàng)目的分析屬性(AP)的可擴(kuò)展的表示,它啟用對(duì)照片的先進(jìn)的比較功能,如自動(dòng)面部識(shí)別、圖象的相似性等。位置模式是照片項(xiàng)目的物理(地理)位置屬性的可擴(kuò)展的表示。圖36A和圖36B示出本發(fā)明的各實(shí)施例的圖象模式(項(xiàng)目及屬性),以及從基礎(chǔ)模式(圖7)和核心模式(圖8A和圖8B)選擇的元素,以示出在每個(gè)模式之間的互相關(guān)系(為方便起見,在圖示中省略各個(gè)屬性)。A.圖象模式如前討論,圖象模式包括表示不同類型的圖象項(xiàng)目所必須的項(xiàng)目、屬性和關(guān)系。這包括用于表示特定圖象類型(GIF、T正F、JPEG等)的本機(jī)文件格式,以及表示圖象的語(yǔ)義內(nèi)容的屬性。為此,對(duì)任何圖象項(xiàng)目,項(xiàng)目類型是由所有圖象共享的基礎(chǔ)項(xiàng)目類型,且是如圖36示出的Core.Document項(xiàng)目類型(即在"核心(Core)"模式中的"文檔(Document)"類型)的直接擴(kuò)展。(Core.Document類型是圖8A示出的核心模式的一部分。)圖象類型包含一般描述圖象的字段,且它可應(yīng)用到所有圖象,而不論其格式。圖象模式的基本項(xiàng)目類型是Image(圖像)類型,下面是Image類型的某些字段:_<table>tableseeoriginaldocumentpage78</column></row><table>圖象模式還包括附加屬性(嵌套元素),它從Base.PropertyBase如下地?cái)U(kuò)展:"Region":Region屬性代表圖象中的區(qū)域,并包括下列字段<table>tableseeoriginaldocumentpage78</column></row><table><table>tableseeoriginaldocumentpage79</column></row><table><table>tableseeoriginaldocumentpage80</column></row><table>秒)。Aperture用于作出曝光的光圈設(shè)置。IsoSpeed等價(jià)于ISO感光率的膠巻速度。Flash閃光燈亮?0=無(wú)閃光燈,1=閃光燈亮??找馕吨恢篱W光燈是否亮。RedEyeUsed使用紅眼模式?0=否。1=是。空意味著不知道。這對(duì)高級(jí)査詢有用。例如,若使用紅眼,這看來(lái)是肖像。ExposureMod6曝光方式。允許下列5個(gè)值A(chǔ)uto(自動(dòng))、Shutterpriority(快門優(yōu)先級(jí))、Aperturepriority(光圈優(yōu)先級(jí))、ISOpriority(ISO優(yōu)先級(jí))、Manual(手動(dòng))。SubjectDistance由相機(jī)測(cè)得對(duì)象的距離。距離按米計(jì)。c.分析屬性模式對(duì)數(shù)字照片,借助分析應(yīng)用程序可在照片上計(jì)算一組屬性。然而,計(jì)算和重計(jì)算這些屬性是很花費(fèi)時(shí)間和處理器資源的。此外,這些字段是應(yīng)用程序?qū)S玫模渌鼞?yīng)用程序可能不理解這些字段的內(nèi)部格式。對(duì)照片項(xiàng)目,在由這些應(yīng)用程序使用之前可替代地計(jì)算標(biāo)準(zhǔn)的分析屬性組,并以對(duì)照片項(xiàng)目類型的擴(kuò)展的形式將其添加到照片項(xiàng)目。分析屬性模式(AP模式)正是通過(guò)提供AP擴(kuò)展的AP類型這樣做的,而AP擴(kuò)展本身如圖7所示也是基礎(chǔ)模式的Base.Extension擴(kuò)展類型的擴(kuò)展。AP類型擴(kuò)展包括下列字段屬性名描述ColorHistogram用于相似性檢測(cè)的彩色直方圖數(shù)據(jù)。GrayHistogram用于相似性檢測(cè)的灰度直方圖數(shù)據(jù)。Similaritylndex用于相似性檢測(cè)的圖象紋理數(shù)據(jù)IV.結(jié)論如前說(shuō)明,本發(fā)明是針對(duì)用于組織、搜索和共享數(shù)據(jù)的存儲(chǔ)平臺(tái)。本發(fā)明的存儲(chǔ)平臺(tái)擴(kuò)展和拓寬了數(shù)據(jù)存儲(chǔ)的概念,超越現(xiàn)有的文件系統(tǒng)和數(shù)據(jù)庫(kù)系統(tǒng),并被設(shè)計(jì)成存儲(chǔ)所有類型的數(shù)據(jù),包括結(jié)構(gòu)化的、非結(jié)構(gòu)化的或半結(jié)構(gòu)化的數(shù)據(jù),如關(guān)系型(表式)數(shù)據(jù)、XML以及被稱為項(xiàng)目的新數(shù)據(jù)形式。通過(guò)其共同的存儲(chǔ)基礎(chǔ)和模式化的數(shù)據(jù),本發(fā)明的存儲(chǔ)平臺(tái)使消費(fèi)者、知識(shí)工人和企業(yè)能更有效地進(jìn)行應(yīng)用程序的開發(fā)。它提供豐富且可擴(kuò)展的應(yīng)用編程接口,它不僅可用在其數(shù)據(jù)模型中內(nèi)在的能力,還可包含和擴(kuò)展現(xiàn)有文件系統(tǒng)和數(shù)據(jù)庫(kù)訪問(wèn)方法??梢岳斫?,對(duì)上述實(shí)施例可作出改變而不偏離這里廣泛的發(fā)明性概念。因而,本發(fā)明不限于揭示的特定實(shí)施例,而旨在覆蓋由權(quán)利要求定義的本發(fā)明的精神和范圍內(nèi)的所有修改。從上述明白,本發(fā)明的各種系統(tǒng)、方法和方面的所有或部分能以程序代碼的方式(如指令)來(lái)實(shí)施。程序碼可存儲(chǔ)在如磁、電、或光存儲(chǔ)介質(zhì)等計(jì)算機(jī)可讀介質(zhì)上,包括但不于軟盤、CD-ROM、CD-RW、DVD-ROM、DVD-RAM、磁帶、閃存、硬盤驅(qū)動(dòng)器或任何其它機(jī)器可讀介質(zhì),其中當(dāng)由如計(jì)算機(jī)、服務(wù)器等機(jī)器加載并執(zhí)行程序代碼時(shí),該機(jī)器成為實(shí)施本發(fā)明的裝置。本發(fā)明也可在通過(guò)某種傳輸介質(zhì)發(fā)送的程序代碼的形式中實(shí)施,傳輸介質(zhì)如電線或電纜、光纜、包括因特網(wǎng)和內(nèi)聯(lián)網(wǎng)的網(wǎng)絡(luò)或通過(guò)任何其它形式的傳輸,其中當(dāng)由如計(jì)算機(jī)的機(jī)器接收、加載和執(zhí)行程序代碼時(shí),該機(jī)器變成用于實(shí)施本發(fā)明的裝置。當(dāng)在通用處理器上實(shí)現(xiàn)時(shí),程序代碼組合處理器以提供類似于專用邏輯線路操作的唯一的裝置。權(quán)利要求1.一種帶有用于計(jì)算機(jī)系統(tǒng)的硬件/軟件接口系統(tǒng)的計(jì)算機(jī)可讀指令的計(jì)算機(jī)可讀介質(zhì),其中,所述硬件/軟件接口系統(tǒng)處理屬于一圖象并具有所述硬件/軟件接口系統(tǒng)能理解的屬性的多個(gè)分立的信息單元(“項(xiàng)目”)。2.如權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述硬件/軟件接口系統(tǒng)包括定義至少一個(gè)圖象項(xiàng)目及至少一個(gè)圖象屬性的圖象模式。3.如權(quán)利要求2所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述圖象模式中的至少一個(gè)項(xiàng)目是組成基本項(xiàng)目類型的基本項(xiàng)目,從中導(dǎo)出在所述硬件/軟件接口系統(tǒng)中處理的所有其他圖象項(xiàng)目。4.如權(quán)利要求3所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述基本圖象項(xiàng)目類型包括下列屬性組中的至少一個(gè)屬性等級(jí);大小,其中大小包括圖象的寬或高的象素;圖象的位深度;色彩空間;色彩空間的版本;所述圖象的打印次數(shù);所述圖象中感興趣的區(qū)域;屬于所述圖象的歷史;數(shù)字底片標(biāo)識(shí);到同一圖象的其它版本的鏈接的集合;以及圖象的元數(shù)據(jù)生命周期。5.如權(quán)利要求2所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述圖象模式中的至少一個(gè)屬性是所述圖象的區(qū)域?qū)傩裕鰠^(qū)域?qū)傩园ㄋ鰠^(qū)域的左、上、右、下座標(biāo)的字段。6.如權(quán)利要求5所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述圖象模式中的至少一個(gè)屬性是對(duì)所述圖象的感興趣的區(qū)域的屬性,所述感興趣的區(qū)域的屬性包括區(qū)域的字段。7.如權(quán)利要求6所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述圖象的所述感興趣的區(qū)域的屬性還包括主體(如個(gè)人)的字段。8.如權(quán)利要求6所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述圖象的所述感興趣的區(qū)域的屬性還包括置信度的字段。9.如權(quán)利要求2所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述圖象項(xiàng)目具有與主體項(xiàng)目(如個(gè)人)的關(guān)系(如鏈接)。10.如權(quán)利要求2所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述圖象具有與事件項(xiàng)目的關(guān)系(如鏈接)。11.如權(quán)利要求2所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述圖象項(xiàng)目具有與位置項(xiàng)目的關(guān)系(如鏈接)。12.如權(quán)利要求3所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述硬件/軟件接口系統(tǒng)包括定義至少一個(gè)照片項(xiàng)目和至少一個(gè)照片屬性的照片模式,且其中,所述照片項(xiàng)目類型是圖象項(xiàng)目類型的擴(kuò)展。13.如權(quán)利要求12所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述照片模式中的至少一個(gè)項(xiàng)目是組成基本項(xiàng)目類型的基本項(xiàng)目,從中導(dǎo)出在所述硬件/軟件接口系統(tǒng)中處理所有其它照片項(xiàng)目。14.如權(quán)利要求13所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述基本照片項(xiàng)目類型包括下列屬性組中的至少一個(gè)屬性拍攝所述照片的日期;獲得照片的所述曰期;所述照片的獲得會(huì)話的唯一標(biāo)識(shí);方向;位置;事件;相機(jī)的制造商;相機(jī)的型號(hào);曝光時(shí)間;光圈;ISO速度;對(duì)所述照片是否使用閃光燈的指示;對(duì)所述照片是否是用紅眼模式的指示;曝光模式;以及所述照片的目標(biāo)距離。15.如權(quán)利要求3所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述硬件/軟件接口系統(tǒng)包括一分析屬性模式,它定義照片項(xiàng)目的至少一個(gè)分析屬性(AP)和至少一個(gè)AP屬性,且其中,所述照片項(xiàng)目類型是圖象項(xiàng)目類型的擴(kuò)展。16.如權(quán)利要求15所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述AP包括下列屬性組中的至少一個(gè)屬性彩色直方圖;灰度直方圖;以及相似性指數(shù)。17.—種用于處理屬于圖象并具有硬件/軟件接口系統(tǒng)可理解的屬性的多個(gè)分立的單元("項(xiàng)目")的系統(tǒng),所述方法包括一圖象模式,它定義至少一個(gè)圖象項(xiàng)目和至少一個(gè)圖象屬性,其中,所述圖象模式中的所述圖象項(xiàng)目是組成基本項(xiàng)目類型的基本項(xiàng)目,從中導(dǎo)出在硬件/軟件接口系統(tǒng)中處理的所有其它圖象項(xiàng)目。18.如權(quán)利要求17所述的系統(tǒng),其特征在于,所述基本圖象項(xiàng)目類型包括下列屬性組中的至少一個(gè)屬性等級(jí);大小,其中,大小包括圖象的寬和高的象素;圖象的位深度;色彩空間;色彩空間的版本;所述圖象的打印次數(shù);所述圖象中感興趣的區(qū)域;屬于所述圖象的歷史;數(shù)字底片標(biāo)識(shí);到同一圖象的其它版本的鏈接的集合;以及圖象的元數(shù)據(jù)生命周期。19.如權(quán)利要求17所述的系統(tǒng),其特征在于,所述圖象模式中的至少一個(gè)屬性是所述圖象的區(qū)域?qū)傩?,所述區(qū)域?qū)傩园ㄋ鰠^(qū)域的左、上、右、下座標(biāo)的字段。20.如權(quán)利要求17所述的系統(tǒng),其特征在于,所述圖象模式中的至少一個(gè)屬性是所述圖象的感興趣的區(qū)域的屬性,所述感興趣的區(qū)域的屬性包括區(qū)域的字段。21.如權(quán)利要求17所述的系統(tǒng),其特征在于,所述圖象的感興趣的區(qū)域的屬性還包括主體(如個(gè)人)的字段。22.如權(quán)利要求17所述的系統(tǒng),其特征在于,所述圖象的感興趣的區(qū)域的屬性還包括置信度的字段。23.如權(quán)利要求17所述的系統(tǒng),其特征在于,所述圖象項(xiàng)目具有與主體項(xiàng)目(如個(gè)人)的關(guān)系(如鏈接)。24.如權(quán)利要求17所述的系統(tǒng),其特征在于,所述圖象項(xiàng)目具有與事件項(xiàng)目的關(guān)系(如鏈接)。25.如權(quán)利要求17所述的系統(tǒng),其特征在于,所述圖象項(xiàng)目具有與位置項(xiàng)目的關(guān)系(如鏈接)。26.如權(quán)利要求17所述的系統(tǒng),其特征在于,所述硬件/軟件接口系統(tǒng)包括一照片模式,它定義至少一個(gè)照片項(xiàng)目和至少一個(gè)照片屬性,并其中,所述照片項(xiàng)目類型是圖象項(xiàng)目類型的擴(kuò)展。27.如權(quán)利要求17所述的系統(tǒng),其特征在于,所述照片模式中的至少一個(gè)項(xiàng)目是組成基本項(xiàng)目類型的基本項(xiàng)目,從中導(dǎo)出在所述硬件/軟件接口系統(tǒng)中處理的所有其它照片項(xiàng)目。28.如權(quán)利要求27所述的系統(tǒng),其特征在于,所述基本照片項(xiàng)目類型包括下列屬性組中的至少一個(gè)屬性拍攝所述照片的日期;獲得所述照片的日期;所述照片的獲得會(huì)話的唯一標(biāo)識(shí);方向;位置;事件;相機(jī)的制造商;相機(jī)的型號(hào);曝光時(shí)間;光圈;ISO速度;對(duì)所述照片是否使用閃光燈的指示;對(duì)所述照片是否使用紅眼模式的指示;曝光模式;以及所述照片的目標(biāo)距離。29.如權(quán)利要求27所述的系統(tǒng),其特征在于,所述硬件/軟件接口系統(tǒng)包括一分析屬性模式,它定義照片項(xiàng)目的至少一個(gè)分析屬性(AP)和至少一個(gè)AP屬性,且其中,所述照片項(xiàng)目類型是圖象類型的擴(kuò)展。30.如權(quán)利要求29所述的系統(tǒng),其特征在于,所述AP包括下列屬性組中的至少一個(gè)屬性彩色直方圖;灰度直方圖;以及相似性指數(shù)。31.—種硬件/軟件接口系統(tǒng)處理屬于具有所述硬件/軟件接口系統(tǒng)可理解的屬性的圖象的多個(gè)分立的信息單元("圖象項(xiàng)目")的方法,所述方法包括建立一圖象模式,以定義至少一個(gè)圖象項(xiàng)目和至少一個(gè)圖象屬性;以及在所述圖象模式中建立一項(xiàng)目作為組成基本項(xiàng)目類型的基本項(xiàng)目,從中導(dǎo)出在硬件/軟件接口系統(tǒng)中處理的所有其它的圖象項(xiàng)目。32.如權(quán)利要求31所述的方法,其特征在于,所述基本圖象項(xiàng)目類型包括下列屬性組中的至少一個(gè)屬性等級(jí);大小,其中,大小包括圖象的寬和高的象素;圖象的位深度;色彩空間;色彩空間的版本;所述圖象的打印次數(shù);所述圖象中感興趣的區(qū)域;屬于所述圖象的歷史;數(shù)字底片標(biāo)識(shí);到同一圖象的其它版本的鏈接的集合;以及圖象的元數(shù)據(jù)生命周期。33.如權(quán)利要求31所述的方法,其特征在于,所述圖象模式中至少一個(gè)屬性是所述圖象的區(qū)域?qū)傩裕鰠^(qū)域?qū)傩园ㄋ鰠^(qū)域的左、上、右、下座標(biāo)的字段。34.如權(quán)利要求33所述的方法,其特征在于,所述圖象模式中的至少一個(gè)屬性是所述圖象的感興趣的區(qū)域的屬性,所述感興趣的區(qū)域的屬性包括區(qū)域的字段、主體(如個(gè)人)的字段、或置信度的字段。35.如權(quán)利要求31所述的方法,其特征在于,所述圖象項(xiàng)目具有與主體項(xiàng)目(如個(gè)人)、與事件項(xiàng)目、或與位置項(xiàng)目的關(guān)系(鏈接)。36.如權(quán)利要求31所述的方法,其特征在于,還包括,為了表示在拍攝照片數(shù)字圖象項(xiàng)目(照片)處的幾何位置,建立所述照片和對(duì)應(yīng)于所述幾何位置的位置項(xiàng)目(位置)之間的關(guān)系(位置關(guān)系),使得能基于所述位置查詢所述照片。37.如權(quán)利要求36所述的方法,其特征在于,還包括,為表示在拍攝照片數(shù)字圖象項(xiàng)目(照片)處的幾何位置,在所述位置關(guān)系上設(shè)置對(duì)應(yīng)于所述幾何位置的位置屬性(LocProp)。38.如權(quán)利要求31所述的方法,其特征在于,還包括,為表示照片數(shù)字圖象項(xiàng)目(照片)中的至少一個(gè)人,建立所述照片和屬于所述個(gè)人的項(xiàng)目(聯(lián)系人)之間的關(guān)系,使得能基于所述聯(lián)系人査詢所述照片。39.如權(quán)利要求31所述的方法,其特征在于,還包括,為表示在照片數(shù)字圖象項(xiàng)目(照片)中表示的至少一個(gè)事件,建立所述照片和屬于所述事件的項(xiàng)目(事件)之間的關(guān)系,使得能基于所述事件査詢所述照片。40.如權(quán)利要求31所述的方法,其特征在于,還包括建立從第一數(shù)字圖象項(xiàng)目(圖像)到第二圖象的關(guān)系,所述第二圖像是(a)從其導(dǎo)出所述第一圖象的父圖象,或(b)從所述第一圖象導(dǎo)出的子圖象。全文摘要在基于項(xiàng)目的系統(tǒng)中,圖象(如JPEG,TIEF,位圖等)被處理成核心平臺(tái)對(duì)象(“圖象項(xiàng)目”,或更簡(jiǎn)單的“圖象”),并存在于提供系統(tǒng)中圖象的可擴(kuò)展表示的“圖象模式“中-即,圖象的特征以及該圖象如何關(guān)系到系統(tǒng)中其它項(xiàng)目(包括但不限于其它圖象)。為此,圖象模式定義系統(tǒng)中圖象的屬性、行為和關(guān)系,且模式還強(qiáng)制實(shí)施關(guān)于圖象的規(guī)則,如圖象必須包含什么專用數(shù)據(jù)、圖象可任選地可包含什么專用數(shù)據(jù)、特定的圖象可如何擴(kuò)展等。文檔編號(hào)G06F7/00GK101416153SQ200480001501公開日2009年4月22日申請(qǐng)日期2004年7月29日優(yōu)先權(quán)日2003年8月21日發(fā)明者A·瓦斯齊羅,B·P·吉布森,C·A·埃文斯,J·C·普拉特,J·P·湯普森,N·H·巴盧,P·S·赫爾亞,S·C·格蘭納,S·E·達(dá)特申請(qǐng)人:微軟公司