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