2009-12-07 71 views
2

我一直在想方法來重構一個相當廣闊的類/實用程序庫,我想我要做的一件事是分離出任何引入新依賴關係的更高級別的幫助工具。我在這裏閱讀了一些以前的問題,我特別注意到的是關於Microsoft如何在DLL之間自由使用名稱空間的評論。給出的示例是System.Web - 它位於基本框架中,但也有一個System.Web.dll,如果您需要它可以爲命名空間添加更多功能。爲什麼這麼多個人System.Web。* DLL?

我還注意到其他幾個System.Web.* DLLs可用,我想知道是否有一個原因,他們不會被合併成一個DLL。難道他們有自己的獨立依賴關係嗎?微軟(像我一樣)想要按照這些方式分開程序集?還是維護更容易?還有其他的東西嗎?

回答

3

他們不是1 .dll的原因是因爲不同版本的框架。下版本

的System.Web 2.0

System.Web.Abstractions, System.Web.DymanicData, System.Web.DymanicData.Design, 等。 。 。 System.Web.Extensions

都是在3.5框架下編寫的。

如果您將System.Web更改爲1 .dll,然後所有用戶都必須更改.NET 3.5框架,則IIS仍使用2.0。

+0

好點,這並沒有發生在我身上。 – toasteroven 2009-12-07 16:08:51

2

嗯,可能有其他答案,但對我來說最重要的是安全角度。您授予程序集權限,而不是命名空間。這將允許您通過名稱空間通過意圖對類進行邏輯分組,但具有訪問組合在一起的資源的類。

哦,你也可以有語言中立的程序集,允許你在不同的程序集中對語言相關的程序進行分組。

1

僅當ASP.net服務器正在處理並提供頁面或Web服務時,許多System.Web程序集才被使用。它們通常不是客戶端.Net應用程序所必需的,並且不包括在較小的.Net客戶端配置文件中。一個枯燥的.Net框架版本。 (參考:http://msdn.microsoft.com/en-us/library/cc656912.aspx