專利名稱:可擴展元數(shù)據(jù)的制作方法
可擴展元數(shù)據(jù)
些旦 冃眾
運行時執(zhí)行環(huán)境可用作應(yīng)用程序編程和應(yīng)用程序執(zhí)行平臺中的至少一個。 作為應(yīng)用程序編程平臺,運行時執(zhí)行環(huán)境可以將可以用多種計算語言之一編寫 的目標應(yīng)用程序編譯成例如中間語言或字節(jié)代碼。
概述
元數(shù)據(jù)流可以包括提供用于對應(yīng)于在受管執(zhí)行環(huán)境中編譯的應(yīng)用程序的 元數(shù)據(jù)的模式的描述的一個或多個數(shù)據(jù)構(gòu)造。
附圖簡述
本說明書參考了以下各圖。
圖1示出了通過網(wǎng)絡(luò)通信的設(shè)備,這些設(shè)備實現(xiàn)涉及可擴展元數(shù)據(jù)的示例 技術(shù)。
圖2示出了用于實現(xiàn)涉及可擴展元數(shù)據(jù)的示例技術(shù)的執(zhí)行環(huán)境的一個示例。
圖3示出了對應(yīng)于受管代碼的可擴展元數(shù)據(jù)的一個示例。 圖4示出了用于可擴展元數(shù)據(jù)的至少一個實現(xiàn)的示例數(shù)據(jù)流。
詳細描述
現(xiàn)在描述可擴展元數(shù)據(jù)和相關(guān)聯(lián)的技術(shù)。
此處所描述的可擴展元數(shù)據(jù)可以涉及對應(yīng)于在受管執(zhí)行環(huán)境或非受管執(zhí) 行環(huán)境中編譯的應(yīng)用程序的元數(shù)據(jù)。更具體而言,根據(jù)此處所描述的示例實現(xiàn), 對應(yīng)于該應(yīng)用程序的至少一部分的元數(shù)據(jù)可變?yōu)榭蓴U展的而不會不利地影響 執(zhí)行環(huán)境內(nèi)的執(zhí)行擴展。這種應(yīng)用程序可被編譯以供在網(wǎng)絡(luò)環(huán)境中的一個或多 個設(shè)備或節(jié)點中實現(xiàn)的執(zhí)行平臺上執(zhí)行。此處所使用的"程序集"可以指布署單元,或者更具體地,指代碼的可版 本化部署單元。
此處所描述的"元數(shù)據(jù)"可以指描述其他數(shù)據(jù),尤其是已編譯代碼的數(shù)據(jù)。 元數(shù)據(jù)可以例如提供關(guān)于一個或多個數(shù)據(jù)元素或有關(guān)數(shù)據(jù)的描述性項的大量
{曰息。
此處所描述的"模式"可以指定義數(shù)據(jù)結(jié)構(gòu)以及該結(jié)構(gòu)內(nèi)的每個數(shù)據(jù)元素 可以包含的內(nèi)容的類型的數(shù)據(jù)。
圖1示出了其中可以實現(xiàn)涉及可擴展元數(shù)據(jù)的示例技術(shù)的示例網(wǎng)絡(luò)環(huán)境
100,然而該示例技術(shù)決不限于網(wǎng)絡(luò)環(huán)境。這些技術(shù)可以包括,但不局限于, 此處所描述的與可擴展元數(shù)據(jù)120相關(guān)聯(lián)的工具、方法以及系統(tǒng)。更具體地, 無論元數(shù)據(jù)是否是可擴展的,都可實現(xiàn)該工具、方法、以及系統(tǒng)來格式化、讀 取、或者分析元數(shù)據(jù)。
在圖1中,客戶機設(shè)備105、服務(wù)器設(shè)備110、以及"其他"設(shè)備115可 以通過網(wǎng)絡(luò)125通信上相互耦合;并且此外,客戶機設(shè)備105、服務(wù)器設(shè)備110、 以及"其他"設(shè)備115中的至少一個能夠?qū)崿F(xiàn)上述技術(shù)。
客戶機設(shè)備105可以表示各種己知計算設(shè)備中的至少一種,包括能夠格式 化、讀取、或分析與應(yīng)用、程序、函數(shù)、或可編程和可執(zhí)行代碼的其他集合體 相關(guān)聯(lián)的元數(shù)據(jù)的臺式個人計算機(PC)、工作站、大型機計算機、因特網(wǎng)設(shè) 備、或機頂盒??蛻魴C設(shè)備105還可以表示能夠通過包括移動(即,蜂窩)電 話、個人數(shù)字助理(PDA)、膝上型計算機等有線或無線鏈路與網(wǎng)絡(luò)125相關(guān) 聯(lián)的任何設(shè)備中的至少一個。再者,客戶機設(shè)備105可以按各種數(shù)量和/或其組 合來表示上述客戶機設(shè)備。"其他"設(shè)備115也可以由客戶機設(shè)備105的上述 例子的任一個來實施。
服務(wù)器設(shè)備IIO可表示能夠根據(jù)可擴展元數(shù)據(jù)120的至少一種實現(xiàn)來向客 戶機設(shè)備105或"其他"設(shè)備115提供各種數(shù)據(jù)和/或功能中的任一種的任何設(shè) 備。該數(shù)據(jù)可以是公眾可獲得的,或者是受限的,例如,僅限于某些用戶或者 僅當支付了適當?shù)挠嗛喕蛟S可費用時。服務(wù)器設(shè)備110可以是網(wǎng)絡(luò)服務(wù)器、應(yīng) 用程序服務(wù)器、刀片服務(wù)器、或其任何組合中的至少一個。通常,服務(wù)器設(shè)備 IIO可以表示可以作為內(nèi)容源的任何設(shè)備,而客戶機設(shè)備105可以表示可以通過網(wǎng)絡(luò)125或以離線方式接收這些內(nèi)容的任何設(shè)備。然而,根據(jù)此處所描述的 示例實現(xiàn),客戶機設(shè)備105和服務(wù)器設(shè)備IIO可以互換地是網(wǎng)絡(luò)環(huán)境100中的 發(fā)送節(jié)點或接收節(jié)點。"其他"設(shè)備115也可以由服務(wù)器設(shè)備110的任何例子 中的任一個來實施。
"其他"設(shè)備115可以表示能夠根據(jù)此處所描述的一個或多個示例技術(shù)來 實現(xiàn)可擴展元數(shù)據(jù)120的任何另外的設(shè)備。即,"其他"設(shè)備115可以表示至 少能夠格式化、讀取、或分析與應(yīng)用、程序、函數(shù)、或可編程和可執(zhí)行代碼的 其他集合體相關(guān)聯(lián)的元數(shù)據(jù)的任何啟用軟件的計算或處理設(shè)備。因此,"其他" 設(shè)備115可以是具有操作系統(tǒng)、解釋器、轉(zhuǎn)換器、編譯器、或在其上實現(xiàn)的運 行時執(zhí)行環(huán)境中的至少一個的計算或處理設(shè)備。這些例子不旨在以任何方式受 限,且因此不應(yīng)以該方式來解釋。
網(wǎng)絡(luò)125可以表示可以包括有線和/或無線網(wǎng)絡(luò)的各種常規(guī)網(wǎng)絡(luò)技術(shù)和類 型中的任一種。網(wǎng)絡(luò)125還可以利用包括公共和/或?qū)S袇f(xié)議的各種常規(guī)網(wǎng)絡(luò)協(xié) 議中的任一種。網(wǎng)絡(luò)125可以包括例如因特網(wǎng)以及諸如802.11系統(tǒng)等一個或多 個局域網(wǎng)(也被單獨稱為"LAN")的至少部分,或更大規(guī)模地,可以包括廣 域網(wǎng)(即WAN) ,或諸如藍牙等個人區(qū)域網(wǎng)(即PAN)。
設(shè)備105、 110和115中的至少一個中的計算機架構(gòu)通常按照硬件和軟件 來定義計算平臺。用于計算設(shè)備的軟件可以基于功能被分類為組,該組可以包 括硬件抽象層(或者稱為"HAL")、操作系統(tǒng)(或者稱為"OS")、以 及應(yīng)用程序。
運行時執(zhí)行環(huán)境可以駐留在OS和應(yīng)用程序之間,且可以用作其中應(yīng)用程 序可以在處理設(shè)備105、 110和115中的任何一個或多個上執(zhí)行特定任務(wù)的空 間。更具體地,運行時執(zhí)行環(huán)境可通過為運行在范圍日益增大的處理設(shè)備105、 110和105 (包括服務(wù)器、臺式計算機、膝上型計算機和移動處理/通信設(shè)備) 上的應(yīng)用程序提供抽象和服務(wù)層,并且還為該應(yīng)用程序提供包括存儲器管理及 其配置的能力,來增強這些設(shè)備上的應(yīng)用程序的執(zhí)行的可靠性。
運行時執(zhí)行環(huán)境可以用作應(yīng)用程序編程和應(yīng)用程序執(zhí)行平臺中的至少一個。
作為應(yīng)用程序編程平臺,運行時執(zhí)行環(huán)境可以將可以用多種計算語言之一編寫的目標應(yīng)用程序編譯成中間語言(以下稱為"IL")或字節(jié)代碼。IL通常 獨立于平臺,并且中央處理器(以下稱為"CPU")執(zhí)行IL, IL是比許多CPU 機器語言高級的語言。
作為應(yīng)用程序執(zhí)行平臺,運行時執(zhí)行環(huán)境可以將已編譯的IL解釋成本機 機器指令。運行時執(zhí)行環(huán)境可以利用解釋器或編譯器(如"即時"(just-in-time), 或稱"JIT"編譯器)來執(zhí)行這些指令。無論如何,本機機器指令然后可以直 接由CPU執(zhí)行。因為IL是CPU無關(guān)的,所以IL可以在任何CPU平臺上執(zhí)行, 只要在該CPU平臺上運行的OS主存一合適的運行時執(zhí)行環(huán)境。
其中可實現(xiàn)與可擴展元數(shù)據(jù)120相關(guān)聯(lián)的技術(shù)的運行時環(huán)境的示例包括 Visual Basic運行時環(huán)境;用來運行如Java 例程的Java 虛擬機運行時環(huán)境; 或在執(zhí)行調(diào)用例程之前將如Microsoft .NETTM應(yīng)用程序編譯成機器語言的公共 語言運行庫(CLR)。然而,該運行時環(huán)境的列表僅提供了示例。此外,此處 所描述的示例技術(shù)不必僅限于這些受管執(zhí)行環(huán)境。甚至更具體地,示例實現(xiàn)不 僅限于受管執(zhí)行環(huán)境,因為一個或多個示例可以在測試環(huán)境和/或非受控執(zhí)行環(huán) 境中實現(xiàn)。
被編譯成IL的應(yīng)用程序可以被稱為"受管代碼",且因此運行時執(zhí)行環(huán)
境可以另選地被稱為"受管執(zhí)行環(huán)境"。應(yīng)當注意,不利用運行時執(zhí)行環(huán)境用 于其執(zhí)行的代碼可以被稱為本機代碼應(yīng)用程序。
圖2示出了其中可實現(xiàn)與可擴展元數(shù)據(jù)120 (見圖1)相關(guān)聯(lián)的技術(shù)的示 例運行時執(zhí)行環(huán)境200。
根據(jù)至少一個示例實現(xiàn),運行時執(zhí)行環(huán)境200可以方便用于計算設(shè)備平臺 的受管代碼的執(zhí)行。受管代碼可以被看作是一組核心應(yīng)用程序開發(fā)技術(shù)的一部 分,且還可以被看作應(yīng)用、程序、函數(shù)、或為在運行時執(zhí)行環(huán)境200中的執(zhí)行 而編譯以便為計算設(shè)備平臺提供相應(yīng)服務(wù)的可編程和可執(zhí)行代碼的其他集合 體。此外,運行時執(zhí)行環(huán)境200可以將解釋級受管代碼翻譯成可由處理器代理 且隨后由其執(zhí)行的指令?;蛘?,受管代碼可以通過解釋器或編譯器、或被設(shè)計 成在安裝時作為本機映像運行的一種形式的編譯器來執(zhí)行。用于運行時執(zhí)行環(huán) 境200的框架還提供了可被看作是用于受管應(yīng)用程序的軟件構(gòu)件塊的類庫。
此外,對應(yīng)于受管代碼的至少一部分的元數(shù)據(jù)可以作為得到受管代碼的已編譯程序集的一部分被包括,或者可以在與該受管代碼分離的運行時執(zhí)行環(huán)境
200中接收。例如,元數(shù)據(jù)可作為單獨的程序集的一部分來編譯,或者元數(shù)據(jù) 可以在運行時執(zhí)行環(huán)境200中以離線方式來接收。無論如何,該元數(shù)據(jù)可以被 接收以便提供關(guān)于受管代碼的一個或多個元素的大量信息。
運行時執(zhí)行環(huán)境200可以提供可以按其他方式從一內(nèi)核中期望的功能的 至少一部分,取決于用于設(shè)備105、 110和115 (見圖l)中的特定一個的資源 約束,這些功能在計算設(shè)備平臺中可以是缺乏或不缺乏的。運行時執(zhí)行環(huán)境200 的至少一個例子可以實現(xiàn)下列各項輸入/輸出(以下稱為"I/O")例程管理、
編譯、存儲器管理、以及服務(wù)例程管理。因此,運行時執(zhí)行環(huán)境200可以包括 I/O組件205、編譯器210、存儲器管理組件215、服務(wù)例程管理器220、以及 執(zhí)行組件225。這些在以下將進一步詳細描述的組件是作為例子提供的,這些 組件不旨在限于運行時執(zhí)行環(huán)境200的任何特定實現(xiàn),且不應(yīng)做此種推論。因 此,這些組件可以按各種組合及其配置在運行時執(zhí)行環(huán)境200的例子中實現(xiàn)。
運行時執(zhí)行環(huán)境200的I/O組件205可以提供對與計算設(shè)備平臺相關(guān)聯(lián)的 物理(如處理器和外圍設(shè)備)和邏輯資源(如驅(qū)動程序、或以特定方式分區(qū)的 物理資源)的同步或異步訪問中的至少一個。更具體地,1/O組件205可以提 供具有穩(wěn)健系統(tǒng)吞吐量的運行時執(zhí)行環(huán)境200,且進一步將從中發(fā)起I/O請求 的代碼的性能流線化。
編譯器210可以指運行時執(zhí)行環(huán)境200內(nèi)可以將已編譯IL解釋成本機機 器指令以便在運行時執(zhí)行環(huán)境200中執(zhí)行的模塊。另外,根據(jù)與可擴展元數(shù)據(jù) 120相關(guān)聯(lián)的技術(shù)的至少一個替換實現(xiàn),編譯器210可以出于各種目的動態(tài)地 分析與應(yīng)用、程序、函數(shù)、或可編程和可執(zhí)行代碼的其他集合體相關(guān)聯(lián)的代碼 模塊的行為。該代碼模塊可被加載或不被加載到運行時執(zhí)行環(huán)境200中。如果 代碼模塊被加載到運行時執(zhí)行環(huán)境200中,則如此處所述,編譯器210可以讀 取、解釋、和/或以其他方式分析與該代碼模塊相關(guān)聯(lián)的、使元數(shù)據(jù)變得可擴展 的數(shù)據(jù)實體。上述讀取、解釋以及分析可以在不觸及或影響代碼模塊的可執(zhí)行 部分的情況下執(zhí)行,且可以在執(zhí)行路徑的可執(zhí)行部分的執(zhí)行期間在編譯時、初 始運行時、或之后的任何時刻執(zhí)行。
然而,可擴展元數(shù)據(jù)120的至少一個示例實現(xiàn)可以不需要讀取、解釋、或以其他方式分析由編譯器210編譯的代碼。相反,可擴展元數(shù)據(jù)可作為與中間
語言代碼(即"IL")相關(guān)來讀取、解釋、或以其他方式分析,該中間語言代 碼以IL格式而不是本機平臺執(zhí)行格式分發(fā)到運行時執(zhí)行環(huán)境200,且已被編譯 成程序集、方法、或類型中的任何一個。這種IL 305的源可以被部署在設(shè)備 105、 110和115中的相同或單獨的一個上的非受管執(zhí)行環(huán)境或運行時執(zhí)行環(huán)境 的單獨實現(xiàn)中。該源可以在安裝與IL相對應(yīng)的應(yīng)用、程序、方法、函數(shù)、或 可編程和可執(zhí)行代碼的其它集合體之時或之前布署IL。
存儲器管理組件215可以被稱為實現(xiàn)無用信息收集的"無用信息收集器"。 無用信息收集可被看作受管代碼執(zhí)行環(huán)境中的一個穩(wěn)健特征,通過該特征,如 果在清掃或掃描了存儲器堆之后一對象被確定為不再被應(yīng)用、程序、函數(shù)、或 可編程和可執(zhí)行代碼的其它集合體使用,則該對象被自動釋放(即,解除分配)。 由存儲器管理組件215實現(xiàn)的其它功能可以包括管理有限易失性RAM (即 存儲器堆)存儲的一個或多個鄰接的塊或運行在計算設(shè)備平臺上的任務(wù)之中的 存儲器的一組鄰接塊;將存儲器分配給運行在計算設(shè)備平臺上的應(yīng)用、程序、 函數(shù)、或可編程和可執(zhí)行代碼的其他集合體中的至少一個;根據(jù)由應(yīng)用、程序、 函數(shù)、或可編程和可執(zhí)行代碼的其他集合體中的至少一個的請求而釋放存儲器 的至少一部分;阻止應(yīng)用、程序、函數(shù)、或可編程和可執(zhí)行代碼的其他集合體 中的任一個侵入地訪問已被分配給其它應(yīng)用、程序、函數(shù)、或可編程和可執(zhí)行 代碼的其他集合體中的任一個的存儲器空間。
服務(wù)例程管理器220可以作為應(yīng)用程序支持層的至少一部分被包括,以便 為與計算設(shè)備平臺相關(guān)聯(lián)的物理和邏輯資源提供服務(wù)功能。與可擴展元數(shù)據(jù) 120相關(guān)聯(lián)的示例技術(shù)(如工具、方法以及系統(tǒng))可由服務(wù)例程管理器220來 管理。g卩,與可擴展元數(shù)據(jù)120相關(guān)聯(lián)的技術(shù)可根據(jù)這些技術(shù)的各種替換實現(xiàn) 來單獨實現(xiàn)或結(jié)合編譯器210 (如上所述)、服務(wù)例程管理器220、或運行時 執(zhí)行環(huán)境200的某一其他組件來實現(xiàn)。例如,相對于用于與一個或多個代碼模 塊相關(guān)聯(lián)的元數(shù)據(jù)模式的已知標準,服務(wù)例程管理器220可以至少確定一元數(shù) 據(jù)模式的變型或偏差的存在,以便允許該可擴展元數(shù)據(jù)被讀取、分析、或以其 他方法解釋。服務(wù)例程管理器220的這種貢獻可以在一個或多個代碼模塊的可 執(zhí)行部分的執(zhí)行期間在編譯時、初始運行時、或在之后的任何時刻在不觸及或影響代碼模塊的可執(zhí)行部分的情況下做出。
執(zhí)行組件225可以允許包括在用于計算設(shè)備平臺的受管代碼中的一個或多 個代碼模塊的執(zhí)行。更具體地,關(guān)于與可擴展元數(shù)據(jù)120相關(guān)聯(lián)的技術(shù)的實現(xiàn), 執(zhí)行組件225可以用作運行時執(zhí)行環(huán)境200內(nèi)的一個示例性組件,該組件可以 實現(xiàn)用于訪問可擴展元數(shù)據(jù)120來確定用于一個或多個代碼模塊的元數(shù)據(jù)模塊 的變型或偏差的存在,以便使該元數(shù)據(jù)可被讀取、分析、或以其他方式解釋的 工具、系統(tǒng)以及進程中的一個或多個。
圖3示出了示例代碼塊300,以便示出通過利用至少出于本描述的目的而 被稱為"元元數(shù)據(jù)"(meta-meta-data)的數(shù)據(jù)的擴展元數(shù)據(jù)120 (見圖1)的 示例實現(xiàn)。代碼塊300的描述可以涉及以上關(guān)于圖1中的網(wǎng)絡(luò)環(huán)境100所描述 的設(shè)備和以上關(guān)于圖2中的運行時執(zhí)行環(huán)境200所描述的組件。然而,對圖l 和2的這些參照僅旨在為可擴展元數(shù)據(jù)120提供一個啟用環(huán)境,且不應(yīng)以任何 方式被解釋為限制性的。
代碼塊300可以被看作是被編譯以便在運行時執(zhí)行環(huán)境200中執(zhí)行的應(yīng) 用、程序、函數(shù)、或可編程和可執(zhí)行代碼的其他集合體的至少一部分。例如, 在一對象數(shù)據(jù)模型中,塊300可以被稱為對象300。
塊305可以被看作是被編譯以便在運行時執(zhí)行環(huán)境200中執(zhí)行的應(yīng)用、程 序、函數(shù)、或可編程和可執(zhí)行代碼的其他集合體的可執(zhí)行部分。作為例子,包 括代碼模塊307、 308和309的塊305可以涉及對應(yīng)于對象300的程序文件或 方法。當然,所示的塊305的配置僅作為例子提供,且替換實施例不旨在以任 何此種方式被限制。
根據(jù)當前的示例,數(shù)據(jù)構(gòu)造310可以包括描述代碼模塊307、 308和309 中的至少一個的數(shù)據(jù)結(jié)構(gòu)和功能結(jié)構(gòu)的元數(shù)據(jù)。即,為在運行時執(zhí)行環(huán)境200 的上下文中執(zhí)行元數(shù)據(jù)310所對應(yīng)的一個或多個代碼模塊307、 308和309,可 訪問數(shù)據(jù)構(gòu)造310以獲得相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)的描述。另選地被稱為類型的數(shù)據(jù) 結(jié)構(gòu)可以包括方法名、該方法中使用的自變量、以及返回自變量。這些數(shù)據(jù)結(jié) 構(gòu)(即類型)僅作為例子提供,且不旨在以任何方式受限制。
元數(shù)據(jù)310的模式可以作為公開標準的一部分而己知,或者該模式可被標 準化并內(nèi)置運行時執(zhí)行環(huán)境200中。根據(jù)當前實現(xiàn),模式可以指用于約束構(gòu)造310中的元數(shù)據(jù)的結(jié)構(gòu)的一組規(guī)則,且可以包括例如標準數(shù)量的表、每個表的
標準數(shù)量的列、以及用于一個或多個表的標準化的列描述符。
除了其他原因之外,可以在對象300中提供數(shù)據(jù)構(gòu)造315以便考慮到包括 在數(shù)據(jù)構(gòu)造310中的元數(shù)據(jù)不是根據(jù)公開的標準或內(nèi)置于運行時執(zhí)行環(huán)境200 中的標準來編譯的時候。即,為了讀取、分析、或以其他方式解釋可能已經(jīng)發(fā) 展以便添加新特征、刪除舊特征、或修補現(xiàn)有特征中的隱錯的數(shù)據(jù)結(jié)構(gòu)(即類 型),可提供數(shù)據(jù)構(gòu)造315以便在不需要對運行時執(zhí)行環(huán)境200的任何組件的 調(diào)整的情況下使包括在數(shù)據(jù)構(gòu)造310中的元數(shù)據(jù)可擴展。
因此,數(shù)據(jù)構(gòu)造315可以包括可被稱為"元元數(shù)據(jù)"的數(shù)據(jù)。即,包括在 數(shù)據(jù)構(gòu)造315中的元元數(shù)據(jù)可以指包括在數(shù)據(jù)構(gòu)造310中的元數(shù)據(jù)的模式。此 外,數(shù)據(jù)構(gòu)造315可作為代碼塊300的一部分而被編譯成元數(shù)據(jù)流的一部分。 然而,可擴展元數(shù)據(jù)120的至少一個替換實現(xiàn)可以構(gòu)想數(shù)據(jù)構(gòu)造315,以及因 此而包括在其中的元元數(shù)據(jù)通過某一替換傳輸介質(zhì)或在單獨的模塊流中以離 線方式提供給運行時執(zhí)行環(huán)境200。此外,根據(jù)迄今所描述的例子,數(shù)據(jù)構(gòu)造 310和數(shù)據(jù)構(gòu)造315是單獨的數(shù)據(jù)實體;然而,至少一個替換實現(xiàn)可以構(gòu)想數(shù) 據(jù)構(gòu)造315與數(shù)據(jù)構(gòu)造310集成。
例如,包括在數(shù)據(jù)構(gòu)造315內(nèi)的元元數(shù)據(jù)可以包括下列各項的一個或多個 包括在數(shù)據(jù)構(gòu)造310內(nèi)的元數(shù)據(jù)的模式的綜合描述;包括在數(shù)據(jù)構(gòu)造310內(nèi)的 元數(shù)據(jù)的模式與可能需要來執(zhí)行對應(yīng)于塊305的代碼的標準化模式模型的比 較;或關(guān)于包括在數(shù)據(jù)構(gòu)造310內(nèi)的元數(shù)據(jù)的模式如何與可能需要來執(zhí)行對應(yīng) 于塊305的代碼的標準化模式模型偏差的某一其他描述。相對于包括在數(shù)據(jù)構(gòu) 造310內(nèi)的元數(shù)據(jù),這種偏差的描述可以與表的數(shù)量、每個表的列的數(shù)量、或 一個或多個相應(yīng)的表的列的大小相關(guān)。
更具體地,參考包括在數(shù)據(jù)構(gòu)造310中的元數(shù)據(jù)的模式,包括在數(shù)據(jù)構(gòu)造 315內(nèi)的元元數(shù)據(jù)可以按各種組合包括下列各項的一個或多個在每列的基礎(chǔ) 上的可變大小列的至少一個重定義大?。恍卤淼闹辽僖粋€定義;新編碼的權(quán)標 類型的至少一個定義;超過一標準化數(shù)量的表計數(shù);超過一標準化數(shù)量的列計
數(shù);以及超過一標準化數(shù)量的權(quán)標類型計數(shù)。單獨的模式流的至少一個例子可 以包括流首部、新編碼的權(quán)標類型描述符、用于標準化表的表描述符、用于新表的表描述符、用于標準化表的列描述符、以及用于新表的列描述符。
圖4示出了示例數(shù)據(jù)流400以闡明可擴展元數(shù)據(jù)120 (見圖1)的一個示 例實現(xiàn)。
塊405可以涉及其中可以實現(xiàn)涉及可擴展元數(shù)據(jù)120的一個或多個技術(shù)的 執(zhí)行環(huán)境。本說明書迄今已將運行時執(zhí)行環(huán)境200稱為其中可以實現(xiàn)可擴展元 數(shù)據(jù)120的環(huán)境。然而,該示例實現(xiàn)不僅限于受管執(zhí)行環(huán)境。相反,可擴展元 數(shù)據(jù)120的替換示例可以在測試環(huán)境和/或非受管執(zhí)行環(huán)境內(nèi)實現(xiàn)。無論如何, 數(shù)據(jù)流400:的描述可以涉及由與對應(yīng)于網(wǎng)絡(luò)環(huán)境100 (見圖1)的設(shè)備相關(guān)聯(lián) 的一個或多個模塊、對應(yīng)于運行時執(zhí)行環(huán)境200 (見圖2)的組件、以及代碼 模塊305和數(shù)據(jù)構(gòu)造310和315 (見圖3)執(zhí)行的各種操作。此外,該操作可 以單獨或以各種組合一起被實現(xiàn)為硬件、固件、或軟件。
塊410可以涉及執(zhí)行環(huán)境405的模塊,它檢査、分析、或以其他方式讀取 包括在數(shù)據(jù)構(gòu)造315中的元元數(shù)據(jù),以便確定在如由包括在數(shù)據(jù)構(gòu)造310中的 元數(shù)據(jù)所指示的輸入代碼305的元數(shù)據(jù)模式和執(zhí)行環(huán)境405所期望的公開標準 或其他標準化模式之間存在偏差。這種模塊的一個例子可以包括運行時執(zhí)行環(huán) 境200的服務(wù)例程管理器220。
更具體地,對于要在執(zhí)行環(huán)境405內(nèi)讀取或執(zhí)行的已編譯代碼305 (即IL) 而言,用于元數(shù)據(jù)的模式期望是可預(yù)測的。例如,參考圖2和3的例子,運行 時執(zhí)行環(huán)境200可以預(yù)期包括在數(shù)據(jù)構(gòu)造310中的元數(shù)據(jù)的模式包括各自都有 64列的42個表。因此,在塊410上,可以檢測到與標準化類型描述符、表描 述符以及列描述符的偏差。
與標準化元數(shù)據(jù)模式的偏差可以通過讀取、解釋、或以其他方式分析包括 在數(shù)據(jù)構(gòu)造315 (見圖3)中的元元數(shù)據(jù)來檢測。因此,元元數(shù)據(jù)可以包括對 元數(shù)據(jù)的模式的綜合描述。或者,包括在數(shù)據(jù)構(gòu)造315中的數(shù)據(jù)可以列出包括 在數(shù)據(jù)構(gòu)造310中的元數(shù)據(jù)的模式與標準化模式模型之間的區(qū)別,從而避免對 包括在數(shù)據(jù)構(gòu)造310內(nèi)的元數(shù)據(jù)進行全面審閱的需要。
此外,數(shù)據(jù)構(gòu)造315的元元數(shù)據(jù)可作為代碼305的一部分來編譯,或以單 獨的模塊流(例如以離線方式或通過某一替換傳輸介質(zhì))提供給執(zhí)行環(huán)境405。
塊415可以涉及執(zhí)行環(huán)境405內(nèi)檢査、分析、或以其他方式讀取輸出代碼305的元數(shù)據(jù)的模塊(例如服務(wù)例程管理器220)。即,在已被告知了包括在 數(shù)據(jù)構(gòu)造310中的元數(shù)據(jù)如何與標準化元數(shù)據(jù)模式模型有偏差之后,可啟用包 括在執(zhí)行環(huán)境405內(nèi)的上述模塊來讀取、解釋、或以其他方式分析包括在數(shù)據(jù) 構(gòu)造310中的可擴展元數(shù)據(jù)。
按照以上關(guān)于圖l-4的描述,輸入到特定執(zhí)行環(huán)境的代碼的元數(shù)據(jù)可變?yōu)?可擴展的。例如,對應(yīng)于已編譯中間語言代碼(即IL)的元數(shù)據(jù)模式可以在無 需重新配置運行時執(zhí)行環(huán)境的情況下從標準化結(jié)構(gòu)偏離到相應(yīng)的應(yīng)用、程序、 函數(shù)、或可編程和可執(zhí)行代碼的其他集合體。然而,此處所描述的示例實現(xiàn)不 僅限于圖1的環(huán)境、圖2和3的組件、或圖4的數(shù)據(jù)處理流。與可擴展元數(shù)據(jù) 120 (見圖1)相關(guān)聯(lián)的技術(shù)(例如工具、方法以及系統(tǒng))可以通過參考圖2 和3描述的組件的各種組合,以及以參考圖4所描述的塊的各種次序來實現(xiàn)。
此外,用于上述示例和實現(xiàn)中的任一個的計算機環(huán)境可以包括具有例如一 個或多個處理器或處理單元、系統(tǒng)存儲器、以及耦合各種系統(tǒng)組件的系統(tǒng)總線 的計算設(shè)備。
計算設(shè)備可以包括各種計算機可讀介質(zhì),包括易失性和非易失性介質(zhì)、可 移動和不可移動介質(zhì)。系統(tǒng)存儲器可以包括諸如隨機存儲器(RAM)等易失性 存儲器和/或諸如只讀存儲器(ROM)或閃存RAM等非易失性存儲器形式的 計算機可讀介質(zhì)。應(yīng)當理解,還可利用可以存儲能由計算機訪問的數(shù)據(jù)的其他 類型的計算機可讀介質(zhì),如磁帶盒或其他磁存儲設(shè)備、閃存卡、CD-ROM、數(shù) 字多功能盤(DVD)或其他光學存儲、隨機存取存儲器(RAM)、只讀存儲 器(ROM)、電可擦除可編程只讀存儲器(EEPROM)等,來實現(xiàn)示例計算 系統(tǒng)和環(huán)境。
已在整個說明書中對"一示例"、"替換示例"、"至少一個示例"、"一 實現(xiàn)"、或"一示例實現(xiàn)"進行了引用,其意味著所描述的特定特征、結(jié)構(gòu)、 或特性被包括在本發(fā)明的至少一個實現(xiàn)中。因此,這一短語的使用可以涉及不 止一個實現(xiàn)。此外,所描述的特征、結(jié)構(gòu)、或特性可以在一個或多個實現(xiàn)中按 任何合適的方式組合。
然而,相關(guān)領(lǐng)域的技術(shù)人員可以認識到,代碼模塊初始化可以在沒有一個 或多個具體細節(jié)的情況下實現(xiàn),或用其他方法、資源、材料等來實現(xiàn)。在其他情況下,沒有示出或詳細描述公知的結(jié)構(gòu)、資源、或操作僅僅是為了避免淡化 本發(fā)明的各方面。
雖然已示出且描述了代碼模塊初始化的示例實現(xiàn)和應(yīng)用,但應(yīng)當理解,本 發(fā)明不限于上述精確配置和資源。如以上及權(quán)利要求書所述,在不背離本發(fā)明 的范圍的情況下,可對此處所公開的本發(fā)明的方法和系統(tǒng)的安排、操作、以及 細節(jié)做出對于本領(lǐng)域技術(shù)人員顯而易見的各種修改、變化、以及變型。
權(quán)利要求
1. 至少一種具有一個或多個數(shù)據(jù)結(jié)構(gòu)的計算機可讀介質(zhì),所述數(shù)據(jù)結(jié)構(gòu)中的至少一個包括執(zhí)行一個或多個可編程指令的模塊;描述對應(yīng)于所述模塊中的一個或多個的類型的數(shù)據(jù)構(gòu)造;以及描述所述數(shù)據(jù)構(gòu)造的結(jié)構(gòu)的另外的數(shù)據(jù)構(gòu)造。
2. 如權(quán)利要求1所述的至少一種計算機可讀介質(zhì),其特征在于,所述模 塊包括受管代碼。
3. 如權(quán)利要求1所述的至少一種計算機可讀介質(zhì),其特征在于,所述模 塊包括已編譯中間語言代碼。
4. 如權(quán)利要求1所述的至少一種計算機可讀介質(zhì),其特征在于,所述模 塊要在一受管執(zhí)行環(huán)境中執(zhí)行所述一個或多個可編程指令,并且其中,所述數(shù) 據(jù)構(gòu)造包括具有與用于所述受管執(zhí)行環(huán)境中的元數(shù)據(jù)結(jié)構(gòu)的公開標準有偏差 的結(jié)構(gòu)的元數(shù)據(jù)。
5. 如權(quán)利要求1所述的至少一種計算機可讀介質(zhì),其特征在于,所述另 外的數(shù)據(jù)構(gòu)造包括用于所述數(shù)據(jù)構(gòu)造的模式,并且其中,用于所述數(shù)據(jù)構(gòu)造的 模式與用于受管執(zhí)行環(huán)境中的所述數(shù)據(jù)構(gòu)造的標準化模式有偏差。
6. 如權(quán)利要求1所述的至少一種計算機可讀介質(zhì),其特征在于,所述另 外的數(shù)據(jù)構(gòu)造要描述所述數(shù)據(jù)構(gòu)造的結(jié)構(gòu)與用于受管執(zhí)行環(huán)境中的所述數(shù)據(jù) 構(gòu)造的結(jié)構(gòu)的公開標準格式的偏差。
7. 如權(quán)利要求1所述的至少一種計算機可讀介質(zhì),其特征在于,所述另 外的數(shù)據(jù)構(gòu)造要描述所述數(shù)據(jù)構(gòu)造的結(jié)構(gòu)中的表的個數(shù)與用于所述數(shù)據(jù)構(gòu)造 的公開標準結(jié)構(gòu)中的表的個數(shù)相比的偏差。
8. 如權(quán)利要求1所述的至少一種計算機可讀介質(zhì),其特征在于,所述另 外的數(shù)據(jù)構(gòu)造要描述所述數(shù)據(jù)構(gòu)造的結(jié)構(gòu)中的每個表的列數(shù)與用于所述數(shù)據(jù) 構(gòu)造的公開標準結(jié)構(gòu)中的每個表的列數(shù)相比的偏差。
9. 如權(quán)利要求1所述的至少一種計算機可讀介質(zhì),其特征在于,所述另 外的數(shù)據(jù)構(gòu)造要描述所述數(shù)據(jù)構(gòu)造的結(jié)構(gòu)中的列的大小與用于所述數(shù)據(jù)構(gòu)造的公開標準結(jié)構(gòu)中的列的大小相比的偏差。
10. —種方法,包括在受管執(zhí)行環(huán)境中接收與可執(zhí)行代碼相關(guān)聯(lián)的元數(shù)據(jù);以及確定所接收到的元數(shù)據(jù)與所述受管執(zhí)行環(huán)境中的標準元數(shù)據(jù)格式化之間 的結(jié)構(gòu)區(qū)別。
11. 如權(quán)利要求10所述的方法,其特征在于,所述元數(shù)據(jù)是以中間語言 來編譯的。
12. 如權(quán)利要求IO所述的方法,其特征在于,所述確定包括 讀取描述所述元數(shù)據(jù)的模式的單獨數(shù)據(jù)實體;以及 將所述模式與所述模式的公開標準進行比較。
13. 如權(quán)利要求10所述的方法,其特征在于,所述確定包括讀取描述所 述結(jié)構(gòu)區(qū)別的單獨數(shù)據(jù)實體。
14. 如權(quán)利要求10所述的方法,其特征在于,所述結(jié)構(gòu)區(qū)別與所述元數(shù) 據(jù)中的列數(shù)有關(guān)。
15. 如權(quán)利要求10所述的方法,其特征在于,所述結(jié)構(gòu)區(qū)別與所述元數(shù) 據(jù)中的列類型有關(guān)。
16. 如權(quán)利要求10所述的方法,其特征在于,所述結(jié)構(gòu)區(qū)別與所述元數(shù) 據(jù)中的列的大小有關(guān)。
17. 如權(quán)利要求IO所述的方法,其特征在于,所述結(jié)構(gòu)區(qū)別與所述元數(shù) 據(jù)中的表的個數(shù)有關(guān)。
18. —種系統(tǒng),包括用于接收與受管代碼相關(guān)聯(lián)的元數(shù)據(jù)的裝置;用于確定所接收的元數(shù)據(jù)與用于受管代碼的元數(shù)據(jù)的標準結(jié)構(gòu)之間的示 意性區(qū)別的裝置;以及用于根據(jù)所確定的示意性區(qū)別讀取所述元數(shù)據(jù)的裝置。
19. 如權(quán)利要求18所述的系統(tǒng),其特征在于,所述示意性區(qū)別與所接收 到的元數(shù)據(jù)中的表相關(guān)。
20. 如權(quán)利要求18所述的系統(tǒng),其特征在于,所述示意性區(qū)別與所接收 的元數(shù)據(jù)中的表中的列相關(guān)。
全文摘要
已編譯代碼的元數(shù)據(jù)可以具有用于元數(shù)據(jù)的模式的相應(yīng)描述,以便允許與一模式標準有偏差。
文檔編號G06F17/00GK101288070SQ200680038317
公開日2008年10月15日 申請日期2006年9月12日 優(yōu)先權(quán)日2005年10月13日
發(fā)明者C·W·布魯密, J·H·霍格, J·S·米勒, S·里定 申請人:微軟公司