.NET架構有兩個主要部分組成:公用語言運行庫(Common Language Runtime ,CLR)和.NET Framework類庫。
.NET Framework的核心是其運行庫的執行環境,稱為公用語言運行庫(CLR)或.NET運行庫。可以看做一個在執行時管理代碼的代理。它提供記憶體管理,線程管理,
和遠端管理等核心服務,並且還強制實施嚴格的型別安全以及可提高安全性和可靠性的其他形式的代碼準確性。
而代碼管理又可以根據是否以運行庫為目標分為兩種:Managed 程式碼和Unmanaged 程式碼。
.NET架構的另一個組成部分是類庫,它是一個綜合性的物件導向的可重用類型集合。可以使用它快速開發多種應用程式。
一.公用語言運行庫(CLR)
公用語言運行庫(CLR)是Managed 程式碼的執行環境,也是.NET Framework的核心和基礎。
基於公用語言運行庫(CLR)開發的代碼稱為Managed 程式碼,Managed 程式碼需要經過兩個編譯階段。
首先要把原始碼編譯成Microsoft中繼語言(MSIL),接著CLR把MSIL編譯成平台專用代碼。
公用語言運行庫(CLR)提供了安全的記憶體管理機制,它會自動處理物件版面配置並管理對象引用,當不再使用對象時釋放它們。按這種方式實現生存期管理的對象稱為管理的資料。而記憶體回收消除了記憶體流失以及其他的一些常見的編程錯誤,因此,程式員不必過多的考慮如何安全的去分配使用記憶體。
MSIL(中繼語言)利用即時(JIT)編譯器完成編程成特定平台的代碼。JIT將代碼編譯為機器碼前必須先對代碼進行驗證,除非管理員已經建立了允許代碼跳過驗證的安全性原則。驗證過程主要負責檢查MSIL和中繼資料以確定代碼是否是型別安全的。這意味著它僅能訪問已被授權訪問的記憶體位置。
那麼運行庫是判斷代碼是否為型別安全的呢?
首先,要求對類型的引用和被引用的類型嚴格相容。其次,在對象上只調用正確定義的操作。再次,表示與聲稱的要求一致。
立即回收器(GC)完成.NET程式中的記憶體管理。對記憶體的管理分為記憶體的分配和記憶體的釋放。
二.程式集
程式集是為了協同工作而產生的類型和資源的集合。這些類型和資源構成了一個邏輯功能單元。
程式集向CLR提供實現所需要的資訊。對於CLR,類型必須處於程式集上下文中。
程式集是 .NET 架構應用程式的產生塊;程式集構成了部署、版本控制、重複使用、啟用範圍控制和安全許可權的基本單元。程式集是為協同工作而產生的類型和資源的集合,這些類型和資源構成了一個邏輯功能單元。程式集為公用語言運行庫提供它要用於識別類型實現的資訊程式集旨在簡化應用程式部署並解決在基於組件的應用程式中可能出現的版本控制問題ms-help://MS.NETFrameworkSDK.CHS/cpguidenf/html/cpconwhyuseassemblies.htm
程式集可以是靜態或動態。靜態程式集可以包括 .NET 架構類型(介面和類),以及該程式集的資源(位元影像、JPEG 檔案、資源檔等)。靜態程式集以 可攜式執行檔格式儲存在磁碟上。您還可以使用 .NET 架構來建立動態程式集,動態程式集直接從記憶體運行並且在執行前不儲存到磁碟上。您可以在執行動態程式集後將它們儲存在磁碟上。