.NET包括四個組成部分:
●VOS類型系統
●元數據
●公用語言規范
●虛擬執行系統
下面分別對它們進行簡要介紹。
2.1.1、虛擬對象系統
.NET跨語言集成的特性來自於虛擬對象系統(VOS)的支持。
在不同語言間進行代碼復用和應用集成中所遇到的最大的問題,是不同語言類型系統間的相容性問題。可以想象,不同的語言雖然語法結構大體相同,但數據類型與語言環境本身的各種特點聯系緊密,很難想象一種解釋性的語言所擁有的數據類型會與一種編譯語言相同,而即使相同的數據類型在不同的語言環境中表示的意義也存在差別。例如,同樣是整數類型,在MSSQL中的長度是32位,而在VB中卻是16位,至於日期時間與字符串類型在這方面的區別就更加明顯了。
VOS的建立就是為了改變這種狀況。它既支持過程性語言也支持面向對象的語言,同時提供了一個類型豐富的系統來容納它支持的各種語言的特性。它在最大程度上屏蔽了不同語言類型系統間的轉換,使程序員能夠隨心所欲地選擇自己喜歡的語言(當然,這種語言必須支持.NET應用)從事開發,保證了不同語言間的集成。
對於過程性語言,它描述了值的類型並指定了類型的所有值必須遵守的規則;在面向對象語言方面,它統一了不同編程語言的對象模型。每一個對象在VOS中都被唯一標識以與其它對象相區別。
2.1.2、元數據
元數據是對VOS中類型描述代碼的一種稱呼。在編譯程序將源代碼轉換為中間代碼時,它將自動生成,並與編譯後的源代碼共同包含在二進制代碼文件中。元數據攜帶了源代碼中類型信息的描述,這在一定程度上解決了版本問題:程序使用的類型描述與自身綁定在一起。
在CLR定位與裝載類型時,系統通過讀取並解析元數據來獲得應用程序中的類型信息,JIT編譯器獲得加載的類型信息後,將中間語言代碼翻譯成為本地代碼,在此基礎上根據程序或用戶要求建立類型的實例。由於整個過程中,CLR始終根據元數據建立並管理對應特定應用程序的類型,從而保證了類型安全性。
此外,元數據在解決方法的調用,建立運行期上下文界限等方面都有自己的作用。而關於元數據的一切都由.NET在後台完成。
2.1.3、公用語言規范
公用語言規范(Common Language Specification,CLS),是CLR定義的語言特性集合,主要用來解決互操作的問題。如果一個類遵守CLS,那麼同樣遵守CLS規范的其它編程語言將能夠使用它的外部可見項。詳細的介紹見本章第二節。
2.1.4、虛擬執行系統
虛擬執行系統(Visual Execution System,VES)是VOS的實現,它用來驅動運行環境。元數據的生成與使用、公用語言規范的滿足性檢查以及應用程序執行過程中的內存管理均由它來完成。具體來說,VES主要完成以下功能:
●裝入中間代碼
●使用JIT將中間代碼轉換為本地碼。
●裝入元數據。
●代碼管理服務--包括垃圾收集器和異常處理。
●定制與調試服務。
●線程和環境管理。