程序集與DLL
庫是可用於開發應用程序的資源集合。庫通常由子程序、函數、類、值和類型組成。在鏈接過程中(通常由鏈接器完成),庫和可執行文件相互引用。DLL文件是動態鏈接的庫文件。DLL是由微軟開發的。但是由於DLL文件存在一些問題,Microsoft提出了彙編文件格式(使用.NET framework)。彙編文件在物理上與DLL非常相似,但它們有許多內部差異。
什麼是DLL?
動態鏈接庫(通常稱為DLL)是由Microsoft開發的共享庫實現。它使用.dll、.ocx或.drv擴展名,它們在Microsoft Windows和OS/2操作系統中使用。dll由常規dll文件使用。ocx擴展名由包含ActiveX控件的庫使用,.drv擴展名由舊系統驅動程序文件使用。DLL文件格式與Windows EXE文件相同(32位/64位Windows上的可移植可執行文件,16位Windows上的新可執行文件)。因此,任何代碼、數據和資源的組合都可以包含在DLL文件中(就像在EXE文件中一樣)。實際上,具有DLL文件格式的數據文件稱為資源DLL。圖標庫(擴展名為.icl)和字體文件(擴展名為.fon和.fot)是資源DLL的示例。
稱為secti***的組件組成一個DLL,每個節都有自己的屬性,比如只讀/可寫和可執行/不可執行。代碼段是可執行的,而數據段是不可執行的。代碼部分是共享的,數據部分是私有的。這意味著使用DLL的所有進程將使用相同的代碼副本,而每個進程都將有自己的數據副本。Windows的主要動態庫是kernel32.dll,它包含Windows上的基本函數(與文件和內存相關的功能)。COM(Component Object Model)是DLL對OOP(面向對象編程)的擴展。傳統的DLL比COM文件更容易使用。
什麼是集合?
Microsoft引入彙編文件是為了解決DLL文件存在的幾個問題。程序集文件是在Microsoft.NET framework中引入的。功能的可執行邏輯單元稱為程序集。程序集可在.NET CLR(公共語言運行庫)下執行。實際上,程序集以EXE或DLL文件的形式存在。但是,它們在內部與Microsoft Win32 DLL有很大不同。一個微軟的元數據,是一個由MISL組成的中間語言。程序集是自描述的。清單包含諸如名稱、版本、區域性、強名稱、文件列表、類型和依賴項等信息。MISL代碼通過CLR執行(不能直接執行)。
程序集和DLL有什麼區別?