公共語言運行庫

公共語言運行庫(Common Language Runtime,CLR),提供了管理.NET Compact Framework代碼的執行環境。代碼管理的形式可以是記憶體管理、執行緒管理、安全性管理、代碼驗證和編譯以及其他系統服務。

條目名稱

公共語言運行庫 (common language runtime)

條目簡介

託管代碼執行核心中的引擎。運行庫為託管代碼提供各種服務,如跨語言集成、代碼訪問安全性、對象生存期管理、調試和分析支持。
公共語言運行庫的功能通過編譯器和工具公開,您可以編寫利用此託管執行環境的代碼。使用基於公共語言運行庫的語言編譯器開發的代碼稱為託管代碼;託管代碼具有許多優點,例如:跨語言集成、跨語言異常處理、增強的安全性、版本控制和部署支持、簡化的組件互動模型、調試和分析服務等。
若要使公共語言運行庫能夠向託管代碼提供服務,語言編譯器必須生成一些元數據來描述代碼中的類型、成員和引用。元數據與代碼一起存儲;每個可載入的公共語言運行庫可移植執行 (PE) 檔案都包含元數據。公共語言運行庫使用元數據來完成以下任務:查找和載入類,在記憶體中安排實例,解析方法調用,生成本機代碼,強制安全性,以及設定運行時上下文邊界。
公共語言運行庫自動處理對象布局並管理對象引用,當不再使用對象時釋放它們。按這種方式實現生存期管理的對象稱為託管數據。垃圾回收消除了記憶體泄漏以及其他一些常見的編程錯誤。如果您編寫的代碼是託管代碼,則可以在 .NET Framework 應用程式中使用託管數據、非託管數據或者同時使用這兩種數據。由於語言編譯器會提供自己的類型(如基元類型),因此您可能並不總是知道(或需要知道)這些數據是否是託管的。
有了公共語言運行庫,就可以很容易地設計出對象能夠跨語言互動的組件和應用程式。也就是說,用不同語言編寫的對象可以互相通信,並且它們的行為可以緊密集成。例如,可以定義一個類,然後使用不同的語言從原始類派生出另一個類或調用原始類的方法。還可以將一個類的實例傳遞到用不同的語言編寫的另一個類的方法。這種跨語言集成之所以成為可能,是因為基於公共語言運行庫的語言編譯器和工具使用由公共語言運行庫定義的通用類型系統,而且它們遵循公共語言運行庫關於定義新類型以及創建、使用、保持和綁定到類型的規則。
所有託管組件都帶有生成它們所基於的組件和資源的信息,這些信息構成了元數據的一部分。公共語言運行庫使用這些信息確保組件或應用程式具有它需要的所有內容的指定版本,這樣就使代碼不太可能由於某些未滿足的依賴項而發生中斷。註冊信息和狀態數據不再保存在註冊表中(因為在註冊表中建立和維護這些信息很困難)。取而代之的是,有關您定義的類型(及其依賴項)的信息作為元數據與代碼存儲在一起,這樣大大降低了組件複製和移除任務的複雜性。
語言編譯器和工具公開公共語言運行庫的功能的方式對於開發人員來說不僅很有用,而且很直觀。這意味著,公共語言運行庫的某些功能可能在一個環境中比在另一個環境中更突出。您對公共語言運行庫的體驗取決於所使用的語言編譯器或工具。例如,如果您是一位 Visual Basic開發人員,您可能會注意到:有了公共語言運行庫,Visual Basic 語言的面向對象的功能比以前多了。

優點

下面是公共語言運行庫的一些優點:
性能得到了改進。
能夠輕鬆使用用其他語言開發的組件。
類庫提供的可擴展類型。
新的語言功能,如面向對象的編程的繼承、接口和重載;允許創建多執行緒的可縮放應用程式的顯式自由執行緒處理支持;結構化異常處理和自定義屬性支持。
如果使用 Microsoft® Visual C++® .NET,則可以使用 C++ 託管擴展來編寫託管代碼。C++ 託管擴展提供了託管執行環境以及對您所熟悉的強大功能和富於表現力的數據類型的訪問等優點。其他公共語言運行庫功能包括:
跨語言集成,特別是跨語言繼承。
垃圾回收,它管理對象生存期,使引用計數變得不再必要。
自我描述的對象,它使得使用接口定義語言 (IDL) 不再是必要的。
編譯一次即可在任何支持公共語言運行庫的 CPU 和作業系統上運行的能力。
還可以使用 C# 語言編寫託管代碼。C# 語言提供了下列優點:
完全面向對象的設計。
非常強的類型安全。
很好地融合了 Visual Basic 的簡明性和 C++ 的強大功能。
垃圾回收。
類似於 C 和 C++ 的語法和關鍵字。
使用委託取代函式指針,從而增強了類型安全和安全性。函式指針通過 unsafe C# 關鍵字和 C# 編譯器 (Csc.exe) 的 /unsafe 選項可用於非託管代碼和數據

相關詞條

相關搜尋

熱門詞條

聯絡我們