㈠ .NET 解釋術語:CLR、FCL、IL、Assembly(程序集) 簡述.NET Framework的架構及各模塊主要功能
CLR常用簡寫詞語,CLR是公共語言運行時,Common Language Runtime)和Java虛擬機一樣也是一個運行時環境,它負責資源管理(內存分配和垃圾收集),並保證應用和底層操作系統之間必要的分離。
.net框架中包括有一組.net框架類庫(Framework Class Library,簡稱FCL)程序集,其中含 有幾千個類型的定義,每個類型都提供了某種功能。
IL又稱為(interpretative language 解釋語言),我們.NET開發人員必定離不開IL,就算您沒有學習,也一定可以在各處看到它的身影。而且IL也是.NET唯一懂得的語言,我們每天其實都在使用著ILIL是中間層語言
上層代碼編譯完成後都要轉換為中間語言供CLR使用
IL為Intermediate Language
有時候也叫Microsoft Intermediate Language
中間語言使得在.Net中各種語言的方便交互成為了可能。
assembly, 這里把它翻譯為配件, 以示和組件(Component)加以區別.
一個配件有時候是指一個EXE或者DLL文件, 實際上是一個應用程序(就是指帶有主程序
入口點的模塊)或者一個庫文件. 但是配件實際上可以是由一個或者多個文件組成
(dlls, exes, html等等), 代表一組資源, 以及類型的定義和實現的集合. 一個配件也可
以包含對其它配件的引用. 所有這些資源、類型和引用都在一個列表(manifest)中描述?nbsp;
U飧鰉anifest也是配件的一部分,所以配件是一個自我描述的,不需要其它附加的部件
對其描述!配件的另一個重要特性是,它是.Net環境下類型標識的一部分,也可以說
是基本單位。因為,區分一個類型的標識就是包含這個類型的配件名字加上類型名本身。
舉個例子,配件A定義了類型T, 配件B也定義了同名類型T,但是.Net把這兩個類型認為是
不同的類型。 注意,不要把配件(assembly)和名字空間(namespace)混淆起來。其實
名字空間僅僅是用來把類型名用樹的形式組織起來的手段。對於運行是環境來講,類型名
就是類型名,和名字空間一點關系都沒有。 總之,記住配件名加上類型名唯一標識一個
運行時類型。 另外,配件也是.Net框架用於安全策略的基本單位,許多安全策略都是
基於配件的。
㈡ .dll的.NET Framework 程序集
在引入 Microsoft .NET 和 .NET Framework 以後,編譯NET Framework的類成DLL文件,優點是安全保密和快速調用,大多數與 DLL 相關聯的問題已經通過使用程序集消除了。程序集是在 .NET 公共語言運行庫 (CLR) 控制之下運行的邏輯功能單元。程序集實際上是作為 .dll 文件或 .exe 文件存在的。但是,在內部,程序集與 Microsoft Win32 DLL 大不相同。程序集文件包含程序集清單、類型元數據、Microsoft 中間語言 (MSIL) 代碼和其他資源。程序集清單包含程序集元數據,以提供使程序集成為自描述程序集所需的全部信息。程序集清單中包含以下信息: 程序集名稱 版本信息 區域性信息 強名稱信息 程序集文件列表 類型引用信息 引用和依賴程序集信息程序集中包含的 MSIL 代碼是無法直接執行的,需要通過 CLR 來執行。默認情況下,當您創建一個程序集時,該程序集是應用程序專有的。要創建共享程序集,需要為該程序集分配強名稱,然後在全局程序集緩存中發布該程序集。
下表說明了程序集的一些功能,並將其與 Win32 DLL 的功能進行了比較: 自描述當您創建程序集時,CLR 運行該程序集所需的全部信息都包含在程序集清單中。程序集清單包含一個依賴程序集列表。因此,CLR 可以維護一組在應用程序中使用的一致的程序集。在 Win32 DLL 中,當您使用共享 DLL 時,無法維護應用程序中使用的一組 DLL 之間的一致性。 版本控制在程序集清單中,版本信息由 CLR 記錄和實施。另外,可以通過版本策略來實施版本特定用法。在 Win32 DLL 中,無法由操作系統實施版本控制。相反,您必須確保 DLL 向後兼容。 並行部署程序集支持並行部署。一個應用程序可以使用一個版本的程序集,而另一個應用程序可以使用另一不同版本的程序集。從 Windows 2000 開始,通過將 DLL 放置到應用程序文件夾中支持並行部署。另外,Windows 文件保護能夠防止系統 DLL 被未經授權的代理改寫或替換。 獨立和隔離通過使用程序集開發的應用程序可以是獨立的,並且與計算機中正在運行的其他應用程序隔離。這一特性有助於創建零干擾安裝。 執行程序集在程序集清單所提供的並且由 CLR 控制的安全許可權下運行。 語言無關性可以通過使用任何一種受支持的 .NET 語言來開發程序集。例如,可以在 Microsoft Visual C# 中開發程序集,然後在 Microsoft Visual Basic .net項目中使用該程序集。