專利名稱:經(jīng)由公共數(shù)據(jù)結(jié)構(gòu)訪問不同的類型結(jié)構(gòu)的制作方法
經(jīng)由公共數(shù)據(jù)結(jié)構(gòu)訪問不同的類型結(jié)構(gòu)背景隨著計(jì)算機(jī)化系統(tǒng)的日益普及,在這些計(jì)算機(jī)化系統(tǒng)上使用的各種應(yīng)用程序和文 檔也日益增加。具體而言,現(xiàn)在存在出于任何數(shù)量的目的配置的各種各樣的應(yīng)用程序,無論 是用作復(fù)雜的操作系統(tǒng)、數(shù)據(jù)庫(kù)等,還是用作被配置成專用的更簡(jiǎn)單的應(yīng)用程序。在許多情 況下,軟件開發(fā)者將使用任何數(shù)量的適當(dāng)?shù)木幊陶Z言在腦海中了解特定操作系統(tǒng)/框架的 情況下編寫新的應(yīng)用程序。一旦軟件完成,開發(fā)者就將該應(yīng)用程序編譯成機(jī)器可執(zhí)行代碼, 其然后可被安裝在具有適當(dāng)?shù)牟僮飨到y(tǒng)的計(jì)算機(jī)系統(tǒng)上。在許多情況下,操作新應(yīng)用程序 將涉及與系統(tǒng)/框架中的若干其他組件或應(yīng)用程序互操作。因此,可以理解,存在操作系統(tǒng)或通用框架的開發(fā)者以及在該框架中操作的各個(gè) 應(yīng)用程序的開發(fā)者通常必須考慮的多個(gè)考慮事項(xiàng)。這些關(guān)注事項(xiàng)中的許多甚至可能是競(jìng)爭(zhēng) 的。例如,許多應(yīng)用程序開發(fā)者所關(guān)注的可能是快速且可定制的操作,而許多操作系統(tǒng)/框 架開發(fā)者所關(guān)注的可能是安全性和穩(wěn)定性。在某些情況下,安全性和穩(wěn)定性要求可限制某 些應(yīng)用程序操作的方式的速度和可定制性。這種緊張會(huì)變得顯而易見的一個(gè)領(lǐng)域具有特定種類的“類型框架”。在類型框架 中,函數(shù)、自變量,甚至數(shù)據(jù)值都可以與特定“類型”相關(guān),類型一般定義了在另一個(gè)應(yīng)用程 序或組件可以訪問/處理對(duì)應(yīng)的數(shù)據(jù)之前各種數(shù)據(jù)(即,函數(shù)、自變量或值)需要如何表 現(xiàn)。在使用強(qiáng)類型框架的系統(tǒng)中,框架可以被配置成使得使用一種類型的應(yīng)用程序或組件 被禁止執(zhí)行或訪問對(duì)應(yīng)于其他類型的函數(shù)和數(shù)據(jù)。某些示例框架包括標(biāo)稱(或標(biāo)稱的)和 結(jié)構(gòu)類型框架,雖然有許多不同種類的類型框架。一般而言,標(biāo)稱(或標(biāo)稱的)類型框架被配置成使得一個(gè)標(biāo)稱類型的數(shù)據(jù)只能訪 問使用完全相同的類型名稱(是相同的標(biāo)稱類型)的其他數(shù)據(jù)(或被這些數(shù)據(jù)訪問)。如 此,使用被稱為“客戶記錄”的類型名的一個(gè)應(yīng)用程序可能被禁止訪問由按照被稱為“成員 記錄”的類型名的另一個(gè)應(yīng)用程序來管理的類似的數(shù)據(jù),即使類型結(jié)構(gòu)(例如,記錄字段的 數(shù)量和名稱)可能是相同的。例如,結(jié)構(gòu)身份可能在客戶記錄和成員記錄的標(biāo)稱類型兩者 都包括相等數(shù)量和類型的字段的情況下(例如,一個(gè)集合包括第一名稱=“字符串”,而第 二名稱=“字符串”等等)出現(xiàn)。相反,結(jié)構(gòu)類型框架依賴于結(jié)構(gòu)之間的匹配,而不是名稱 之間的匹配。雖然結(jié)構(gòu)類型不限于非確切類型名,但當(dāng)一個(gè)類型比另一個(gè)類型包括更多種 類的結(jié)構(gòu)或包括與另一個(gè)類型不同的結(jié)構(gòu)時(shí)(例如,成員記錄包括第一名稱=“字符串”, 第二名稱=“字符串”,以及電話號(hào)碼=值),會(huì)出現(xiàn)結(jié)構(gòu)不匹配。對(duì)于包括標(biāo)稱和結(jié)構(gòu)類型的各種不同類型之間的不匹配,常常有各種解決方法, 以使得應(yīng)用程序可以互操作。例如,在標(biāo)稱類型框架內(nèi),開發(fā)者可以為每一個(gè)感興趣的應(yīng)用 程序編寫新代碼,該新代碼將一種標(biāo)稱類型中的類型結(jié)構(gòu)映射到或轉(zhuǎn)換成另一種標(biāo)稱類型 中的相同類型結(jié)構(gòu)。盡管不匹配的類型結(jié)構(gòu)之間的類似解決方法也是可能的,但結(jié)構(gòu)類型 的這一轉(zhuǎn)換往往更復(fù)雜。例如,Lisp編程語言實(shí)現(xiàn)了一種公共,常規(guī)結(jié)構(gòu)類型框架,其中基 本結(jié)構(gòu)是數(shù)據(jù)對(duì)。因此,為了使用另一應(yīng)用程序的數(shù)據(jù),基于Lisp的應(yīng)用程序通常需要將 該另一應(yīng)用程序中的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為數(shù)據(jù)對(duì)結(jié)構(gòu),但這是困難的。
類似地,可能難以從Lisp數(shù)據(jù)對(duì)結(jié)構(gòu)轉(zhuǎn)換到另一應(yīng)用程序中的另一類型結(jié)構(gòu)。這 不僅對(duì)于數(shù)據(jù)在Lisp中是如何安排的差異是正確的,而且還因?yàn)樵跊]有對(duì)數(shù)據(jù)對(duì)進(jìn)行計(jì) 算上昂貴的、完整的遍歷的情況下Lisp數(shù)據(jù)對(duì)的值通常難以查明。這部分地因?yàn)長(zhǎng)isp數(shù) 據(jù)對(duì)往往不經(jīng)由基本查詢提供非常多的信息,除非數(shù)據(jù)對(duì)是“序列”。然而,Lisp編程框架 不是可造成不同類型結(jié)構(gòu)問題的唯一語言。各自使用它們自己的不同結(jié)構(gòu)類型框架的其他 常見語言包括XML、SQL、. NET,以及JAVA,而互操作常常意味著某種類型結(jié)構(gòu)轉(zhuǎn)換。因此,確保應(yīng)用程序之間的互操作性的一種方式是使得在類似平臺(tái)上工作的應(yīng)用 程序開發(fā)者能夠在適當(dāng)時(shí)預(yù)先就標(biāo)稱和/或類型結(jié)構(gòu)的細(xì)節(jié)達(dá)成一致。當(dāng)然,這樣的嚴(yán)格 且精確的一致并不總是可能的,并為可以創(chuàng)建以后將用于相同系統(tǒng)中的組件的其他開發(fā)者 提供極少的靈活性。如此,開發(fā)者通常最后嘗試(如前所述)編寫一個(gè)或多個(gè)接口,這些接 口將較新的應(yīng)用程序類型的數(shù)據(jù)轉(zhuǎn)換成或以其他方式映射到另一個(gè)應(yīng)用程序類型的數(shù)據(jù)。 例如,編寫用一種結(jié)構(gòu)類型框架編寫的應(yīng)用程序的開發(fā)者可能需要為用Lisp編程語言編 寫的其他應(yīng)用程序編寫一個(gè)適配器,和/或可能還為用XML、SQL、. NET,以及JAVA編程語言 中的每一個(gè)編寫的應(yīng)用程序編寫單獨(dú)的適配器??梢岳斫猓@意味著,新應(yīng)用程序的開發(fā)者將需要知道(或了解)其他程序中所使 用的類型。要考慮的應(yīng)用程序越少,此問題就可能顯得不那么不方便。然而,更為普遍的是, 對(duì)于許多開發(fā)者而言,這種情形呈指數(shù)地變成有問題的,特別是當(dāng)在系統(tǒng)上使用相似或相 同種類的數(shù)據(jù)(例如,成員資格記錄、函數(shù)等等)的應(yīng)用程序的數(shù)量會(huì)增長(zhǎng)時(shí)。此問題會(huì)進(jìn) 一步惡化,因?yàn)楦鲬?yīng)用程序中的每一個(gè)都會(huì)變化或進(jìn)行各種升級(jí),這可能會(huì)導(dǎo)致類型名和/ 或結(jié)構(gòu)的更進(jìn)一步的變化。因此,對(duì)于基于類型的框架,有許多可以解決的困難。簡(jiǎn)要概述本發(fā)明的實(shí)現(xiàn)提供被配置成提供一個(gè)應(yīng)用程序或組件通過公共/通用數(shù)據(jù)結(jié)構(gòu) 對(duì)幾乎任何其他應(yīng)用程序的任何數(shù)據(jù)的訪問的系統(tǒng)、方法,以及計(jì)算機(jī)程序產(chǎn)品。例如,在 一個(gè)實(shí)現(xiàn)中,一個(gè)應(yīng)用程序?qū)?shù)據(jù)的請(qǐng)求涉及啟動(dòng)一個(gè)或多個(gè)代理,這些代理可以將另一 個(gè)應(yīng)用程序的數(shù)據(jù)映射到公共數(shù)據(jù)結(jié)構(gòu)中的一個(gè)或多個(gè)模式。然后,發(fā)出請(qǐng)求的應(yīng)用程序 可以通過由代理創(chuàng)建的返回的數(shù)據(jù)結(jié)構(gòu)(具有映射信息)來與所請(qǐng)求的數(shù)據(jù)進(jìn)行交互。結(jié) 果,系統(tǒng)中的每一應(yīng)用程序都可以進(jìn)行互操作,而不管它們是否一定預(yù)先知道公共數(shù)據(jù)結(jié) 構(gòu),并因此它們是否已經(jīng)根據(jù)其他應(yīng)用程序所使用的特定類型結(jié)構(gòu)來配置它們的數(shù)據(jù)。因此,從整個(gè)系統(tǒng)的觀點(diǎn)來看,一種方法可以涉及從應(yīng)用程序接收對(duì)由一個(gè)或多 個(gè)不同的應(yīng)用程序維護(hù)的數(shù)據(jù)的一個(gè)或多個(gè)訪問請(qǐng)求。在此情況下,所請(qǐng)求的數(shù)據(jù)對(duì)應(yīng)于 一個(gè)或多個(gè)不同的類型結(jié)構(gòu)。該方法還可以涉及標(biāo)識(shí)對(duì)應(yīng)于一個(gè)或多個(gè)不同的應(yīng)用程序的 一個(gè)或多個(gè)代理。此外,該方法還可以涉及使用所標(biāo)識(shí)的一個(gè)或多個(gè)代理來將所請(qǐng)求的數(shù) 據(jù)映射到公共數(shù)據(jù)結(jié)構(gòu)。所標(biāo)識(shí)的一個(gè)或多個(gè)代理創(chuàng)建將所請(qǐng)求的數(shù)據(jù)映射到公共數(shù)據(jù)結(jié) 構(gòu)的映射數(shù)據(jù)結(jié)構(gòu)。此外,該方法可以涉及將映射數(shù)據(jù)結(jié)構(gòu)提供給到作出請(qǐng)求的應(yīng)用程序。此外,從應(yīng)用程序的觀點(diǎn)來看,一種方法可以涉及發(fā)送對(duì)對(duì)應(yīng)于一個(gè)或多個(gè)不同 的類型結(jié)構(gòu)的數(shù)據(jù)的一個(gè)或多個(gè)訪問請(qǐng)求。該方法還可以涉及接收一個(gè)或多個(gè)映射數(shù)據(jù)結(jié) 構(gòu),這些映射數(shù)據(jù)結(jié)構(gòu)包括所請(qǐng)求的數(shù)據(jù)和公共數(shù)據(jù)結(jié)構(gòu)的一個(gè)或多個(gè)結(jié)構(gòu)類型之間的映 射信息。此外,方法還可以涉及請(qǐng)求對(duì)一個(gè)或多個(gè)映射數(shù)據(jù)結(jié)構(gòu)的一個(gè)或多個(gè)動(dòng)作。在此
6情況下,所請(qǐng)求的一個(gè)或多個(gè)動(dòng)作被轉(zhuǎn)換為一個(gè)或多個(gè)不同的類型結(jié)構(gòu)的數(shù)據(jù)。此外,該方 法可以涉及接收對(duì)對(duì)應(yīng)于一個(gè)或多個(gè)不同的類型結(jié)構(gòu)的所請(qǐng)求的數(shù)據(jù)的所請(qǐng)求的一個(gè)或 多個(gè)動(dòng)作已經(jīng)完成的一個(gè)或多個(gè)確認(rèn)。提供本概述是為了以簡(jiǎn)化的形式介紹將在以下詳細(xì)描述中進(jìn)一步描述的一些概 念。本概述不旨在標(biāo)識(shí)所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于幫助確定 所要求保護(hù)的主題的范圍。本發(fā)明的附加特征和優(yōu)點(diǎn)將在以下描述中敘述,且其一部分根據(jù)本描述將是顯而 易見的,或可通過對(duì)本發(fā)明的實(shí)踐來獲知。本發(fā)明的特征和優(yōu)點(diǎn)可通過在所附權(quán)利要求書 中特別指出的工具和組合來實(shí)現(xiàn)和獲得。本發(fā)明的這些和其他特征將通過以下描述和所附 權(quán)利要求書變得更加顯而易見,或可通過對(duì)下文中所述的本發(fā)明的實(shí)踐來領(lǐng)會(huì)。附圖簡(jiǎn)述為了描述可獲得本發(fā)明的上述和其它優(yōu)點(diǎn)和特征的方式,將通過參考附圖中示出 的本發(fā)明的具體實(shí)施例來呈現(xiàn)以上簡(jiǎn)要描述的本發(fā)明的更具體描述??梢岳斫猓@些附圖 僅描述本發(fā)明的典型實(shí)施例,從而不被認(rèn)為是對(duì)其范圍的限制,本發(fā)明將通過使用附圖用 附加特征和細(xì)節(jié)來描述和說明,在附圖中圖IA示出了根據(jù)本發(fā)明的一實(shí)現(xiàn)的概略示意圖,其中實(shí)現(xiàn)一個(gè)或多個(gè)不同的類 型結(jié)構(gòu)的一個(gè)或多個(gè)應(yīng)用程序通過公共數(shù)據(jù)結(jié)構(gòu)進(jìn)行互操作;圖IB示出了其中啟動(dòng)代理以將數(shù)據(jù)映射到公共數(shù)據(jù)結(jié)構(gòu)的圖IA的示意圖;圖2示出了其中一應(yīng)用程序通過映射數(shù)據(jù)結(jié)構(gòu)與另一應(yīng)用程序中的數(shù)據(jù)進(jìn)行互 操作的
圖1A-1B的示意圖;以及圖3示出了從應(yīng)用程序和整個(gè)系統(tǒng)的觀點(diǎn)來看的、用于使用公共數(shù)據(jù)結(jié)構(gòu)來訪問 不同結(jié)構(gòu)類型的數(shù)據(jù)或以其他方式提供對(duì)這些數(shù)據(jù)的訪問的方法的流程圖。詳細(xì)描述本發(fā)明的各個(gè)實(shí)現(xiàn)涉及被配置成提供一個(gè)應(yīng)用程序或組件通過公共/通用數(shù)據(jù) 結(jié)構(gòu)對(duì)幾乎任何其他應(yīng)用程序的任何數(shù)據(jù)的訪問的系統(tǒng)、方法,以及計(jì)算機(jī)程序產(chǎn)品。例 如,在一個(gè)實(shí)現(xiàn)中,一個(gè)應(yīng)用程序?qū)?shù)據(jù)的請(qǐng)求涉及啟動(dòng)一個(gè)或多個(gè)代理,這些代理可以將 另一個(gè)應(yīng)用程序的數(shù)據(jù)映射到公共數(shù)據(jù)結(jié)構(gòu)中的一個(gè)或多個(gè)模式。然后,作出請(qǐng)求的應(yīng)用 程序可以通過由代理所創(chuàng)建的返回的數(shù)據(jù)結(jié)構(gòu)(具有映射信息)來與所請(qǐng)求的數(shù)據(jù)進(jìn)行交 互。結(jié)果,系統(tǒng)中的每一個(gè)應(yīng)用程序都可以進(jìn)行互操作,而不管它們是否一定預(yù)先知道公共 數(shù)據(jù)結(jié)構(gòu),并因此它們是否已經(jīng)根據(jù)其他應(yīng)用程序所使用的特定類型結(jié)構(gòu)來配置它們的數(shù) 據(jù)。因此,并且如將在此處更加全面地理解的,本發(fā)明的至少一個(gè)實(shí)現(xiàn)涉及提供公共 數(shù)據(jù)結(jié)構(gòu)(或“通用數(shù)據(jù)模型”)。該公共數(shù)據(jù)結(jié)構(gòu)/通用數(shù)據(jù)模型進(jìn)而按照“原子”、“序 列”、“記錄”或“操作”通過數(shù)據(jù)形狀來定義系統(tǒng)中的任何應(yīng)用程序中的數(shù)據(jù)或以其他方式 這些數(shù)據(jù)進(jìn)行分類。該分類系統(tǒng)不僅可以在開發(fā)者正在開發(fā)應(yīng)用程序時(shí)使用,而且甚至可 以在運(yùn)行時(shí)使用,即使給定應(yīng)用程序的數(shù)據(jù)沒有嚴(yán)格地根據(jù)公共數(shù)據(jù)結(jié)構(gòu)或另一個(gè)應(yīng)用程 序所使用的類型結(jié)構(gòu)來分類或配置??梢岳斫?,因此,該系統(tǒng)可以廣泛地?cái)U(kuò)展,并且可以存在于多個(gè)不同的框架內(nèi)或以 其他方式在其中使用。例如,本發(fā)明的各個(gè)實(shí)現(xiàn)可以被容易地配置成或以其他方式擴(kuò)展成在公共語言運(yùn)行時(shí)(“CLR”)環(huán)境內(nèi)使用,和/或相對(duì)于任何特定語言框架來使用。例如, 本發(fā)明的至少一個(gè)實(shí)現(xiàn)還特別適用于基于XML的應(yīng)用程序。實(shí)際上,可以使用幾乎任何語 言或運(yùn)行時(shí)環(huán)境,只要可以在某一時(shí)刻確定底層數(shù)據(jù)的形狀。圖IA示出了根據(jù)本發(fā)明的一實(shí)現(xiàn)的概略示意圖,其中系統(tǒng)100中的一個(gè)或多個(gè)不 同的應(yīng)用程序或組件通過公共數(shù)據(jù)結(jié)構(gòu)彼此進(jìn)行交互。例如,圖IA示出了系統(tǒng)100,該系統(tǒng) 100包括一個(gè)或多個(gè)處理模塊105,這些處理模塊105進(jìn)一步包括對(duì)公共數(shù)據(jù)結(jié)構(gòu)(或“通 用數(shù)據(jù)模型”)110的一個(gè)或多個(gè)引用。在至少一個(gè)實(shí)現(xiàn)中,系統(tǒng)100包括被配置在標(biāo)稱類 型環(huán)境的子空間內(nèi)的通用結(jié)構(gòu)類型系統(tǒng)。例如,系統(tǒng)100可以包括在基于CLR的標(biāo)稱類型 環(huán)境內(nèi)實(shí)現(xiàn)的公共結(jié)構(gòu)類型系統(tǒng)。此外,圖IA還示出公共數(shù)據(jù)結(jié)構(gòu)110包括定義某些結(jié)構(gòu)類型的一個(gè)或多個(gè)模式以 及與特定數(shù)據(jù)“形狀”相關(guān)的模式。還如此處更全面地理解的,數(shù)據(jù)“形狀”是指數(shù)據(jù)元素的 可以用來按照公共數(shù)據(jù)結(jié)構(gòu)110來廣泛地對(duì)數(shù)據(jù)元素進(jìn)行分類的基本、可標(biāo)識(shí)特征。例如, 圖IA示出公共數(shù)據(jù)結(jié)構(gòu)110包括具有數(shù)據(jù)形狀135的對(duì)于操作的結(jié)構(gòu)類型模式,具有數(shù)據(jù) 形狀140的對(duì)于序列的結(jié)構(gòu)類型模式,以及具有數(shù)據(jù)形狀145的對(duì)于記錄的結(jié)構(gòu)類型模式。 圖IA還示出公共數(shù)據(jù)結(jié)構(gòu)110將結(jié)構(gòu)類型模式進(jìn)一步分類成“原子”,該模式基本上是具有 未定義數(shù)據(jù)形狀的任何事物(即,“一-”)。一般而言,“操作”是指具有將數(shù)據(jù)標(biāo)識(shí)為函數(shù)或自變量的數(shù)據(jù)形狀的一個(gè)或多個(gè) 數(shù)據(jù)元素的任何集合,該函數(shù)或自變量在被執(zhí)行或處理時(shí)返回結(jié)果,無論是單獨(dú)地還是作 為其他函數(shù)的任何集合的一部分。例如,在至少一個(gè)實(shí)現(xiàn)中,操作在本質(zhì)上可被解釋為核 心,即能夠調(diào)用的數(shù)據(jù)片段。對(duì)于CLR,當(dāng)將CLR實(shí)例映射到公共數(shù)據(jù)結(jié)構(gòu)110時(shí),“方法” 和“委托”可以被解釋為操作。由此,CLR環(huán)境中的操作可以被解釋為取未指定數(shù)量的“結(jié) 構(gòu)化值”參數(shù),并返回“結(jié)構(gòu)化值”的委托。在至少一個(gè)實(shí)現(xiàn)中,結(jié)構(gòu)化值是作為對(duì)代碼中的 對(duì)結(jié)構(gòu)化值進(jìn)行操作的實(shí)例進(jìn)行分類的幫手來提供的特定標(biāo)稱類型。另外,還可以將類型 “結(jié)構(gòu)化值”用作API (應(yīng)用程序編程接口)上的標(biāo)記類型,該標(biāo)記類型特別期望對(duì)已經(jīng)被引 入到結(jié)構(gòu)化值空間中的值進(jìn)行操作。此外,“序列”此處是指具有一個(gè)或多個(gè)(無序的)值集合的任何集合的數(shù)據(jù)形狀 的數(shù)據(jù)。例如,對(duì)于CLR環(huán)境,序列可以被解釋為“結(jié)構(gòu)化值”的無序集合。一般而言,序列 包括沒有被單獨(dú)地標(biāo)記的值,或者對(duì)于其標(biāo)簽或名稱或者不是每一個(gè)值唯一的,或者由于 某種原因從系統(tǒng)100的觀點(diǎn)來看不足以對(duì)集合中的值進(jìn)行區(qū)分的值。相反,“記錄”包括具有值集合的形狀的數(shù)據(jù),這非常像序列,不同之處在于記錄中 的值具有與一個(gè)或多個(gè)唯一標(biāo)簽相關(guān)聯(lián)的另一形狀特性,諸如一個(gè)或多個(gè)唯一字段名。例 如,在CLR環(huán)境的至少一個(gè)實(shí)現(xiàn)中,記錄可以被解釋為一組已命名的成員(這些成本本身各 自具有作為某種“結(jié)構(gòu)化值”的值),以及指示記錄是否是只讀的標(biāo)志。因此,在這樣的環(huán)境 中,可以理解,記錄和序列可以被解釋為用于表達(dá)數(shù)據(jù)形狀的主要機(jī)制。當(dāng)然,盡管前面的描述,但可以理解,此處對(duì)可能表現(xiàn)為在一個(gè)特定操作系統(tǒng)或應(yīng) 用程序中具有某種特定用途的任何特定組件、函數(shù)、或操作環(huán)境的任何引用只是為了描述 方便。具體而言,可以從此處的說明書和的權(quán)利要求書中理解,本發(fā)明的各個(gè)實(shí)現(xiàn)可以在各 種各樣的的操作環(huán)境和操作系統(tǒng)和/或框架/環(huán)境中實(shí)施。由此,不應(yīng)該理解為被限于任 何特定的操作系統(tǒng)或應(yīng)用程序。
在任何情況下,圖IA還示出系統(tǒng)100包括一個(gè)或多個(gè)應(yīng)用程序或組件120、125以 及135,由此處更加全面地討論的,這些應(yīng)用程序或組件最終受益于公共數(shù)據(jù)結(jié)構(gòu)110。例 如,圖IA示出應(yīng)用程序120、125以及130中的每一個(gè)都分別包括一個(gè)或多個(gè)數(shù)據(jù)集123、 127以及133,這些數(shù)據(jù)集可以對(duì)應(yīng)于或不對(duì)應(yīng)于公共數(shù)據(jù)結(jié)構(gòu)110的模式之一。具體而言, 圖IA示出應(yīng)用程序120包括數(shù)據(jù)集123,該數(shù)據(jù)集123包括數(shù)據(jù)元素A、B以及C。在此情 況下,數(shù)據(jù)元素A、B以及C至少部分地分別基于對(duì)應(yīng)的數(shù)據(jù)形狀135、140以及145來分別 對(duì)應(yīng)于操作、序列或記錄的結(jié)構(gòu)類型。相反,圖IA還示出應(yīng)用程序125和130也包括數(shù)據(jù)集,但類型結(jié)構(gòu)和數(shù)據(jù)形狀沒 有按照公共數(shù)據(jù)結(jié)構(gòu)110來清楚地定義。例如,圖IA示出應(yīng)用程序135包括具有數(shù)據(jù)元素 D、E和F構(gòu)成的數(shù)據(jù)集127。在這些數(shù)據(jù)元素中,只知道數(shù)據(jù)元素D基于數(shù)據(jù)形狀135來與 “操作”結(jié)構(gòu)類型相對(duì)應(yīng)。具體而言,圖IA示出數(shù)據(jù)元素E具有數(shù)據(jù)形狀145,而E還沒有 與特定結(jié)構(gòu)類型相關(guān)聯(lián)。類似地,數(shù)據(jù)元素F既不與結(jié)構(gòu)類型相關(guān)聯(lián),也不包括已知數(shù)據(jù)形 狀。此外,圖IA還示出應(yīng)用程序130包括數(shù)據(jù)集133,該數(shù)據(jù)集133包括數(shù)據(jù)元素G、 H、I和J。在這些數(shù)據(jù)元素中,數(shù)據(jù)元素G、H和I分別具有可標(biāo)識(shí)數(shù)據(jù)形狀140,135,以及 145。然而,如圖所示,只有數(shù)據(jù)元素I被標(biāo)識(shí)為對(duì)應(yīng)于記錄結(jié)構(gòu)類型。此外,圖IA還示出 數(shù)據(jù)元素J既沒有所標(biāo)識(shí)的結(jié)構(gòu)類型,也沒有可容易地標(biāo)識(shí)的數(shù)據(jù)形狀。因此,可以理解,從應(yīng)用程序125和/或135(與應(yīng)用程序120相比)的各種數(shù)據(jù) 元素中的結(jié)構(gòu)/類型觀點(diǎn)來看,標(biāo)識(shí)什么的差異可以取決于若干因素。例如,對(duì)于應(yīng)用程序 120,開發(fā)者可能已經(jīng)在記住公共數(shù)據(jù)結(jié)構(gòu)110并知道必需的模式的情況下創(chuàng)建應(yīng)用程序 120,由此利用適當(dāng)?shù)慕Y(jié)構(gòu)類型來聲明數(shù)據(jù)元素A、B和C。由此,在安裝應(yīng)用程序120時(shí),處 理模塊105可以被配置成立即標(biāo)識(shí)數(shù)據(jù)元素A、B和C各自對(duì)應(yīng)于公共數(shù)據(jù)結(jié)構(gòu)110的所示 類型和數(shù)據(jù)形狀。相反,應(yīng)用程序125和/或130的開發(fā)者可能已經(jīng)在開始時(shí)使用某一明確定義的 數(shù)據(jù)形狀來創(chuàng)建應(yīng)用程序125和/或130,但基于其他不同的類型框架來聲明特定結(jié)構(gòu)類 型。由此,在安裝時(shí),或在數(shù)據(jù)被系統(tǒng)100標(biāo)識(shí)的某一其他時(shí)刻,應(yīng)用程序125和130可能 沒有專門提供對(duì)應(yīng)于公共數(shù)據(jù)結(jié)構(gòu)110的類型結(jié)構(gòu)身份(或系統(tǒng)100沒有標(biāo)識(shí)類型結(jié)構(gòu))。 或者,應(yīng)用程序125和130可能已經(jīng)在記住公共數(shù)據(jù)結(jié)構(gòu)110的情況下開發(fā),但出于一個(gè)原 因或另一個(gè)原因,數(shù)據(jù)元素D-J尚未由處理模塊105標(biāo)識(shí)和/或與特定結(jié)構(gòu)類型相關(guān)。一般而言,存在可以將結(jié)構(gòu)類型與特定數(shù)據(jù)元素相關(guān)聯(lián)的多種方式。例如,應(yīng)用程 序可以被配置成諸如在安裝時(shí)向處理模塊105發(fā)布其相關(guān)聯(lián)的類型結(jié)構(gòu)和數(shù)據(jù)元素形狀。 類似地,應(yīng)用程序用標(biāo)識(shí)給定應(yīng)用程序所管理的數(shù)據(jù)(即,數(shù)據(jù)集123)符合公共數(shù)據(jù)結(jié)構(gòu) 110的一個(gè)或多個(gè)消息來響應(yīng)處理模塊105(例如,在安裝期間,或在運(yùn)行期間)即可。然 而,本發(fā)明的各個(gè)實(shí)現(xiàn)的至少一個(gè)優(yōu)點(diǎn)是這些信息中的大部分或全部可以在運(yùn)行時(shí)使用一 個(gè)或多個(gè)代理(例如,165、170、175)來確定。例如,圖IA示出系統(tǒng)100包括代理的注冊(cè)表 115,在此情況下,該注冊(cè)表115至少包括基于應(yīng)用程序120的代理165。圖IA還示出注冊(cè) 表115包括基于應(yīng)用程序125的代理170,以及基于應(yīng)用程序130的代理175。作為解釋,“代理”是指在系統(tǒng)100中調(diào)用并用來與特定的應(yīng)用程序接口的一個(gè)或 多個(gè)計(jì)算機(jī)可執(zhí)行指令的集合。在一個(gè)實(shí)現(xiàn)中,這些代理可以作為可以在幾乎任何時(shí)刻被
9調(diào)用的已經(jīng)編譯的可執(zhí)行指令來存在。然而,在附加或替換實(shí)現(xiàn)中,這些代理可以包括由系 統(tǒng)100提供并在被調(diào)用時(shí)首先編譯并且然后執(zhí)行的一種形式的中間語言代碼。在任一種情 況下,可以理解,代理可以是相當(dāng)應(yīng)用程序?qū)S玫?,諸如用適于給定應(yīng)用程序的特定程序語 言來編寫。例如,給定代理可以針對(duì)用XML、SQL、Lisp等編寫的程序來專門配置。例如,在 基于CLR的至少一個(gè)實(shí)現(xiàn)中,被稱為“Clr結(jié)構(gòu)服務(wù)”的代理可以被配置成表示“結(jié)構(gòu)化值” 的CLR實(shí)例。這些代理可以由應(yīng)用程序開發(fā)者創(chuàng)建,或簡(jiǎn)單地由系統(tǒng)100來提供。例如,(應(yīng)用 程序120,125,130等的)應(yīng)用程序開發(fā)者可以準(zhǔn)備該給定應(yīng)用程序?qū)S玫囊粋€(gè)或多個(gè)代 理,并在安裝應(yīng)用程序時(shí)注冊(cè)該代理。在某些情況下,對(duì)于某些開發(fā)者這可能是優(yōu)選的,因 為應(yīng)用程序開發(fā)者可能處于較佳的位置以確保代理避免將數(shù)據(jù)元素過度分類為未定義的 “原子”,如果有的話。然而,在其他情況下,應(yīng)用程序開發(fā)者可以至少部分地根據(jù)在公共數(shù) 據(jù)結(jié)構(gòu)110的結(jié)構(gòu)類型內(nèi)定義的形狀來準(zhǔn)備他們的數(shù)據(jù),由此開發(fā)者可以優(yōu)選使用默認(rèn)代 理的便利。一般而言,每一代理都被配置成在被執(zhí)行時(shí),給定代理遍歷由應(yīng)用程序(120、125、 130等)維護(hù)的一個(gè)或多個(gè)數(shù)據(jù)結(jié)構(gòu)或元素。在遍歷時(shí),代理至少被配置成標(biāo)識(shí)各種數(shù)據(jù)元 素的“形狀”。如從前面的內(nèi)容可以理解,這意味著代理代碼通常將被配置成標(biāo)識(shí)由應(yīng)用程 序維護(hù)的數(shù)據(jù)元素是否是符合特定最小屬性(例如,返回結(jié)果)的函數(shù)或自變量。同一個(gè) 代理通常還將被配置成標(biāo)識(shí)特定數(shù)據(jù)元素是否形成值的集合,和/或那些值是否包括可以 將數(shù)據(jù)元素分類為諸如此處對(duì)于公共數(shù)據(jù)結(jié)構(gòu)110模式所描述的序列或記錄的任何附加 標(biāo)記。圖IB示出了其中系統(tǒng)100借助于一個(gè)或多個(gè)代理向應(yīng)用程序120提供對(duì)一個(gè)或 多個(gè)應(yīng)用程序125和130中的數(shù)據(jù)的訪問的概略示意圖。例如,圖IB示出應(yīng)用程序120發(fā) 送一個(gè)或多個(gè)數(shù)據(jù)訪問請(qǐng)求180,以請(qǐng)求訪問由應(yīng)用程序125維護(hù)的數(shù)據(jù)。此請(qǐng)求由系統(tǒng) 100諸如經(jīng)由處理模塊105來進(jìn)行處理。由于該請(qǐng)求涉及對(duì)應(yīng)于完全不同的/不兼容的類 型結(jié)構(gòu)的數(shù)據(jù)(與應(yīng)用程序120相比),因此圖IB于是示出處理模塊105咨詢代理注冊(cè)表 115以標(biāo)識(shí)應(yīng)該使用什么代理來將應(yīng)用程序125類型結(jié)構(gòu)映射回到公共數(shù)據(jù)結(jié)構(gòu)110。因 此,圖IB示出處理模塊105標(biāo)識(shí)代理170與應(yīng)用程序125相關(guān),并經(jīng)由請(qǐng)求185啟動(dòng)代理 170 (S卩,在運(yùn)行期間)。此外,圖IB還示出初始化對(duì)應(yīng)于應(yīng)用程序125的代理170。在至少一個(gè)實(shí)現(xiàn)中,代 理170然后開始遍歷不同的數(shù)據(jù)元素D、E、F等中的每一個(gè),以便將任何結(jié)構(gòu)類型身份標(biāo)識(shí) 為可用,和/或標(biāo)識(shí)每一個(gè)數(shù)據(jù)元素的數(shù)據(jù)形狀。例如,在至少一個(gè)實(shí)現(xiàn)中,代理170標(biāo)識(shí) 數(shù)據(jù)元素D包括操作,如在公共數(shù)據(jù)結(jié)構(gòu)110的結(jié)構(gòu)類型框架內(nèi)所理解的。此外,代理170 還可以確定數(shù)據(jù)元素E具有與公共數(shù)據(jù)結(jié)構(gòu)105中的記錄的結(jié)構(gòu)類型中所使用的形狀一致 的數(shù)據(jù)形狀145。此外,代理170可能無法標(biāo)識(shí)對(duì)于數(shù)據(jù)元素F的數(shù)據(jù)形狀的任何結(jié)構(gòu)類 型,并由此將數(shù)據(jù)元素F指定為原子。在完成對(duì)數(shù)據(jù)元素的這一遍歷和映射時(shí),代理170然后返回將所遍歷的(或所請(qǐng) 求的)數(shù)據(jù)元素映射回到公共數(shù)據(jù)結(jié)構(gòu)的一個(gè)或多個(gè)數(shù)據(jù)結(jié)構(gòu)。例如,圖IB示出代理170 通過處理模塊105發(fā)送映射數(shù)據(jù)結(jié)構(gòu)195。然后,處理模塊105將映射數(shù)據(jù)結(jié)構(gòu)195傳遞 到應(yīng)用程序120。在附加或替換實(shí)現(xiàn)中,處理模塊105簡(jiǎn)單地向應(yīng)用程序120返回指示已經(jīng)創(chuàng)建了映射數(shù)據(jù)結(jié)構(gòu)195的消息,并且還提供應(yīng)用程序120可以用來訪問映射數(shù)據(jù)結(jié)構(gòu) 195的一個(gè)或多個(gè)引用。然后,應(yīng)用程序120使用映射數(shù)據(jù)結(jié)構(gòu)195中的映射來對(duì)應(yīng)用程序 125中的數(shù)據(jù)執(zhí)行一個(gè)或多個(gè)動(dòng)作。例如,圖2示出了其中應(yīng)用程序120通過映射數(shù)據(jù)結(jié)構(gòu)195與應(yīng)用程序125的數(shù) 據(jù)進(jìn)行互操作的至少一個(gè)實(shí)例。例如,圖2示出映射數(shù)據(jù)結(jié)構(gòu)195包括公共數(shù)據(jù)結(jié)構(gòu)模式 和應(yīng)用程序125的數(shù)據(jù)元素之間的映射或關(guān)聯(lián)信息。具體而言,圖2示出映射數(shù)據(jù)結(jié)構(gòu)195 包括將數(shù)據(jù)元素D定義為操作或?qū)⑵渑c操作相關(guān)的映射210。此外,圖2還示出該映射數(shù)據(jù) 結(jié)構(gòu)包括將數(shù)據(jù)元素E定義為記錄或?qū)⑵渑c記錄相關(guān)的映射220,以及將數(shù)據(jù)元素F定義為 原子或?qū)⑵渑c原子相關(guān)的映射230。然后,應(yīng)用程序120可以通過引用這些各種映射來操縱 或使用應(yīng)用程序125的數(shù)據(jù)。例如,圖2示出應(yīng)用程序120向處理模塊105發(fā)送請(qǐng)求200。在此情況下,請(qǐng)求200 包括向記錄E寫入,將記錄E改為“E' ”的請(qǐng)求。為了處理該請(qǐng)求,圖2示出處理模塊105 經(jīng)由對(duì)映射數(shù)據(jù)結(jié)構(gòu)195的引用來處理請(qǐng)求200。在一個(gè)實(shí)現(xiàn)中,這意味著處理模塊105將 請(qǐng)求200與映射信息220組合,并向應(yīng)用程序125發(fā)送新請(qǐng)求(或請(qǐng)求200的經(jīng)修改的形 式)。例如,圖2示出處理模塊105向應(yīng)用程序125傳遞請(qǐng)求240。由于應(yīng)用程序125理解 請(qǐng)求240中所包括的映射信息220,因此應(yīng)用程序125可以理解并處理來自應(yīng)用程序120的 改變數(shù)據(jù)元素E的請(qǐng)求。由此,應(yīng)用程序125處理該請(qǐng)求,并且然后通過通信信道發(fā)回確認(rèn)。例如,圖2示出 應(yīng)用程序125準(zhǔn)備并發(fā)送響應(yīng)250,該響應(yīng)250確認(rèn)數(shù)據(jù)元素E已經(jīng)應(yīng)請(qǐng)求而被改為E'。 在一個(gè)實(shí)現(xiàn)中,這涉及向處理模塊105發(fā)送消息250,該處理模塊105然后將該消息轉(zhuǎn)發(fā)到 應(yīng)用程序120。結(jié)果,應(yīng)用程序120操縱了由應(yīng)用程序125管理的一個(gè)或多個(gè)數(shù)據(jù)元素,而 不必詳細(xì)知道應(yīng)用程序125所使用的類型約定。因此,圖1A、1B和2示出了用于處理應(yīng)用程序之間的數(shù)據(jù)而幾乎不管這些數(shù)據(jù)中 的特定結(jié)構(gòu)類型分配的多個(gè)不同的示意圖、組件和圖示。相反,需要考慮的所有事項(xiàng)是為了 使應(yīng)用程序能彼此互操作的最基本的數(shù)據(jù)形狀??梢岳斫?,這可以為開發(fā)者提供大得多的 靈活性,諸如通常對(duì)于松散類型系統(tǒng)更常見的那種靈活性(即,不必?fù)?dān)心特定類型約定), 但維護(hù)強(qiáng)類型系統(tǒng)的重要性能和安全優(yōu)點(diǎn)。除了上述內(nèi)容之外,本發(fā)明的各實(shí)現(xiàn)還可以按照包括用于實(shí)現(xiàn)特定結(jié)果的一個(gè)或 多個(gè)動(dòng)作的方法來描述。例如,圖3示出了從應(yīng)用程序120和系統(tǒng)100的觀點(diǎn)來看的、用于 使用公共數(shù)據(jù)結(jié)構(gòu)來訪問對(duì)應(yīng)于不同結(jié)構(gòu)類型的數(shù)據(jù)或以其他方式提供對(duì)這些數(shù)據(jù)的訪 問的流程圖。圖3中所示出的動(dòng)作在下文中參考圖IA到2的組件和圖示來描述。例如,圖3示出從應(yīng)用程序120的觀點(diǎn)來看的方法可以包括發(fā)送數(shù)據(jù)訪問請(qǐng)求的 動(dòng)作300。動(dòng)作300包括發(fā)送對(duì)對(duì)應(yīng)于一個(gè)或多個(gè)不同類型結(jié)構(gòu)的數(shù)據(jù)的一個(gè)或多個(gè)訪問 請(qǐng)求。例如,如圖IB所示,應(yīng)用程序120向處理模塊105發(fā)送訪問請(qǐng)求180。請(qǐng)求180進(jìn)而 涉及訪問或以其他方式操縱由使用另一種類型結(jié)構(gòu)(或未明確定義的類型結(jié)構(gòu))的另一個(gè) 應(yīng)用程序(例如,125)所維護(hù)的某些數(shù)據(jù)。圖3還示出從應(yīng)用程序120的觀點(diǎn)來看的方法可以包括接收將數(shù)據(jù)映射到公共數(shù) 據(jù)結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu)的動(dòng)作310。動(dòng)作310包括接收包括所請(qǐng)求的數(shù)據(jù)和公共數(shù)據(jù)結(jié)構(gòu)之間 的映射信息的一個(gè)或多個(gè)數(shù)據(jù)結(jié)構(gòu)。例如,如圖IB所示,在接收到訪問請(qǐng)求180時(shí),處理模塊105發(fā)送一個(gè)或多個(gè)消息185以啟動(dòng)代理170。然后,代理170遍歷應(yīng)用程序125中的數(shù) 據(jù)結(jié)構(gòu)以將各種數(shù)據(jù)形狀標(biāo)識(shí)到可標(biāo)識(shí)這些數(shù)據(jù)形狀的程度,并返回將所請(qǐng)求的數(shù)據(jù)與公 共數(shù)據(jù)結(jié)構(gòu)UO相關(guān)的映射數(shù)據(jù)結(jié)構(gòu)195。此外,圖3還示出從應(yīng)用程序120的觀點(diǎn)來看的方法可以包括通過接收到的數(shù)據(jù) 結(jié)構(gòu)來對(duì)所請(qǐng)求的數(shù)據(jù)執(zhí)行操作的動(dòng)作320。動(dòng)作320包括請(qǐng)求對(duì)一個(gè)或多個(gè)數(shù)據(jù)結(jié)構(gòu)的 一個(gè)或多個(gè)動(dòng)作,其中所請(qǐng)求的一個(gè)或多個(gè)操作被轉(zhuǎn)換為一個(gè)或多個(gè)不同的類型結(jié)構(gòu)。例 如,如圖2所示,應(yīng)用程序120向處理模塊105發(fā)送請(qǐng)求200,該請(qǐng)求200包括將數(shù)據(jù)元素E 改為數(shù)據(jù)結(jié)構(gòu)195中的E'的請(qǐng)求。然后,該請(qǐng)求通過映射數(shù)據(jù)結(jié)構(gòu)195和消息240來轉(zhuǎn) 換,并且隨后通過應(yīng)用程序125來處理。此外,圖3還示出從應(yīng)用程序120的觀點(diǎn)來看的方法可以包括確認(rèn)操作已完成的 動(dòng)作330。動(dòng)作330包括接收對(duì)對(duì)應(yīng)于一個(gè)或多個(gè)不同的類型結(jié)構(gòu)的所請(qǐng)求的數(shù)據(jù)的所請(qǐng) 求的一個(gè)或多個(gè)操作已經(jīng)完成的一個(gè)或多個(gè)確認(rèn)。例如,圖2示出應(yīng)用程序125將一個(gè)或 多個(gè)確認(rèn)響應(yīng)250發(fā)回應(yīng)用程序120以確認(rèn)對(duì)應(yīng)于數(shù)據(jù)元素E的記錄已改為E'。除前面的內(nèi)容之外,圖3還示出從整個(gè)系統(tǒng)100的觀點(diǎn)來看的方法可以包括接收 對(duì)對(duì)應(yīng)于不同類型結(jié)構(gòu)的數(shù)據(jù)的訪問請(qǐng)求的動(dòng)作340。動(dòng)作340包括從應(yīng)用程序接收對(duì)由 一個(gè)或多個(gè)不同應(yīng)用程序維護(hù)的數(shù)據(jù)的一個(gè)或多個(gè)訪問請(qǐng)求,其中所請(qǐng)求的數(shù)據(jù)對(duì)應(yīng)于一 個(gè)或多個(gè)不同的類型結(jié)構(gòu)。例如,圖IB示出系統(tǒng)100經(jīng)由處理模塊105從應(yīng)用程序120接 收訪問應(yīng)用程序125中的數(shù)據(jù)的請(qǐng)求180。在此特定的情況下,雖然為應(yīng)用程序125定義了 至少一個(gè)數(shù)據(jù)元素,但某些其他數(shù)據(jù)元素不具有特定結(jié)構(gòu)類型,并且只具有數(shù)據(jù)形狀(例 如,數(shù)據(jù)元素E)。圖3還示出從系統(tǒng)100的觀點(diǎn)來看的方法可以包括為不同的類型結(jié)構(gòu)標(biāo)識(shí)對(duì)應(yīng)的 代理的動(dòng)作350。動(dòng)作350包括標(biāo)識(shí)對(duì)應(yīng)于一個(gè)或多個(gè)不同應(yīng)用程序的一個(gè)或多個(gè)代理。 例如,圖IB示出處理模塊105在接收到請(qǐng)求180時(shí)在注冊(cè)表115中標(biāo)識(shí)代理170與應(yīng)用程 序125相關(guān),并發(fā)送一個(gè)或多個(gè)請(qǐng)求185以啟動(dòng)代理170。此外,圖3還示出從系統(tǒng)100的觀點(diǎn)來看的方法可以包括將所請(qǐng)求的數(shù)據(jù)映射到 公共數(shù)據(jù)結(jié)構(gòu)的動(dòng)作360。動(dòng)作360包括使用所標(biāo)識(shí)的一個(gè)或多個(gè)代理來將所請(qǐng)求的數(shù)據(jù) 映射到公共數(shù)據(jù)結(jié)構(gòu),其中所述所標(biāo)識(shí)的一個(gè)或多個(gè)代理創(chuàng)建映射數(shù)據(jù)結(jié)構(gòu)。例如,代理 170遍歷數(shù)據(jù)元素,并且例如標(biāo)識(shí)哪些數(shù)據(jù)形狀對(duì)應(yīng)于公共數(shù)據(jù)結(jié)構(gòu)110中的哪些結(jié)構(gòu)類 型。然后,代理170創(chuàng)建包括映射信息的數(shù)據(jù)結(jié)構(gòu)195,該映射信息將所請(qǐng)求的數(shù)據(jù)元素相 關(guān)(或分配)到公共數(shù)據(jù)結(jié)構(gòu)中的結(jié)構(gòu)類型。此外,圖3還示出從系統(tǒng)100的觀點(diǎn)來看的方法包括將包括映射信息的數(shù)據(jù)結(jié)構(gòu) 發(fā)送到公共數(shù)據(jù)結(jié)構(gòu)的動(dòng)作370。動(dòng)作370包括將映射數(shù)據(jù)結(jié)構(gòu)提供給作出請(qǐng)求的應(yīng)用程 序。例如,如圖IB所示,處理模塊105將映射數(shù)據(jù)結(jié)構(gòu)195發(fā)送到應(yīng)用程序120。如前面所 討論的,應(yīng)用程序120然后可以操縱應(yīng)用程序125中的在映射數(shù)據(jù)結(jié)構(gòu)195中被適當(dāng)?shù)赜?射的任何數(shù)據(jù)。因此,圖1-3和對(duì)應(yīng)的文本提供了用于確保各種各樣的應(yīng)用程序即使在彼此的數(shù) 據(jù)可能被構(gòu)建在不同的類型框架上的情況下也可以訪問這些數(shù)據(jù)的多個(gè)組件和機(jī)制。如上 文所提及的,本發(fā)明的至少一個(gè)優(yōu)點(diǎn)是開發(fā)者可以主要依靠數(shù)據(jù)形狀考慮事項(xiàng),而不是特 定類型約定。這種對(duì)數(shù)據(jù)形狀的專注,而不是有時(shí)改變類型約定,使得構(gòu)建在較舊或較新的
12類型框架上的應(yīng)用程序仍然能夠享受相當(dāng)多的操作。本發(fā)明的實(shí)施例可以包括含有各種計(jì)算機(jī)硬件的專用或通用計(jì)算機(jī),這將在以下 更詳細(xì)地討論。本發(fā)明的范圍內(nèi)的實(shí)施例還包括用于攜帶或其上儲(chǔ)存有計(jì)算機(jī)可執(zhí)行指令 或數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀介質(zhì)。這樣的計(jì)算機(jī)可讀介質(zhì)可以是可由通用或?qū)S糜?jì)算機(jī)訪問 的任何可用介質(zhì)。作為示例而非限制,這樣的計(jì)算機(jī)可讀介質(zhì)可包括RAM、ROM、EEPROM、CD-ROM或其 他光盤存儲(chǔ)、磁盤存儲(chǔ)或其他磁存儲(chǔ)設(shè)備、或可用于攜帶或存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù) 結(jié)構(gòu)形式的所需程序代碼裝置且可由通用或?qū)S糜?jì)算機(jī)訪問的任何其他介質(zhì)。當(dāng)信息通過 網(wǎng)絡(luò)或另一通信連接(硬連線、無線或硬連線或無線的組合)傳輸或提供給計(jì)算機(jī)時(shí),計(jì)算 機(jī)將該連接完全視為計(jì)算機(jī)可讀介質(zhì)。因此,任何這樣的連接被適當(dāng)?shù)胤Q為計(jì)算機(jī)可讀介 質(zhì)。上述的組合也應(yīng)被包括在計(jì)算機(jī)可讀介質(zhì)的范圍內(nèi)。計(jì)算機(jī)可執(zhí)行指令例如包括,使通用計(jì)算機(jī)、專用計(jì)算機(jī)、或?qū)S锰幚碓O(shè)備執(zhí)行某 一功能或某組功能的指令和數(shù)據(jù)。盡管用結(jié)構(gòu)特征和/或方法動(dòng)作專用的語言描述了本主 題,但可以理解,所附權(quán)利要求書中定義的主題不必限于上述具體特征或動(dòng)作。相反,上述 具體特征和動(dòng)作是作為實(shí)現(xiàn)權(quán)利要求的示例形式公開的。本發(fā)明可具體化為其它具體形式而不背離其精神或本質(zhì)特征。所描述的實(shí)施例在 所有方面都應(yīng)被認(rèn)為僅是說明性而非限制性的。從而,本發(fā)明的范圍由所附權(quán)利要求書而 非前述描述指示。落入權(quán)利要求書的等效方案的含義和范圍內(nèi)的所有改變應(yīng)被權(quán)利要求書 的范圍所涵蓋。
權(quán)利要求
一種在計(jì)算機(jī)化環(huán)境的面向?qū)ο蟮南到y(tǒng)(100)中的方法,所述系統(tǒng)(100)包括使用對(duì)應(yīng)于基于不同數(shù)據(jù)形狀(135、140、145)的不同類型結(jié)構(gòu)的一個(gè)或多個(gè)數(shù)據(jù)元素的一個(gè)或多個(gè)應(yīng)用程序(120、125、130),所述方法使用公共數(shù)據(jù)結(jié)構(gòu)(110)來自動(dòng)向應(yīng)用程序提供對(duì)不同結(jié)構(gòu)類型的數(shù)據(jù)的訪問,以使得使用不同結(jié)構(gòu)類型的應(yīng)用程序可以互操作,所述方法包括以下動(dòng)作從應(yīng)用程序(120)接收(340)對(duì)由一個(gè)或多個(gè)不同的應(yīng)用程序(125、130)維護(hù)的數(shù)據(jù)(127、133)的一個(gè)或多個(gè)訪問請(qǐng)求(180),其中所請(qǐng)求的數(shù)據(jù)對(duì)應(yīng)于一個(gè)或多個(gè)不同的類型結(jié)構(gòu);標(biāo)識(shí)(350)對(duì)應(yīng)于所述一個(gè)或多個(gè)不同的應(yīng)用程序的一個(gè)或多個(gè)代理(165、170、175);使用所標(biāo)識(shí)的一個(gè)或多個(gè)代理來將所請(qǐng)求的數(shù)據(jù)映射(360)到公共數(shù)據(jù)結(jié)構(gòu)(110),其中所標(biāo)識(shí)的一個(gè)或多個(gè)代理創(chuàng)建將所請(qǐng)求的數(shù)據(jù)(127、133)映射到所述公共數(shù)據(jù)結(jié)構(gòu)(110)的映射數(shù)據(jù)結(jié)構(gòu)(195);以及將所述映射數(shù)據(jù)結(jié)構(gòu)(195)提供給作出請(qǐng)求的應(yīng)用程序。
2.如權(quán)利要求1所述的方法,其特征在于,所標(biāo)識(shí)的代理中的至少一個(gè)是由所述一個(gè) 或多個(gè)不同的應(yīng)用程序中的一個(gè)提供的。
3.如權(quán)利要求1所述的方法,其特征在于,所標(biāo)識(shí)的代理中的至少一個(gè)是由所述系統(tǒng) (100)提供給所述一個(gè)或多個(gè)不同的應(yīng)用程序中的一個(gè)的默認(rèn)代理。
4.如權(quán)利要求1所述的方法,其特征在于,還包括將所述公共數(shù)據(jù)結(jié)構(gòu)(110)中的多個(gè) 結(jié)構(gòu)類型中的一個(gè)分配給所請(qǐng)求的數(shù)據(jù)的動(dòng)作。
5.如權(quán)利要求4所述的方法,其特征在于,還包括在所述一個(gè)或多個(gè)不同的應(yīng)用程序 (125,130)中的每一個(gè)中為所請(qǐng)求的數(shù)據(jù)標(biāo)識(shí)一個(gè)或多個(gè)數(shù)據(jù)形狀(135、140、145)的動(dòng) 作。
6.如權(quán)利要求4所述的方法,其特征在于,所述公共數(shù)據(jù)結(jié)構(gòu)(110)包括對(duì)于操作的結(jié) 構(gòu)類型、對(duì)于序列的結(jié)構(gòu)類型、對(duì)于記錄的結(jié)構(gòu)類型、以及對(duì)于具有不可識(shí)別的數(shù)據(jù)形狀的 數(shù)據(jù)的結(jié)構(gòu)類型。
7.如權(quán)利要求6所述的方法,其特征在于,映射所請(qǐng)求的數(shù)據(jù)還包括以下動(dòng)作確定所述一個(gè)或多個(gè)數(shù)據(jù)形狀(135、140、145)中的一個(gè)數(shù)據(jù)形狀對(duì)應(yīng)于返回值的自 變量或函數(shù);以及將對(duì)應(yīng)于所述一個(gè)數(shù)據(jù)形狀(135)的所請(qǐng)求的數(shù)據(jù)分配到操作結(jié)構(gòu)類型。
8.如權(quán)利要求6所述的方法,其特征在于,映射所請(qǐng)求的數(shù)據(jù)還包括以下動(dòng)作確定所請(qǐng)求的數(shù)據(jù)中的至少某些數(shù)據(jù)對(duì)應(yīng)于未定義的數(shù)據(jù)形狀;以及將所述至少某些數(shù)據(jù)分配到對(duì)于未定義的數(shù)據(jù)形狀的結(jié)構(gòu)類型。
9.如權(quán)利要求6所述的方法,其特征在于,映射所請(qǐng)求的數(shù)據(jù)還包括確定所述一個(gè)或 多個(gè)數(shù)據(jù)形狀(135、140、145)中的一個(gè)對(duì)應(yīng)于值的集合的動(dòng)作。
10.如權(quán)利要求9所述的方法,其特征在于,還包括以下動(dòng)作確定所述值的集合不具有可標(biāo)識(shí)標(biāo)簽;以及將所述數(shù)據(jù)集合分配到序列結(jié)構(gòu)類型。
11.如權(quán)利要求9所述的方法,其特征在于,還包括以下動(dòng)作確定所述值的集合具有一個(gè)或多個(gè)可標(biāo)識(shí)標(biāo)簽;以及將所述數(shù)據(jù)集合分配到記錄結(jié)構(gòu)類型。
12.如權(quán)利要求1所述的方法,其特征在于,還包括以下動(dòng)作接收對(duì)所請(qǐng)求的數(shù)據(jù)中的至少某一些執(zhí)行一個(gè)或多個(gè)操作的一個(gè)或多個(gè)請(qǐng)求;以及通過所述映射數(shù)據(jù)結(jié)構(gòu)(195)來處理所述一個(gè)或多個(gè)操作。
13.—種在計(jì)算機(jī)化環(huán)境中的應(yīng)用程序(120)處的方法,所述計(jì)算機(jī)化環(huán)境包括面向 對(duì)象的系統(tǒng)(100)以及安裝在所述系統(tǒng)中的一個(gè)或多個(gè)應(yīng)用程序(120、125、130),所述應(yīng) 用程序?qū)崿F(xiàn)具有不同類型結(jié)構(gòu)的一個(gè)或多個(gè)數(shù)據(jù)元素,所述方法通過公共數(shù)據(jù)結(jié)構(gòu)(110) 訪問對(duì)應(yīng)于一個(gè)或多個(gè)不同類型結(jié)構(gòu)的數(shù)據(jù),所述方法包括以下動(dòng)作發(fā)送(300)對(duì)對(duì)應(yīng)于一個(gè)或多個(gè)不同類型結(jié)構(gòu)的數(shù)據(jù)(127、133)的一個(gè)或多個(gè)訪問請(qǐng)求;接收(310) —個(gè)或多個(gè)映射數(shù)據(jù)結(jié)構(gòu)(195),所述映射數(shù)據(jù)結(jié)構(gòu)(195)包括所述所請(qǐng)求 的數(shù)據(jù)和公共數(shù)據(jù)結(jié)構(gòu)(110)的一個(gè)或多個(gè)結(jié)構(gòu)類型之間的映射信息(210、220、230);請(qǐng)求(320)對(duì)所述一個(gè)或多個(gè)映射數(shù)據(jù)結(jié)構(gòu)(195)的一個(gè)或多個(gè)操作(200),其中所請(qǐng) 求的一個(gè)或多個(gè)動(dòng)作被轉(zhuǎn)換為所述一個(gè)或多個(gè)不同類型結(jié)構(gòu)的數(shù)據(jù)(127、133);以及接收(330)對(duì)對(duì)應(yīng)于所述一個(gè)或多個(gè)不同類型結(jié)構(gòu)的所請(qǐng)求的數(shù)據(jù)(127、133)的所請(qǐng) 求的一個(gè)或多個(gè)動(dòng)作已經(jīng)完成的一個(gè)或多個(gè)確認(rèn)。
14.如權(quán)利要求13所述的方法,其特征在于,所述一個(gè)或多個(gè)映射數(shù)據(jù)結(jié)構(gòu)(195)指示 所請(qǐng)求的數(shù)據(jù)(127、133)中的至少某一些包括一個(gè)或多個(gè)值的集合,其中所述集合被分配 到記錄結(jié)構(gòu)類型。
15.如權(quán)利要求16所述的方法,其特征在于,所述請(qǐng)求一個(gè)或多個(gè)操作的動(dòng)作(320)還 包括請(qǐng)求對(duì)應(yīng)于所述一個(gè)或多個(gè)值中的一個(gè)的記錄的改變;其中所述一個(gè)或多個(gè)確認(rèn)標(biāo)識(shí)所述改變是在所述記錄中完成的。
16.如權(quán)利要求13所述的方法,其特征在于,所述一個(gè)或多個(gè)映射數(shù)據(jù)結(jié)構(gòu)(195)指示 所請(qǐng)求的數(shù)據(jù)(127、133)中的至少某一些包括被分配到操作結(jié)構(gòu)類型的一個(gè)或多個(gè)函數(shù)。
17.如權(quán)利要求16所述的方法,其特征在于,所述請(qǐng)求一個(gè)或多個(gè)操作的動(dòng)作(320)還 包括請(qǐng)求對(duì)應(yīng)于所述操作結(jié)構(gòu)類型的一個(gè)或多個(gè)函數(shù)由維護(hù)所請(qǐng)求的數(shù)據(jù)(127、133)的 不同應(yīng)用程序(125、130)執(zhí)行;其中所述一個(gè)或多個(gè)確認(rèn)指示所述一個(gè)或多個(gè)函數(shù)已被執(zhí)行。
18.—種在計(jì)算機(jī)化環(huán)境的面向?qū)ο蟮南到y(tǒng)(100)中的計(jì)算機(jī)程序存儲(chǔ)產(chǎn)品,所述系 統(tǒng)(100)包括使用對(duì)應(yīng)于基于不同數(shù)據(jù)形狀(135、140、145)的不同類型結(jié)構(gòu)的一個(gè)或多個(gè) 數(shù)據(jù)元素的一個(gè)或多個(gè)應(yīng)用程序(120、125、130),在所述計(jì)算機(jī)程序存儲(chǔ)產(chǎn)品上存儲(chǔ)有計(jì) 算機(jī)可執(zhí)行指令,所述指令在被執(zhí)行時(shí)使所述系統(tǒng)中的一個(gè)或多個(gè)處理器執(zhí)行包括以下動(dòng) 作的方法從應(yīng)用程序(120)接收(340)對(duì)由一個(gè)或多個(gè)不同的應(yīng)用程序(125、130)維護(hù)的數(shù)據(jù) (127,133)的一個(gè)或多個(gè)訪問請(qǐng)求(180),其中所請(qǐng)求的數(shù)據(jù)對(duì)應(yīng)于一個(gè)或多個(gè)不同的類 型結(jié)構(gòu);標(biāo)識(shí)(350)對(duì)應(yīng)于所述一個(gè)或多個(gè)不同的應(yīng)用程序的一個(gè)或多個(gè)代理(165、170、 175);使用所標(biāo)識(shí)的一個(gè)或多個(gè)代理來將所請(qǐng)求的數(shù)據(jù)映射(360)到公共數(shù)據(jù)結(jié)構(gòu)(110), 其中所標(biāo)識(shí)的一個(gè)或多個(gè)代理創(chuàng)建將所請(qǐng)求的數(shù)據(jù)(127、133)映射到所述公共數(shù)據(jù)結(jié)構(gòu) (110)的映射數(shù)據(jù)結(jié)構(gòu)(195);以及將所述映射數(shù)據(jù)結(jié)構(gòu)(195)提供給作出請(qǐng)求的應(yīng)用程序。
全文摘要
可以使用一種公共數(shù)據(jù)類型結(jié)構(gòu)來對(duì)根據(jù)不同類型或類型結(jié)構(gòu)來實(shí)現(xiàn)數(shù)據(jù)的應(yīng)用程序之間的訪問請(qǐng)求進(jìn)行相關(guān)。在一個(gè)實(shí)現(xiàn)中,一種公共數(shù)據(jù)結(jié)構(gòu)包括操作、序列、記錄以及原子(即,未定義)的模式。然后,系統(tǒng)可以將任何類型結(jié)構(gòu)映射到公共數(shù)據(jù)結(jié)構(gòu)的模式。在操作中,應(yīng)用程序?qū)?shù)據(jù)的請(qǐng)求可以涉及標(biāo)識(shí)應(yīng)用程序用來將數(shù)據(jù)映射到公共數(shù)據(jù)結(jié)構(gòu)的一個(gè)或多個(gè)代理。這些代理基于數(shù)據(jù)的形狀(到可以標(biāo)識(shí)該數(shù)據(jù)的程度)來將數(shù)據(jù)映射到公共數(shù)據(jù)結(jié)構(gòu)。然后,這些代理可以返回包括所標(biāo)識(shí)的映射信息的一個(gè)或多個(gè)數(shù)據(jù)結(jié)構(gòu)。然后,應(yīng)用程序可以直接對(duì)接收到的數(shù)據(jù)結(jié)構(gòu)執(zhí)行操作。
文檔編號(hào)G06F9/06GK101952800SQ200980106917
公開日2011年1月19日 申請(qǐng)日期2009年1月23日 優(yōu)先權(quán)日2008年2月25日
發(fā)明者C·A·西澤伯斯基, C·L·安德爾森, D·F·伯克斯, J·R·威廉姆斯, J·S·品克斯頓, M·J·加金, Q·布拉德利 申請(qǐng)人:微軟公司