中繼資料和自我描述元件
在過去,以一種語言撰寫的軟體元件 (.exe 或 .dll) 不容易使用以另一種語言所撰寫的軟體元件。 COM 對這個問題提供了進一步的解決方式。 .NET Framework 允許編譯器 (Compiler) 發出額外的宣告資訊至所有模組和組件中,使元件的互通性更為容易。 這個資訊,稱為中繼資料 (Metadata),能幫助元件順暢地互動。
中繼資料為二進位資訊,描述儲存在 Common Language Runtime 可移植執行檔 (PE) 或記憶體中的程式。 當您編譯程式碼為 PE 檔時,中繼資料被插入至檔案的一個部分,而您的程式碼則轉換至 Microsoft Intermediate Language (MSIL) 並插入至檔案的另一部分。 模組或組件中所定義和參考的一切型別和成員都描述於中繼資料內。 當執行程式碼時,Runtime 載入中繼資料至記憶體中,並參考它以探索您程式碼的類別、成員、繼承 (Inheritance) 等等的資訊。
中繼資料會描述您程式碼中以語言中性方式定義的每一個型別和成員。 中繼資料儲存下列資訊:
組件的說明
識別 (名稱、版本、文化特性、公開金鑰)
匯出的型別
這個組件所依存的其他組件
執行所需要的安全性權限
型別的說明
名稱、可視性、基底類別和實作的介面
成員 (方法、欄位、屬性、事件、巢狀型別)
屬性
- 修改型別和成員的額外描述項目
中繼資料的優點
中繼資料是較簡單的程式撰寫模型 (Programming Model) 的關鍵,排除對介面定義語言 (IDL) 檔案、標頭檔 (Header File) 或元件參考的任何外部方法的需要。 中繼資料可以讓 .NET Framework 語言自動以語言中性方式描述它們自己,而不讓開發人員及使用者看見。 此外,中繼資料透過屬性的使用會成為可擴充的。 中繼資料提供下列主要好處:
自我描述檔案
Common Language Runtime 模組和組件為自我描述的。 模組的中繼資料包含與另一個模組互動的一切所需。 中繼資料自動提供 COM 中的 IDL 的功能,允許您將一個檔案當做定義及實作使用。 Runtime 模組和組件甚至不需要向作業系統註冊。 結果,Runtime 使用的描述永遠反應您編譯檔案中的實際程式碼,這樣即增加了應用程式的可靠性。
語言互通性 (Interoperability) 和較容易的元件架構設計
中繼資料提供已編譯程式碼所需的全部資訊,讓您從不同語言撰寫的 PE 檔繼承類別。 您可以為任何 Managed 語言 (任何以 Common Language Runtime 為目標的語言) 所撰寫的任何類別建立執行個體,而不需擔心自訂互通性程式碼的明確封送處理 (Marshaling) 或使用。
屬性
.NET Framework 允許您在已編譯的檔案中宣告稱為屬性的特定種類中繼資料。 屬性普遍存在於 .NET Framework,並且被用來更仔細控制您程式在 Run Time 的行為。 此外,您可以透過使用者定義的自訂屬性,發出您自己的自訂中繼資料至 .NET Framework 檔案中。 如需詳細資訊,請參閱使用屬性擴充中繼資料。
相關主題
標題 |
說明 |
---|---|
說明中繼資料在 PE 檔案中是如何和 Microsoft Intermediate Language (MSIL) 分開儲存。 |
|
以程式碼範例示範中繼資料在執行階段的使用。 |
|
描述如何套用屬性、撰寫自訂屬性和擷取儲存於屬性的資訊。 |