在.NET(Visual Studio)中,何时创建新程序集?


9

我正在开发Silverlight应用程序。我将其拆分为几个程序集:

  • 存储库(所有保存到Sterling数据库的东西)
  • 用户界面
  • ...

这就是我学到的方法,但我想知道。如果您知道这些DLL将不会被重用,是否有必要将它们拆分?还是可以将所有内容放在一个程序集中并使用文件夹和命名空间来保持整洁?

我也看到过有太多程序集的项目。而不是在适当的地方使用名称空间。

那么:什么时候为一些新代码创建新程序集?关于这个主题有什么好的资源吗?您是否在技术上(域,数据,UI等)和/或功能上(例如,患者管理,患者医疗,医院后勤……等)拆分了代码?可能仅适用于大型企业级应用程序?

Answers:


1

我建议为逻辑上属于“模块”的类创建单独的程序集。这不仅有利于重用和维护,而且是在类之间强制执行最少数量的依赖关系的方法。

任务是使每个程序集需要的对其他程序集的引用数量最小化,这主要是通过接口和事件来完成的。将类放在不同的程序集中会使依赖关系非常明显。相比之下,如果只使用一个程序集,那么由于可以访问所有内容,因此很容易忽略对依赖关系的思考。

当然,您不应夸大其词,而应在适当的地方分开。这样思考:“这些类属于同一类,不需要了解这些类”,并沿这些线分开


1
取决于“模块”的含义,但是我通常使用名称空间而不是程序集来划分相关的逻辑。请记住,名称空间可以跨越程序集。程序集是部署的单元,因此您应该考虑剪切程序集以匹配您的部署方案。
艾德·詹姆斯

3
这不是一个好主意。当一个解决方案包含多个项目时,VS将变得非常缓慢。
nikie 2011年

4
如果您的VS太迟钝,则说明您是在运行旧版本或运行缓慢的计算机。我有30多个项目,可在几秒钟内完成编译。再说一遍,我确实有很多ram,内核和SSD :)当然,您不应该夸张,而应该分开,像这样思考:“这些类属于同一类,不需要了解这些类”,并且沿这些方向分开
洪德堡2011年

因为有关于依赖项的评论,所以将此标记为答案。埃德·詹姆斯(Ed James)的回答至少具有同等价值和正确性,但该回答更适合我的情况。
彼得

2
按照这一办法,你可以带着一帮组件的结束:ABCDEFGHIJK。无论你引用组装A,还必须引用其依赖的组件:BCD。但装配C是依赖于:EFGH所以我们会需要这些呢。因此,每当需要某些功能时,A都必须拉下7个额外的程序集才能使其正常工作;确保获得每个程序集的正确版本。欢迎使用新的DLL Hell。
艾德·詹姆斯

14

程序集是.NET应用程序的部署单位。因此,您应该考虑将程序集的切割与部署架构相匹配。

当您需要对某些代码进行单独的版本控制时,程序集也很有用。例如,当您拥有可从独立版本控制中受益的通用接口时,应将该代码分成一个程序集。

请记住,名称空间可以跨越程序集。在很多情况下,使用名称空间分隔行为就足够了。看一下.NET mscorlib.dll,它在单个程序集中包含的代码覆盖了仅由名称空间分隔的大量行为。

如果您想在这个问题上拥有一些权威,那就别无所求:

框架设计准则

框架设计指南: Krzysztof Cwalina和Brad Abrams编写的可重用.NET库的约定,惯用语和模式(第二版)


确实感谢您提供本书参考。我会检查一下。您能否详细介绍部署架构?部署10个DLL文件与部署1个DLL文件有何不同?除非您能够更新十个文件之一,而其他文件保持不变?
彼得

1
@Peter:如果您编码了总是一起部署的10个程序集,那么可以通过将所有代码放入一个程序集中来简化版本控制和部署。如果这10个组件未始终部署在一起,那么使用单独的组件会很有用。
艾德·詹姆斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.