.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將中間代碼轉換為本地碼。
●裝入中繼資料。
●代碼管理服務--包括垃圾收集器和異常處理。
●定製與調試服務。
●線程和環境管理。