公共語言運行庫中的程序集_01概述

 

程序集概述

程序集是 .NET 框架編程的基本組成部分。程序集完成以下功能:

1)      程序集包含公共語言運行庫執行的代碼。如果可移植可執行 (PE) 文件沒有相關聯的程序集清單,則將不執行該文件中的 Microsoft 中間語言 (MSIL) 代碼。請注意,每個程序集只能有一個入口點(即 DllMainWinMain Main)。

2)      程序集形成安全邊界。程序集就是在其中請求和授予權限的單元。

3)      程序集形成類型邊界。每一類型的標識均包括該類型所駐留的程序集的名稱。在一個程序集範圍內加載的 MyType 類型不同於在其他程序集範圍內加載的 MyType 類型。

4)      程序集形成引用範圍邊界。程序集的清單包含用於解析類型和滿足資源請求的程序集元數據。它指定在該程序集之外公開的類型和資源。該清單還枚舉它所依賴的其他程序集。

5)      程序集形成版本邊界。程序集是公共語言運行庫中最小的可版本化單元,同一程序集中的所有類型和資源均會被版本化爲一個單元。程序集的清單描述您爲任何依賴項程序集所指定的版本依賴性。

6)      程序集形成部署單元。當一個應用程序啓動時,只有該應用程序最初調用的程序集必須存在。其他程序集(例如本地化資源和包含實用工具類的程序集)可以按需檢索。這就使應用程序在第一次下載時保持精簡。

7)      程序集是支持並行(side-by-side)執行的單元。

程序集可以是靜態的或動態的。靜態程序集可以包括 .NET 框架類型(接口和類),以及該程序集的資源(位圖、JPEG 文件、資源文件等)。靜態程序集存儲在磁盤上的可移植可執行 (PE) 文件中。您還可以使用 .NET 框架來創建動態程序集,動態程序集直接從內存運行並且在執行前不存儲到磁盤上。您可以在執行動態程序集後將它們保存在磁盤上。

有幾種創建程序集的方法。您可以使用過去用來創建 .dll .exe 文件的開發工具,例如 Visual Studio 2005。您可以使用 Windows 軟件開發工具包 (SDK) 中提供的工具來創建帶有在其他開發環境中創建的模塊的程序集。您還可以使用公共語言運行庫 API(例如 Reflection.Emit)來創建動態程序集。

 

程序集的優點

程序集旨在簡化應用程序部署並解決在基於組件的應用程序中可能出現的版本控制問題。

最終用戶和開發人員比較熟悉當今基於組件的系統所產生的版本控制和部署問題。一些最終用戶曾經歷過在計算機上安裝新應用程序失敗的事情,發現已有應用程序突然停止工作。許多開發人員花費了大量的時間來使所有必需的註冊表項保持一致,以便激活 COM 類。

通過在 .NET 框架中使用程序集,許多開發問題得以解決。因爲程序集是不依賴於註冊表項的自述組件,所以程序集使無相互影響的應用程序安裝成爲可能。程序集還使應用程序的卸載和複製得以簡化。

版本控制問題

目前,Win32 應用程序存在兩類版本控制問題:

1)      版本控制規則不能在應用程序的各段之間表達,並且不能由操作系統強制實施。目前的辦法依賴於向後兼容,而這通常很難保證。接口定義一經發布就必須是靜態的,並且單段代碼必須保持與以前版本向後兼容。此外,通常要對代碼進行設計,以便在任意給定時間在計算機上只能出現和執行代碼的一個版本。

2)      沒有辦法在創建到一起的多套組件集與運行時提供的那套組件之間保持一致。

這兩類版本控制問題結合在一起產生了 DLL 衝突,在這些衝突中,安裝一個應用程序可能會無意間破壞現有的應用程序,因爲所安裝的某個軟件組件或 DLL 與以前的版本不完全向後兼容。出現此情況後,系統不支持診斷和解決此問題。

最終解決 DLL 衝突

Microsoft® Windows® 2000 開始致力於解決這些問題。它所提供的兩個功能可以部分地解決 DLL 衝突:

1)      Windows 2000 使您能夠創建這樣的客戶端應用程序,其中的 .dll 依賴文件與該應用程序的 .exe 文件位於相同的目錄中。Windows 2000 經過配置,能夠在檢查完全限定的路徑或搜索常規路徑前,檢查 .exe 文件所在目錄中的組件。這使組件可以獨立於其他應用程序所安裝和使用的組件。

2)      Windows 2000 鎖定 System32 目錄中隨操作系統提供的文件,使這些文件不會在安裝應用程序時被無意替換。

公共語言運行庫使用程序集來繼續致力於 DLL 衝突的徹底解決。

程序集解決方案

爲了解決版本控制問題以及導致 DLL 衝突的其餘問題,運行庫使用程序集來執行以下功能:

1)      使開發人員能夠指定不同軟件組件之間的版本規則。

2)      提供強制實施版本控制規則的結構。

3)      提供允許同時運行多個版本的軟件組件(稱作並行執行)的基本結構。

 

原文地址:

http://msdn.microsoft.com/zh-cn/library/k3677y81(v=VS.90).aspx
http://msdn.microsoft.com/zh-cn/library/6h38y9z9(v=VS.90).aspx

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章