Answers:
我建议为逻辑上属于“模块”的类创建单独的程序集。这不仅有利于重用和维护,而且是在类之间强制执行最少数量的依赖关系的方法。
任务是使每个程序集需要的对其他程序集的引用数量最小化,这主要是通过接口和事件来完成的。将类放在不同的程序集中会使依赖关系非常明显。相比之下,如果只使用一个程序集,那么由于可以访问所有内容,因此很容易忽略对依赖关系的思考。
当然,您不应夸大其词,而应在适当的地方分开。这样思考:“这些类属于同一类,不需要了解这些类”,并沿这些线分开
A
,B
,C
,D
,E
,F
,G
,H
,I
,J
,K
。无论你引用组装A
,还必须引用其依赖的组件:B
,C
,D
。但装配C
是依赖于:E
,F
,G
,H
所以我们会需要这些呢。因此,每当需要某些功能时,A
都必须拉下7个额外的程序集才能使其正常工作;确保获得每个程序集的正确版本。欢迎使用新的DLL Hell。
程序集是.NET应用程序的部署单位。因此,您应该考虑将程序集的切割与部署架构相匹配。
当您需要对某些代码进行单独的版本控制时,程序集也很有用。例如,当您拥有可从独立版本控制中受益的通用接口时,应将该代码分成一个程序集。
请记住,名称空间可以跨越程序集。在很多情况下,使用名称空间分隔行为就足够了。看一下.NET mscorlib.dll
,它在单个程序集中包含的代码覆盖了仅由名称空间分隔的大量行为。
如果您想在这个问题上拥有一些权威,那就别无所求:
框架设计指南: Krzysztof Cwalina和Brad Abrams编写的可重用.NET库的约定,惯用语和模式(第二版)。