專利名稱:有效地關(guān)聯(lián)名義上不兼容的類型的制作方法
有效地關(guān)聯(lián)名義上不兼容的類型背景隨著計(jì)算機(jī)化系統(tǒng)的日益普及,在計(jì)算機(jī)化系統(tǒng)上使用的各種應(yīng)用程序和文檔也 日益普及。具體而言,現(xiàn)在有大量的被配置成用于任意數(shù)量的用途的應(yīng)用程序,無論是充 當(dāng)復(fù)雜的操作系統(tǒng)、數(shù)據(jù)庫等等,還是充當(dāng)被配置成用于狹窄用途的更加簡(jiǎn)單的應(yīng)用程序。 在很多情況下,軟件開發(fā)人員將使用任意數(shù)量的適當(dāng)?shù)木幊陶Z言,在考慮了特定操作系統(tǒng)/ 框架的情況下編寫新應(yīng)用程序。一旦軟件完成,開發(fā)人員就將該應(yīng)用程序編譯為代碼,該代 碼然后可以被安裝在帶有適當(dāng)操作系統(tǒng)的計(jì)算機(jī)系統(tǒng)上。在很多情況下,操作該新應(yīng)用程 序?qū)?huì)涉及與該系統(tǒng)/框架中的多個(gè)其他組件或應(yīng)用程序的交互操作。因此,可以理解,操作系統(tǒng)或通用框架的開發(fā)人員以及在該框架內(nèi)操作的各單獨(dú) 的應(yīng)用程序的開發(fā)人員常常必須考慮多個(gè)需要考慮的事項(xiàng)。這些興趣中的許多甚至?xí)歉?jìng) 爭(zhēng)性的。例如,許多應(yīng)用程序開發(fā)人員可能具有涉及快速和可自定義的操作的興趣,而許多 操作系統(tǒng)/框架開發(fā)人員可能具有涉及安全性和穩(wěn)定性的興趣。在某些情況下,安全性和 穩(wěn)定性要求會(huì)限制某些應(yīng)用程序操作方式的速度和可自定義性。這種緊張關(guān)系會(huì)變得顯而易見的一個(gè)領(lǐng)域是對(duì)于特定種類的“類型框架”。在類型 框架中,函數(shù)、自變量、甚至數(shù)據(jù)值都可以與一般定義了在另一個(gè)應(yīng)用程序或組件可以訪問 /處理各種數(shù)據(jù)之前對(duì)應(yīng)的數(shù)據(jù)(即,函數(shù)、自變量或值)必須是什么樣子的特定“類型”相 關(guān)聯(lián)。在使用強(qiáng)類型框架的系統(tǒng)中,可以配置該框架以便使用一種類型框架的應(yīng)用程序或 組件被禁止執(zhí)行或訪問對(duì)應(yīng)于其他類型框架的函數(shù)和數(shù)據(jù)。一些示例框架包括名義(即, 指名)和結(jié)構(gòu)類型框架,但也可有許多不同種類的類型框架。一般而言,可以配置名義(即,指名)類型框架以便一個(gè)名義類型中的數(shù)據(jù)只能訪 問使用完全相同類型名(是相同的名義類型)的其他數(shù)據(jù)(或該其他數(shù)據(jù)訪問),或以其他 方式訪問在創(chuàng)建/編譯時(shí)它所了解的類型名(被該類型名訪問),反之亦然。如此,如果稱 為“customer record(客戶記錄)”的類型和稱為“member record(成員記錄)”的類型不 知道彼此,則即使類型結(jié)構(gòu)可能是相同的,使用“customer record”的類型名的一個(gè)應(yīng)用程 序也可能被禁止訪問由另一個(gè)應(yīng)用程序進(jìn)行管理的“member record”的類型名下的類似數(shù) 據(jù)。例如,在客戶記錄(customer record)和成員記錄(member record)的名義類型兩者都 包括相等數(shù)量和種類的字段的情況下(例如,一個(gè)集合,包括第一名稱= “String(串),,, 且第二名稱=“string”,等等),可能會(huì)發(fā)生結(jié)構(gòu)等同。相反,結(jié)構(gòu)類型框架依賴于數(shù)據(jù)結(jié) 構(gòu)或形狀之間的匹配,而不是名稱之間的匹配。盡管結(jié)構(gòu)類型不限于不精確的類型名,但 是,當(dāng)這些類型之一比另一類型包括更多或不同種類的結(jié)構(gòu)/形狀時(shí)(例如,成員記錄包括 第一名稱=“string”,第二名稱="string",以及電話號(hào)碼=值),會(huì)產(chǎn)生結(jié)構(gòu)不匹配。對(duì)于包括名義和結(jié)構(gòu)類型的各種不同類型之間的不匹配,常常有各種變通方法使 得應(yīng)用程序可以進(jìn)行互操作。例如,在名義類型框架內(nèi),開發(fā)人員可以為每一個(gè)所感興趣的 應(yīng)用程序編寫將一種名義類型中的類型結(jié)構(gòu)映射到或轉(zhuǎn)換到另一種名義類型中的等同類 型結(jié)構(gòu)的新代碼。雖然不匹配的類型結(jié)構(gòu)之間的類似變通方法也是可以的,但是,這樣的結(jié) 構(gòu)類型轉(zhuǎn)換往往更加復(fù)雜。例如,Lisp編程語言實(shí)現(xiàn)了一種通用的常規(guī)結(jié)構(gòu)類型框架,其
5中基本結(jié)構(gòu)是數(shù)據(jù)對(duì)。因此,為使用另一個(gè)應(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)換成另一個(gè)應(yīng)用程序中的另一個(gè)類型結(jié)構(gòu)。這 不僅對(duì)于數(shù)據(jù)在Lisp中的安排方式的差異而言是正確的,而且還因?yàn)樵跊]有對(duì)數(shù)據(jù)對(duì)進(jìn) 行從計(jì)算上來說昂貴的完整遍歷的情況下常常難以查明Lisp數(shù)據(jù)對(duì)的值。這部分地因?yàn)?Lisp數(shù)據(jù)對(duì)往往不經(jīng)由基本查詢提供非常多的信息,除數(shù)據(jù)對(duì)是“序列”之外。然而,Lisp 編程框架不是對(duì)于不同的類型結(jié)構(gòu)表現(xiàn)出問題的唯一語言。各自使用它們自己的不同類型 框架的其他常見的語言包括XML、SQL、. NET以及JAVA,并且互操作常常意味著某種類型轉(zhuǎn) 換。因此,確保應(yīng)用程序之間的互操作性的一種方式是在適當(dāng)時(shí)在類似的平臺(tái)上工作 的應(yīng)用程序開發(fā)人員預(yù)先就名義和/或類型的細(xì)節(jié)取得一致。當(dāng)然,這樣的嚴(yán)格而精確的 一致并不總是可能的,并向創(chuàng)建稍后將在同一系統(tǒng)中使用的組件的其他開發(fā)人員提供很小 的靈活性。因此,開發(fā)人員常常最后嘗試(如前所述)編寫將較新的應(yīng)用程序類型中的數(shù) 據(jù)轉(zhuǎn)換或以其他方式映射到另一個(gè)應(yīng)用程序類型中的數(shù)據(jù)的一個(gè)或多個(gè)接口。例如,編寫 以一種類型框架編寫的應(yīng)用程序的開發(fā)人員可能必須為以Lisp編程語言編寫的其他應(yīng)用 程序編寫一個(gè)適配器,和/或可能還必須為以XML、SQL、. NET以及JAVA編程語言中的每一 個(gè)編寫的應(yīng)用程序編寫單獨(dú)的適配器??梢岳斫?,這意味著,新應(yīng)用程序的開發(fā)人員必須知道(或了解)其他程序中所使 用的類型。在考慮較少應(yīng)用程序的情況下,此問題就可能較不方便。然而,更為普遍的是, 對(duì)于許多開發(fā)人員來說,這種情形的問題呈指數(shù)級(jí)增長(zhǎng),特別是因?yàn)樵谙到y(tǒng)上使用類似或 相同種類的數(shù)據(jù)(例如,成員資格記錄、函數(shù)等等)的應(yīng)用程序的數(shù)量會(huì)增長(zhǎng)。此問題會(huì)因 為各應(yīng)用程序中的每一個(gè)都會(huì)變化或進(jìn)行各種升級(jí),這可能會(huì)導(dǎo)致類型名和/或結(jié)構(gòu)的更 進(jìn)一步變化,而變得更加嚴(yán)重。其他人已經(jīng)嘗試解決這種問題的又一種方式是利用“寬松的”或動(dòng)態(tài)的類型確定。 有了寬松的或動(dòng)態(tài)的類型確定,較新的應(yīng)用程序不必一定要精確理解先前存在的應(yīng)用程序 中的類型名或結(jié)構(gòu)。相反,各應(yīng)用程序組件可以在運(yùn)行時(shí)確定在類型結(jié)構(gòu)/形狀之間是否 有完全匹配,然后在運(yùn)行時(shí)映射這些類型形狀。不幸的是,動(dòng)態(tài)的或?qū)捤傻念愋痛_定沒有解 決當(dāng)所感興趣的項(xiàng)在結(jié)構(gòu)上類似但不相同時(shí)要做什么的問題。此外,或許更重要的是,由于 應(yīng)用程序進(jìn)行的對(duì)于強(qiáng)類型確定或名義類型確定系統(tǒng)往往不明顯的運(yùn)行時(shí)檢查,動(dòng)態(tài)的或 寬松的類型確定往往導(dǎo)致嚴(yán)重的性能和安全性損失。因此,有許多可以解決的與訪問和使用類型框架中的函數(shù)或數(shù)據(jù)相關(guān)聯(lián)的困難。簡(jiǎn)要概述本發(fā)明的實(shí)現(xiàn)提供被配置成在不必需要開發(fā)人員為名義類型框架中每一個(gè)不同 的應(yīng)用程序創(chuàng)建新的且不同的對(duì)應(yīng)插件或適配器的情況下有效地將該名義類型框架中的 多個(gè)不同類型之間的數(shù)據(jù)進(jìn)行相關(guān)的系統(tǒng)、方法以及計(jì)算機(jī)程序產(chǎn)品。具體而言,本發(fā)明的 實(shí)現(xiàn)允許開發(fā)人員使用基于所感興趣的一個(gè)或多個(gè)應(yīng)用程序之間的一組通用類型形狀的 單個(gè)中間類型。本發(fā)明的實(shí)現(xiàn)還包括一個(gè)或多個(gè)代理,這些代理可以被所感興趣的各種應(yīng) 用程序使用并以其他方式與所感興趣的各種應(yīng)用程序進(jìn)行接口,并將不同類型中的類型形 狀/結(jié)構(gòu)映射到該中間類型中所定義的通用類型形狀/結(jié)構(gòu)。
6
例如,根據(jù)本發(fā)明的實(shí)現(xiàn)的一種方法可以涉及標(biāo)識(shí)應(yīng)用程序所使用的目標(biāo)類型的 一個(gè)或多個(gè)所需類型形狀。該方法還可以涉及標(biāo)識(shí)具有對(duì)應(yīng)的一個(gè)或多個(gè)名義上不兼容的 源類型的一個(gè)或多個(gè)不同的應(yīng)用程序,所述名義上不兼容的源類型包括目標(biāo)類型的一個(gè)或 多個(gè)所需類型形狀。另外,該方法還可以涉及接收使用該目標(biāo)類型執(zhí)行該應(yīng)用程序的一個(gè) 或多個(gè)指令。此外,該方法還可以涉及,在執(zhí)行了該應(yīng)用程序之后,使用一個(gè)或多個(gè)自動(dòng)生 成的代理來處理該應(yīng)用程序作出的對(duì)與名義上不兼容的類型中的所需類型形狀相關(guān)聯(lián)的 數(shù)據(jù)的一個(gè)或多個(gè)訪問請(qǐng)求。另外,根據(jù)本發(fā)明的實(shí)現(xiàn)的另一或替換的方法可以涉及標(biāo)識(shí)安裝在系統(tǒng)中的應(yīng)用 程序所使用的類型的一個(gè)或多個(gè)所需類型形狀。該方法還可以涉及標(biāo)識(shí)一個(gè)或多個(gè)不同的 應(yīng)用程序所使用的一個(gè)或多個(gè)名義上不兼容的類型中的一個(gè)或多個(gè)所需類型形狀。另外, 該方法還可以涉及自動(dòng)生成包括應(yīng)用程序所使用的類型的表示的中間類型。此外,該方法 還可以涉及自動(dòng)生成將一個(gè)或多個(gè)名義上不兼容的類型的一個(gè)或多個(gè)所需類型形狀與所 生成的中間類型進(jìn)行相關(guān)的一個(gè)或多個(gè)代理。提供本概述是為了以精簡(jiǎn)的形式介紹將在以下詳細(xì)描述中進(jìn)一步描述的一些概 念。本概述不旨在標(biāo)識(shí)所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于幫助確定 所要求保護(hù)的主題的范圍。本發(fā)明的附加特征和優(yōu)點(diǎn)將在隨后的描述中闡述,并且部分地將從本說明書中顯 而易見,或可以通過本發(fā)明的實(shí)施來獲知。本發(fā)明的特征和優(yōu)點(diǎn)可以通過在所附權(quán)利要求 書中特別指出的手段和它們的組合來實(shí)現(xiàn)和獲得。通過下面的描述和所附權(quán)利要求書,本 發(fā)明的這些及其他特征將變得顯而易見,或者可以通過如下面所描述的對(duì)本發(fā)明的實(shí)施來 獲知。附圖
簡(jiǎn)述為了描述可以獲得本發(fā)明的上文所列舉的及其他優(yōu)點(diǎn)和特征的方式,將通過參考 附圖中所示的本發(fā)明的各具體實(shí)施例來呈現(xiàn)上文簡(jiǎn)要描述的本發(fā)明的更具體的描述??梢?理解,這些附圖只描繪了本發(fā)明的各典型實(shí)施例,并且因此不被認(rèn)為是對(duì)其范圍的限制,將 通過使用附圖并利用附加特征和細(xì)節(jié)來描述和解釋本發(fā)明,在附圖中圖IA示出了根據(jù)本發(fā)明的一實(shí)現(xiàn)的名義類型框架的概要示意圖;圖IB示出了根據(jù)本發(fā)明的一實(shí)現(xiàn)的其中創(chuàng)建一個(gè)或多個(gè)數(shù)據(jù)結(jié)構(gòu)以映射名義上 不兼容的類型中的類型形狀的概要示意圖;圖2示出了根據(jù)本發(fā)明的一實(shí)現(xiàn)的包括用于處理名義上不兼容的類型之間的請(qǐng) 求的方法中的一系列動(dòng)作的流程圖;以及圖3示出了根據(jù)本發(fā)明的一實(shí)現(xiàn)的包括用于生成被用來映射名義上不兼容的類 型的一個(gè)或多個(gè)數(shù)據(jù)結(jié)構(gòu)的方法中的一個(gè)或多個(gè)動(dòng)作的流程圖。詳細(xì)描述本發(fā)明的實(shí)現(xiàn)延及被配置成在不必需要開發(fā)人員為名義類型框架中每一個(gè)不同 的應(yīng)用程序創(chuàng)建新的且不同的對(duì)應(yīng)插件或適配器的情況下有效地將名義類型框架中的多 個(gè)不同類型之間的數(shù)據(jù)進(jìn)行相關(guān)的系統(tǒng)、方法以及計(jì)算機(jī)程序產(chǎn)品。具體而言,本發(fā)明的實(shí) 現(xiàn)允許開發(fā)人員使用基于所感興趣的一個(gè)或多個(gè)應(yīng)用程序之間的一組通用類型形狀的單 個(gè)中間類型。本發(fā)明的實(shí)現(xiàn)還包括一個(gè)或多個(gè)代理,這些代理可以被所感興趣的各種應(yīng)用程序使用并以其他方式與所感興趣的各種應(yīng)用程序進(jìn)行接口,并將不同類型中的類型形狀 /結(jié)構(gòu)映射到中間類型中所定義的通用類型形狀/結(jié)構(gòu)。因此,并且如此處將更加全面地理解的,本發(fā)明的實(shí)現(xiàn)提供用于將符合一個(gè)接口 的源類型實(shí)例有效地轉(zhuǎn)換成符合另一個(gè)接口的并且只有知道該類型接口的軟件才能進(jìn)行 使用的目標(biāo)類型實(shí)例的一個(gè)或多個(gè)機(jī)制。一般而言,使用該接口的軟件或者調(diào)用第一接口 到第二接口的轉(zhuǎn)換的軟件都不需要知道初始接口。如此處將更加全面地理解的,不同的接 口可以來自于不同類型系統(tǒng),如CLR(公共語言運(yùn)行時(shí))類型、結(jié)構(gòu)化值、或XML(可擴(kuò)展標(biāo) 記語言)模式等等。如此,本發(fā)明的實(shí)現(xiàn)允許軟件與以不熟悉的格式提供數(shù)據(jù)的組件進(jìn)行 互操作,并利用需要符合該軟件最初沒有被設(shè)計(jì)來產(chǎn)生的模式的數(shù)據(jù)的框架。圖IA示出了根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)現(xiàn)的可被使用的名義類型框架100的概 要示意圖。如圖所示,圖IA示出了其中安裝了若干不同的應(yīng)用程序103、105、以及107的名 義類型框架100。每一應(yīng)用程序又使用與另一個(gè)應(yīng)用程序的名義類型在名義上不兼容的名 義類型。例如,圖IA示出了應(yīng)用程序103正在使用名義類型“A”110(或以其他方式根據(jù)名 義類型“A”110進(jìn)行配置)。如圖所示,類型名A 110包括具有元素115、117以及119的一 個(gè)或多個(gè)類型形狀113。作為說明,名義類型A可以表示任何數(shù)量或種類的數(shù)據(jù),包括函數(shù)、自變量或者甚 至與記錄相關(guān)聯(lián)的串。例如,名義類型A可以定義客戶記錄,和/或用于處理數(shù)據(jù)庫程序中 的客戶數(shù)據(jù)的一個(gè)或多個(gè)函數(shù)。在客戶記錄的情況下,類型形狀113的元素115可以包括 表示基于名字的串的字段,而元素117可以包括表示基于姓氏的串的字段。元素119又可 以包括表示基于地址字段的串或可能要對(duì)其進(jìn)行求值的函數(shù)(例如,根據(jù)生日串計(jì)算出的 年齡值)的另一個(gè)字段。如此,在某一記錄的情況下,元素115、117和119中的每一個(gè)可以 包括帶有更進(jìn)一步的底層數(shù)據(jù)和數(shù)據(jù)格式要求的某種字段名稱。與應(yīng)用程序103對(duì)比,圖IA還示出了應(yīng)用程序105是基于名義類型“B” 120配置 的,以及應(yīng)用程序107是基于名義類型“C” 130配置的。然而,名義類型B和C除在名義上 不兼容以外,還包括與名義類型A的類型形狀113相比不同的類型形狀123和130。例如, 圖IA示出了類型名B120的類型形狀123包括元素115和117,但至于元素125卻與類型形 狀113不同。類似地,圖IA示出了名義類型C被配置成具有就元素135而言不同的類型形 狀 133。在多種情況下,在不同的應(yīng)用程序或組件中,這樣的相似和不同可能同時(shí)變得明 顯。例如,應(yīng)用程序103、105和107可以各自包括使用客戶記錄的不同的數(shù)據(jù)庫應(yīng)用程序, 但是可能將4各客戶記錄字段不同地進(jìn)行關(guān)聯(lián)。例如,類型形狀123中的元素125可以表 示客戶的唯一標(biāo)識(shí)符的字段,而類型形狀133中的元素135可以包括數(shù)字簽名字段。盡管名義類型之間具有這些各種結(jié)構(gòu)/形狀差異,但是本發(fā)明的實(shí)現(xiàn)允許應(yīng)用程 序103、105和/或107使用名義類型框架100中的一個(gè)或多個(gè)組件進(jìn)行互操作。如以下 將更加全面地理解的,名義類型框架100可以包括被配置成在運(yùn)行時(shí)之前標(biāo)識(shí)從一個(gè)應(yīng)用 程序到下一應(yīng)用程序正在使用什么類型名以及對(duì)應(yīng)的類型形狀的一個(gè)或多個(gè)組件或模塊。 在運(yùn)行時(shí)期間,名義類型框架100允許各種應(yīng)用程序啟動(dòng)一個(gè)或多個(gè)代理,這些代理簡(jiǎn)單 地將結(jié)構(gòu)元素從一個(gè)名義類型映射到下一名義類型,從而使應(yīng)用程序之間的互操作成為可 能,而不管是在使用名義上不兼容的類型。
圖IA示出了名義類型框架100包括可以被配置成分析和/或檢查應(yīng)用程序中的 名義類型的處理模塊140。例如,圖IA示出了處理模塊140從應(yīng)用程序103接收關(guān)于使用 包括元素115和117的類型形狀113的指示(S卩,消息150)。類似地,應(yīng)用程序103中的一 個(gè)或多個(gè)接口可以對(duì)來自處理模塊140的對(duì)類型名、結(jié)構(gòu)和/或?qū)?yīng)的函數(shù)的標(biāo)識(shí)的請(qǐng)求 作出響應(yīng)。在附加或替換實(shí)現(xiàn)中,應(yīng)用程序103簡(jiǎn)單地通過可以被處理模塊140訪問一個(gè) 或多個(gè)接口來發(fā)布信息。在又一些附加或替換實(shí)現(xiàn)中,處理模塊140在各種時(shí)間或在應(yīng)用 程序103中(或系統(tǒng)中的另一個(gè)應(yīng)用程序中)安裝任何組件或更新的任何時(shí)間,對(duì)應(yīng)用程 序103 (以及105、107,等等)進(jìn)行深入檢查??梢岳斫?,處理模塊140可以在安裝的任何時(shí)候并且甚至在運(yùn)行時(shí)與各種應(yīng)用程 序進(jìn)行這些通信和/或?qū)λ鼈儓?zhí)行這些檢查。例如,每當(dāng)安裝應(yīng)用程序時(shí)或用應(yīng)用程序安 裝組件時(shí),名義類型框架100都可以啟動(dòng)處理模塊140以與該應(yīng)用程序通信或分析該應(yīng)用 程序來標(biāo)識(shí)正在使用的所有類型。此外,處理模塊140可以在運(yùn)行時(shí)期間在啟動(dòng)應(yīng)用程序 103時(shí)執(zhí)行這些檢查。無論是如何被執(zhí)行的,每一應(yīng)用程序只是總直接與名義類型框架100 進(jìn)行交互,并且因此不必執(zhí)行其自己的類型評(píng)估和映射。在任何情況下,名義類型框架100能以任意數(shù)量的不同的方式來維護(hù)各種類型信 息。例如,圖IA示出了處理模塊140準(zhǔn)備包括應(yīng)用程序103、105和107中的各名義類型之 間的類型形狀中的一組關(guān)系的一組結(jié)果160。在生成結(jié)果160后,名義框架100可以被配置 成將結(jié)果160傳遞到存儲(chǔ)中的一個(gè)或多個(gè)注冊(cè)表(未示出)。在附加或替換實(shí)現(xiàn)中,名義類 型框架100還可以或者另選地被配置成加載一個(gè)或多個(gè)注冊(cè)表來作為各種數(shù)據(jù)結(jié)構(gòu),如每 當(dāng)給定應(yīng)用程序啟動(dòng)時(shí)都被重新創(chuàng)建的存儲(chǔ)器內(nèi)數(shù)據(jù)結(jié)構(gòu)。簡(jiǎn)言之,有大量的機(jī)制用于根 據(jù)需要檢查、相關(guān)、存儲(chǔ)以及檢索各種相互關(guān)系。在任何情況下,圖IA示出了處理模塊140標(biāo)識(shí)(例如,結(jié)果160)在應(yīng)用程序103、 105以及107的不同的名義上不兼容的類型A、B以及C之間通用的各種類型形狀。具體而 言,圖IA示出了處理模塊140標(biāo)識(shí)了名義類型A、B以及C中的每一個(gè)包括諸如在消息150 中請(qǐng)求的元素115和117。然后,名義類型框架100可以使用這些結(jié)果160來生成映射不同 的名義類型的運(yùn)行時(shí)數(shù)據(jù)結(jié)構(gòu),并且因此便于應(yīng)用程序之間的至少一些互操作。例如,圖IB示出了其中名義類型框架100在運(yùn)行時(shí)將這些各種名義類型形狀113、 123以及133進(jìn)行相關(guān)的示意圖。如下面將更加全面地理解的,名義類型框架100通過一 個(gè)或多個(gè)臨時(shí)的運(yùn)行時(shí)數(shù)據(jù)結(jié)構(gòu)將這些類型形狀113、123以及133進(jìn)行相關(guān)。例如,圖IB 示出了處理模塊140從應(yīng)用程序103接收?qǐng)?zhí)行或以其他方式啟動(dòng)涉及名義類型A 110的 函數(shù)的一個(gè)或多個(gè)請(qǐng)求153。在執(zhí)行時(shí)(運(yùn)行時(shí)),處理模塊140隨后以臨時(shí)的新名義類 型“A”155的形式創(chuàng)建中間數(shù)據(jù)結(jié)構(gòu)。一般而言,此中間的名義類型A包括臨時(shí)類型形狀 113a,該臨時(shí)類型形狀113a可以包括所生成的包含以前標(biāo)識(shí)的通用類型形狀(S卩,元素115 和117)的存儲(chǔ)器內(nèi)形狀。然后,處理模塊140生成將中間名義類型155映射到其他應(yīng)用程序105、107等等 中的每一個(gè)中的名義類型的一個(gè)或多個(gè)運(yùn)行時(shí)代理。例如,圖IB示出了處理模塊140生成 包括一個(gè)或多個(gè)映射表的代理165,這些映射表經(jīng)由元素115和117的映射示出了名義類型 155和名義類型120之間的類型形狀的關(guān)系。類似地,圖IB示出了處理模塊140生成包括 一個(gè)或多個(gè)映射表的代理170,這些映射表經(jīng)由元素115和117的映射示出了名義類型155
9和名義類型130之間的類型形狀的關(guān)系。總而言之,有多種方式可以自動(dòng)生成這些各種代理165、170等等。例如,在大多數(shù) 情況下,在名義類型框架100內(nèi)包括了用來創(chuàng)建代理165和170的代碼(例如,作為中間語 言代碼),該代碼可以在運(yùn)行時(shí)由給定應(yīng)用程序103、105等等編譯或以其他方式調(diào)用。在 這樣的情況下,給定應(yīng)用程序的開發(fā)人員只需要包括個(gè)對(duì)名義類型框架100的一個(gè)或多引 用,從而請(qǐng)求訪問用于映射名義類型的可用默認(rèn)代理中的一個(gè)或多個(gè)。然而,在附加或替換 實(shí)現(xiàn)中,應(yīng)用程序103、105、107還可以配置有給定應(yīng)用程序在運(yùn)行時(shí)提供給名義類型框架 100的常駐代理代碼。然而,名義類型框架100最終執(zhí)行相關(guān)代理代碼,并在適當(dāng)時(shí)配置給定代理來進(jìn) 行所請(qǐng)求的執(zhí)行。即,在運(yùn)行時(shí)將每一代理配置成包括一個(gè)或多個(gè)接口,這些接口不僅用于 與名義類型框架100進(jìn)行接口(例如,經(jīng)由處理模塊140),而且還用于直接與給定應(yīng)用程 序進(jìn)行接口并實(shí)現(xiàn)由另一個(gè)應(yīng)用程序所作出的一個(gè)或多個(gè)執(zhí)行/訪問請(qǐng)求。例如,應(yīng)用程 序103可以傳遞一個(gè)或多個(gè)不同的請(qǐng)求以訪問或以其他方式處理應(yīng)用程序105中所維護(hù)的 作為名義類型120的一部分的函數(shù)或數(shù)據(jù)或應(yīng)用程序107中的作為名義類型130的一部分 的數(shù)據(jù)。只要應(yīng)用程序103請(qǐng)求訪問涉及元素115的數(shù)據(jù)元素,則處理模塊140將使用代 理165、170簡(jiǎn)單地通過各種數(shù)據(jù)結(jié)構(gòu)來映射這些請(qǐng)求,代理165、170隨后處理對(duì)相關(guān)應(yīng)用 程序數(shù)據(jù)(例如,存儲(chǔ)中的)的改變。在類型110、120以及130涉及客戶記錄的情況下,例如,應(yīng)用程序103可請(qǐng)求對(duì)由 應(yīng)用程序105進(jìn)行管理的記錄進(jìn)行改變,以便特定記錄中的名字(例如,由元素115表示) 從“John”變?yōu)椤癑ack”。然后,處理模塊140可以標(biāo)識(shí)此特定改變請(qǐng)求涉及中間類型形狀 113a中的元素115,并通過代理165來處理該數(shù)據(jù)改變請(qǐng)求(因?yàn)閼?yīng)用程序105被命名)。 類似地,應(yīng)用程序103可以接下來請(qǐng)求對(duì)由應(yīng)用程序107進(jìn)行管理的記錄進(jìn)行改變,以便特 定記錄中的姓氏(例如,由元素117表示)從“Brown”變?yōu)椤癝mith”。然后,處理模塊140 可以標(biāo)識(shí)此特定改變請(qǐng)求涉及中間類型形狀113a中的元素117,并通過代理170來處理該 數(shù)據(jù)改變請(qǐng)求(因?yàn)閼?yīng)用程序107被命名)。如此,即使名義類型(以及在某種程度上,名 義類型形狀)在一個(gè)應(yīng)用程序與另一個(gè)應(yīng)用程序之間不同,名義框架100也不會(huì)拒絕應(yīng)用 程序103作出的請(qǐng)求。此外,圖IB示出了本發(fā)明對(duì)于后端存儲(chǔ)180的另一可能實(shí)現(xiàn)。具體而言,可以使用 本發(fā)明的實(shí)現(xiàn)來基于中間名義類型A生成新記錄,其中還沒有決定該新記錄將去哪里。例 如,并與上文所描述的示例中的簡(jiǎn)單地改變客戶記錄相對(duì),應(yīng)用程序103可以創(chuàng)建最終被 置于應(yīng)用程序105和107的數(shù)據(jù)存儲(chǔ)中的一個(gè)或多個(gè)中的新客戶記錄。然而,為使用此特定功能,圖IB示出了處理模塊140還創(chuàng)建供在后端存儲(chǔ)180中 使用的名義類型185,并且還創(chuàng)建一個(gè)或多個(gè)代理175。如代理165和170 —樣,代理175被 用來將名義類型155中的類型形狀113a的元素映射到名義類型185的元素。當(dāng)然,由于新 名義類型185是由名義類型框架創(chuàng)建的,因此新名義類型185可能包括與已經(jīng)為中間名義 類型155創(chuàng)建的那些類型形狀相同的類型形狀。如此,例如,如果應(yīng)用程序103請(qǐng)求在應(yīng)用 程序105、107 (以及,可能甚至應(yīng)用程序103)中的任何一個(gè)中使用新記錄,則處理模塊140 可以經(jīng)由代理175處理這樣的請(qǐng)求(以及其對(duì)應(yīng)的更新)。因此,圖IA和IB示出了允許使用不同的名義上不兼容的類型的應(yīng)用程序在需要時(shí)仍能彼此進(jìn)行交互并仍能訪問由每一應(yīng)用程序進(jìn)行管理的底層數(shù)據(jù)的多個(gè)不同的組件 和示意圖。如上文所提及的,這樣的互操作性主要依賴于在不同的名義類型之間的類型形 狀/類型結(jié)構(gòu)中存在相似性的概念。如此,開發(fā)人員不必一定關(guān)心系統(tǒng)中的其他應(yīng)用程序 所使用的不同名義類型中的每一個(gè),并且在大多數(shù)情況下可以推遲對(duì)系統(tǒng)的這種類型不兼 容性的處理。除前面的內(nèi)容之外,也可以根據(jù)包括用于實(shí)現(xiàn)特定結(jié)果的方法中的一個(gè)或多個(gè)動(dòng) 作的流程圖來描述本發(fā)明的實(shí)現(xiàn)。例如,圖2示出了包括用于使用名義上不兼容的類型中 的所需數(shù)據(jù)結(jié)構(gòu)來處理由應(yīng)用程序作出的一個(gè)或多個(gè)訪問請(qǐng)求的一系列動(dòng)作的流程圖。此 外,圖3示出了用于自動(dòng)生成被用來將名義上不兼容的類型進(jìn)行相關(guān)以使它們可以一起使 用的一個(gè)或多個(gè)數(shù)據(jù)結(jié)構(gòu)的方法中的動(dòng)作的流程圖。下面將結(jié)合圖IA和IB的組件和示圖 來描述圖2和3的動(dòng)作。例如,圖2示出了根據(jù)本發(fā)明的方法可以包括標(biāo)識(shí)目標(biāo)類型中的所需類型形狀的 動(dòng)作200。動(dòng)作200包括標(biāo)識(shí)應(yīng)用程序所使用的目標(biāo)類型的一個(gè)或多個(gè)所需類型形狀。例 如,如圖IA所示,處理模塊140接收關(guān)于使用包括元素115和117的類型形狀的請(qǐng)求(或 通信)150。在這樣的情況下,元素115和117可以構(gòu)成所需類型元素的集合,這些類型元素 必須在其他名義類型中是通用的以使應(yīng)用程序103能夠與可能使用名義上不兼容的類型 的其他應(yīng)用程序進(jìn)行互操作。圖2還示出了根據(jù)本發(fā)明的方法可以包括標(biāo)識(shí)名義上不兼容的類型中的所需類 型形狀的動(dòng)作210。動(dòng)作210包括標(biāo)識(shí)具有對(duì)應(yīng)的一個(gè)或多個(gè)名義上不兼容的源類型的一 個(gè)或多個(gè)不同的應(yīng)用程序,所述名義上不兼容的源類型包括目標(biāo)類型的一個(gè)或多個(gè)所需類 型形狀。例如,如圖IA所示,處理模塊140與應(yīng)用程序105和107進(jìn)行交互以標(biāo)識(shí)不同類 型形狀123和133,而類型形狀123和133又具有與類型形狀113的元素類似或相同的至少 一些類型元素115和117。另外,圖2示出了該方法可以包括接收應(yīng)用程序執(zhí)行指令的動(dòng)作220。動(dòng)作220包 括接收使用目標(biāo)類型執(zhí)行應(yīng)用程序的一個(gè)或多個(gè)指令。例如,如圖IB所示,處理模塊140 接收?qǐng)?zhí)行應(yīng)用程序103的請(qǐng)求153,諸如例如當(dāng)在運(yùn)行時(shí)啟動(dòng)應(yīng)用程序時(shí)。此外,圖2示出了根據(jù)本發(fā)明的方法可以包括使用自動(dòng)創(chuàng)建的代理來處理名義上 不兼容的類型之間的請(qǐng)求的動(dòng)作230。動(dòng)作230包括在執(zhí)行應(yīng)用程序之后,使用一個(gè)或多個(gè) 自動(dòng)生成的代理來處理該應(yīng)用程序?qū)γx上不兼容類型中的所需類型形狀的一個(gè)或多個(gè) 訪問請(qǐng)求。例如,圖IB示出了處理模塊140在運(yùn)行時(shí)創(chuàng)建了代理165和代理170,這些代理 165和代理170相應(yīng)地將中間名義類型155的類型形狀匹配到名義類型120和130。除前面的內(nèi)容之外,圖3示出了根據(jù)本發(fā)明的實(shí)現(xiàn)的用于生成映射名義上不兼容 的類型的一個(gè)或多個(gè)數(shù)據(jù)結(jié)構(gòu)的附加或替換方法的流程圖。具體而言,圖3示出了該附加 或替換方法可以包括標(biāo)識(shí)應(yīng)用程序所使用的類型中的所需類型形狀的動(dòng)作300。動(dòng)作300 包括標(biāo)識(shí)安裝在系統(tǒng)中的應(yīng)用程序所使用的類型的一個(gè)或多個(gè)所需類型形狀。例如,圖IA 示出了處理模塊140例如經(jīng)由消息150標(biāo)識(shí)應(yīng)用程序103可以與使用與名義類型110中的 類型形狀113的元素115和117類似或相同的元素的其他應(yīng)用程序進(jìn)行互操作。圖3還示出了該方法可以包括標(biāo)識(shí)不同的名義上不兼容的類型中的所需類型形 狀的動(dòng)作310。動(dòng)作310包括標(biāo)識(shí)一個(gè)或多個(gè)不同的應(yīng)用程序所使用的一個(gè)或多個(gè)名義上
11不兼容的類型中的一個(gè)或多個(gè)所需類型結(jié)構(gòu)。例如,圖IA示出了處理模塊140與應(yīng)用程序 105和107進(jìn)行交互以例如經(jīng)由結(jié)果160來標(biāo)識(shí)名義類型B和C(120和130)也包括帶有對(duì) 應(yīng)于名義類型A(IlO)中的元素115和117的元素的類型形狀。另外,圖3示出了該方法可以包括自動(dòng)生成中間類型的動(dòng)作320。動(dòng)作320包括 自動(dòng)生成包括應(yīng)用程序所使用的類型的表示的中間類型。例如,圖IB示出了處理模塊創(chuàng)建 包括類型形狀113a的中間名義類型155。類型形狀113a又可以包括其中包括了元素115 和117的數(shù)據(jù)結(jié)構(gòu),諸如以上在消息150中所指出的。在一個(gè)實(shí)現(xiàn)中,類型形狀113a包括 存儲(chǔ)器內(nèi)數(shù)據(jù)結(jié)構(gòu),但根據(jù)本發(fā)明,其他數(shù)據(jù)形式也是可能的。此外,圖3示出了根據(jù)本發(fā)明的方法可以包括生成將中間類型形狀映射到不兼容 的名義類型的類型形狀的一個(gè)或多個(gè)代理的動(dòng)作330。動(dòng)作330包括自動(dòng)生成將一個(gè)或多 個(gè)名義上不兼容的類型的一個(gè)或多個(gè)所需類型形狀/結(jié)構(gòu)與所生成的中間類型進(jìn)行相關(guān) 的一個(gè)或多個(gè)存儲(chǔ)器內(nèi)代理。例如,如圖IB所示,處理模塊140在運(yùn)行時(shí)自動(dòng)生成代理165 和170 (在接收到執(zhí)行指令153之后)。代理165和170又有效地在中間名義類型155與現(xiàn) 有名義類型120和130之間映射元素115和117。因此,可以理解,可以在運(yùn)行時(shí)使用參考圖IA到3所示出和/或描述的組件、模塊 以及機(jī)制來在名義類型系統(tǒng)內(nèi)對(duì)類型進(jìn)行投影,以及將來自結(jié)構(gòu)的類型投影到名義類型系 統(tǒng)。另外,本發(fā)明的實(shí)現(xiàn)允許開發(fā)人員創(chuàng)建給定接口(為實(shí)例自動(dòng)創(chuàng)建存儲(chǔ))的名義類型 實(shí)例,并經(jīng)由該投影的接口進(jìn)一步訪問和操縱原始類型。同樣,這樣的訪問和操縱可以經(jīng)由 由系統(tǒng)在運(yùn)行時(shí)所生成的一個(gè)或多個(gè)類型專用代理來進(jìn)行,并且不需要任何費(fèi)力的應(yīng)用程 序?qū)S门韺⒏黝愋团c其他應(yīng)用程序進(jìn)行相關(guān)。可以理解,此處所描述的實(shí)現(xiàn)可以應(yīng)用 于大量的類型和類型結(jié)構(gòu),包括例如與CLR和XML相關(guān)聯(lián)的那些類型和類型結(jié)構(gòu)。本發(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ī)適當(dāng)?shù)貙⒃撨B接視為計(jì)算機(jī)可讀介質(zhì)。如此,任何這樣的連接被適當(dāng)?shù)胤Q為 “計(jì)算機(jī)可讀介質(zhì)”。上面各項(xiàng)的組合也應(yīng)該包括在計(jì)算機(jī)可讀介質(zhì)的范圍內(nèi)。計(jì)算機(jī)可執(zhí)行指令包括例如使通用計(jì)算機(jī)、專用計(jì)算機(jī)或?qū)S锰幚碓O(shè)備執(zhí)行某一 函數(shù)或一組函數(shù)的指令和數(shù)據(jù)。盡管已經(jīng)用結(jié)構(gòu)特征和/或方法動(dòng)作專用的語言描述了本 主題,但可以理解,所附權(quán)利要求書中定義的本主題不必受上述具體特征或動(dòng)作的限制。相 反,上文所描述的具體特征和動(dòng)作是作為實(shí)現(xiàn)權(quán)利要求的示例形式來公開的。在不偏離本發(fā)明的精神和必要特征的情況下,本發(fā)明能以其他具體形式來實(shí)現(xiàn)。 所描述的實(shí)施例在各個(gè)方面都只作為說明性的,而不是限制性的。因此,本發(fā)明的范圍由所 附權(quán)利要求書而不是由前面的描述指出。在權(quán)利要求的等效方案內(nèi)的含義和范圍內(nèi)的所有 更改都將包括在它們的范圍內(nèi)。
權(quán)利要求
一種在面向?qū)ο蟮挠?jì)算機(jī)化系統(tǒng)中的方法,所述面向?qū)ο蟮挠?jì)算機(jī)化系統(tǒng)實(shí)現(xiàn)了名義類型框架(100)和由其中的一個(gè)或多個(gè)應(yīng)用程序(103、105、107)使用的一個(gè)或多個(gè)名義上不兼容的類型(110、120、130),所述方法自動(dòng)提供所述應(yīng)用程序?qū)εc所述一個(gè)或多個(gè)名義上不兼容的類型相關(guān)聯(lián)的數(shù)據(jù)的訪問,所述方法包括下列動(dòng)作標(biāo)識(shí)(200)應(yīng)用程序(103)所使用的目標(biāo)類型(110)的一個(gè)或多個(gè)所需類型形狀(115、117);標(biāo)識(shí)(210)具有對(duì)應(yīng)的一個(gè)或多個(gè)名義上不兼容的源類型(120、130)的一個(gè)或多個(gè)不同的應(yīng)用程序(105、107),所述名義上不兼容的源類型(120、130)包括所述目標(biāo)類型的所述一個(gè)或多個(gè)所需類型形狀(115117);接收(220)使用所述目標(biāo)類型來執(zhí)行所述應(yīng)用程序(103)的一個(gè)或多個(gè)指令(153);以及在執(zhí)行所述應(yīng)用程序之后,使用一個(gè)或多個(gè)代理(165、170、175)來處理(230)所述應(yīng)用程序(103)對(duì)與所述名義上不兼容的類型中的所需類型形狀相關(guān)聯(lián)的數(shù)據(jù)的一個(gè)或多個(gè)訪問請(qǐng)求。
2.如權(quán)利要求1所述的方法,其特征在于,還包括在運(yùn)行時(shí)生成表示所述目標(biāo)類型的 中間類型(155)的動(dòng)作,所述中間類型包括所標(biāo)識(shí)的一個(gè)或多個(gè)所需類型形狀(115、117)。
3.如權(quán)利要求1所述的方法,其特征在于,還包括在運(yùn)行時(shí)為所標(biāo)識(shí)的一個(gè)或多個(gè)名 義上不兼容的源類型(120、130)自動(dòng)創(chuàng)建所述一個(gè)或多個(gè)代理(165、170)的動(dòng)作。
4.如權(quán)利要求3所述的方法,其特征在于,所述一個(gè)或多個(gè)代理(165、170)中的每一個(gè) 都包括存儲(chǔ)器內(nèi)數(shù)據(jù)結(jié)構(gòu)。
5.如權(quán)利要求3所述的方法,其特征在于,每一代理(165、170)都與所述一個(gè)或多個(gè)不 同的應(yīng)用程序(105、107)中的至少一個(gè)相關(guān)聯(lián)。
6.如權(quán)利要求3所述的方法,其特征在于,所述一個(gè)或多個(gè)代理(165、170)中的至少一 個(gè)與尚未與應(yīng)用程序進(jìn)行關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)的后端數(shù)據(jù)存儲(chǔ)(180)相關(guān)聯(lián)。
7.如權(quán)利要求3所述的方法,其特征在于,所述一個(gè)或多個(gè)代理(165、170)中的每一個(gè) 都將所標(biāo)識(shí)的源類型中的所述一個(gè)或多個(gè)所需類型形狀(115、117)映射到所述目標(biāo)類型 中的相同類型形狀。
8.如權(quán)利要求1所述的方法,其特征在于,處理(230)所述一個(gè)或多個(gè)訪問請(qǐng)求的動(dòng)作 還包括下列動(dòng)作接收來自第一應(yīng)用程序(103)的訪問對(duì)應(yīng)于名義上不兼容的類型(120)的數(shù)據(jù)的請(qǐng) 求;以及為所述請(qǐng)求標(biāo)識(shí)自動(dòng)生成的代理(165)。
9.如權(quán)利要求8所述的方法,其特征在于,來自所述第一應(yīng)用程序(103)的數(shù)據(jù)訪問請(qǐng) 求包括對(duì)與所述名義上不兼容的類型(120)相對(duì)應(yīng)的數(shù)據(jù)的讀或?qū)懜闹械闹辽僖粋€(gè)。
10.如權(quán)利要求8所述的方法,其特征在于,還包括下列動(dòng)作將所述請(qǐng)求傳遞到所述自動(dòng)生成的代理(165),其中所述自動(dòng)生成的代理處理所述請(qǐng) 求;以及從所述自動(dòng)生成的代理(165)接收所述訪問請(qǐng)求已被處理的一個(gè)或多個(gè)確認(rèn)。
11.如權(quán)利要求10所述的方法,其特征在于,還包括將通過所述請(qǐng)求修改的數(shù)據(jù)結(jié)構(gòu)從后端數(shù)據(jù)存儲(chǔ)(180)傳遞到由所述一個(gè)或多個(gè)不同的應(yīng)用程序(105、107)中的一個(gè)進(jìn)行 管理的數(shù)據(jù)存儲(chǔ)的動(dòng)作。
12.如權(quán)利要求1所述的方法,其特征在于,所述目標(biāo)類型的所述一個(gè)或多個(gè)所需類型 形狀(115、117)的標(biāo)識(shí)是在安裝了所述應(yīng)用程序之后發(fā)生的。
13.如權(quán)利要求12所述的方法,其特征在于,還包括下列動(dòng)作標(biāo)識(shí)使用與所述系統(tǒng)中的任何其他現(xiàn)有類型在名義上不兼容的另一類型的另一個(gè)應(yīng) 用程序的安裝;以及標(biāo)識(shí)在所述另一個(gè)名義上不兼容的類型和與所述系統(tǒng)中的現(xiàn)有應(yīng)用程序相對(duì)應(yīng)的現(xiàn) 有類型之間通用的一個(gè)或多個(gè)新類型形狀。
14.如權(quán)利要求13所述的方法,其特征在于,還包括下列動(dòng)作在運(yùn)行時(shí),為所述新安裝的應(yīng)用程序生成將所述一個(gè)或多個(gè)新類型形狀映射到所述系 統(tǒng)中的現(xiàn)有類型中的一個(gè)或多個(gè)中的對(duì)應(yīng)的類型形狀的一個(gè)或多個(gè)新代理;以及使用所述一個(gè)或多個(gè)新代理來處理所述新安裝的應(yīng)用程序?qū)τ伤霈F(xiàn)有應(yīng)用程序進(jìn) 行管理的數(shù)據(jù)結(jié)構(gòu)的一個(gè)或多個(gè)訪問請(qǐng)求。
15.一種在面向?qū)ο蟮挠?jì)算機(jī)化系統(tǒng)中的方法,所述面向?qū)ο蟮挠?jì)算機(jī)化系統(tǒng)實(shí)現(xiàn)了 名義類型框架(100)和由其中的一個(gè)或多個(gè)應(yīng)用程序(103、105、107)使用的一個(gè)或多個(gè)名 義上不兼容的類型(110、120、130),所述方法自動(dòng)提供所述應(yīng)用程序?qū)εc所述一個(gè)或多個(gè) 名義上不兼容的類型相關(guān)聯(lián)的數(shù)據(jù)的訪問,所述方法包括下列動(dòng)作標(biāo)識(shí)(300)安裝在所述系統(tǒng)中的應(yīng)用程序(103)所使用的類型(110)的一個(gè)或多個(gè)所 需類型形狀(115、117);標(biāo)識(shí)(310) —個(gè)或多個(gè)不同的應(yīng)用程序(105、107)所使用的一個(gè)或多個(gè)名義上不兼容 的類型(120、130)中的所述一個(gè)或多個(gè)所需類型形狀(115、117);自動(dòng)生成(320)包括所述應(yīng)用程序(103)所使用的所述類型(110)的表示的中間類型 (155);以及自動(dòng)生成(330)將所述一個(gè)或多個(gè)名義上不兼容的類型(120、130)的一個(gè)或多個(gè)所需 類型形狀與所生成的中間類型(155)進(jìn)行相關(guān)的一個(gè)或多個(gè)代理(165、170)。
16.如權(quán)利要求15所述的方法,其特征在于,還包括通過所創(chuàng)建的代理(165、170)來處 理所述新安裝的應(yīng)用程序?qū)λ鲆粋€(gè)或多個(gè)源類型(120、130)中的所標(biāo)識(shí)的一個(gè)或多個(gè) 類型形狀(115、117)的一個(gè)或多個(gè)訪問請(qǐng)求的動(dòng)作。
17.如權(quán)利要求16所述的方法,其特征在于,所述一個(gè)或多個(gè)訪問請(qǐng)求包括對(duì)與由所 述系統(tǒng)中的另一個(gè)應(yīng)用程序進(jìn)行管理的名義上不兼容的類型相對(duì)應(yīng)的一個(gè)或多個(gè)數(shù)據(jù)結(jié) 構(gòu)進(jìn)行修改或?qū)懭氲恼?qǐng)求。
18.如權(quán)利要求15所述的方法,其特征在于,所述一個(gè)或多個(gè)代理(175)中的至少一個(gè) 將所述一個(gè)或多個(gè)所需類型形狀映射到對(duì)應(yīng)于臨時(shí)數(shù)據(jù)存儲(chǔ)(180)的新類型(185)。
19.如權(quán)利要求18所述的方法,其特征在于,還包括下列動(dòng)作接收創(chuàng)建新的數(shù)據(jù)結(jié)構(gòu)的請(qǐng)求;使用所述一個(gè)或多個(gè)代理(175)為所述數(shù)據(jù)存儲(chǔ)(180)處理所述請(qǐng)求;以及將對(duì)所述新數(shù)據(jù)結(jié)構(gòu)的控制從所述數(shù)據(jù)存儲(chǔ)傳遞到所述一個(gè)或多個(gè)不同的應(yīng)用程序 (103、105、107)中的一個(gè)。
20. 一種在面向?qū)ο蟮挠?jì)算機(jī)化系統(tǒng)中的計(jì)算機(jī)程序存儲(chǔ)產(chǎn)品,所述面向?qū)ο蟮挠?jì)算 機(jī)化系統(tǒng)實(shí)現(xiàn)了名義類型框架(100)和由其中的一個(gè)或多個(gè)應(yīng)用程序(103、105、107)使用 的一個(gè)或多個(gè)名義上不兼容的類型(110、120、130),所述計(jì)算機(jī)程序存儲(chǔ)產(chǎn)品上存儲(chǔ)了計(jì) 算機(jī)可執(zhí)行指令,所述計(jì)算機(jī)可執(zhí)行指令在被執(zhí)行時(shí)使所述計(jì)算機(jī)化系統(tǒng)中的一個(gè)或多個(gè) 處理器執(zhí)行一種包括下列動(dòng)作的方法標(biāo)識(shí)(200)應(yīng)用程序(103)所使用的目標(biāo)類型(110)的一個(gè)或多個(gè)所需類型形狀 (115,117);標(biāo)識(shí)(210)具有對(duì)應(yīng)的一個(gè)或多個(gè)名義上不兼容的源類型(120、130)的一個(gè)或多個(gè)不 同的應(yīng)用程序(105、107),所述名義上不兼容的源類型(120、130)包括所述目標(biāo)類型的所 述一個(gè)或多個(gè)所需類型形狀(115、117);接收(220)使用所述目標(biāo)類型來執(zhí)行所述應(yīng)用程序(103)的一個(gè)或多個(gè)指令(153);以及在執(zhí)行了所述應(yīng)用程序之后,使用一個(gè)或多個(gè)代(165、170、175)來處理(230)所述應(yīng) 用程序(103)對(duì)與所述名義上不兼容的類型中的所需類型形狀相關(guān)聯(lián)的數(shù)據(jù)的一個(gè)或多 個(gè)訪問請(qǐng)求。
全文摘要
名義類型框架可以被配置成基于通用類型形狀或結(jié)構(gòu)的最小集合來有效地將不同的名義類型相關(guān)在一起。在一個(gè)實(shí)現(xiàn)中,開發(fā)人員標(biāo)識(shí)多個(gè)所感興趣的不同的名義類型(源類型),并標(biāo)識(shí)由應(yīng)用程序訪問的通用類型形狀的最小集合。然后,該通用類型形狀的最小集合可以被用來創(chuàng)建其他不同的源類型中的每一個(gè)都可以被映射到的中間類型(目標(biāo)類型)。例如,可以創(chuàng)建將一個(gè)或多個(gè)源類型的形狀映射到所創(chuàng)建的目標(biāo)類型的對(duì)應(yīng)形狀的一個(gè)或多個(gè)代理。由開發(fā)人員所創(chuàng)建的應(yīng)用程序又可以通過單個(gè)目標(biāo)類型來訪問、操作、或以其他方式使用每一不同的源類型的映射數(shù)據(jù)。
文檔編號(hào)G06F9/46GK101952805SQ200980106920
公開日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)人:微軟公司