为什么使用dll而不是类

时间:2014-01-25 10:06:47

标签: c# .net

我加入了一个他们使用c#的新项目。 我注意到在参考文献

中添加了几个dll

根据我的知识和我所做的电子学习,在构建一个类(包含一些方法和数据)后,会生成一个DLL。

现在在一个新项目中,刚刚转换为DLL的类被添加为引用,以便可以调用其中定义的函数。

所以,现在我的问题是: 1)将类文件转换为DLL文件的需求是什么。即使它是一个类文件,我仍然可以通过在代码顶部添加其命名空间来调用其中定义的函数

2)如果在添加DLL的引用之后,我删除了项目的全部内容,只保留了dll不变(并且在同一个地方),使用此dll的类是否仍然可以工作

4 个答案:

答案 0 :(得分:9)

将代码分成不同的项目(每个项目将创建一个单独的程序集)具有各种好处:

  • 它使您的代码结构清晰。例如,它可以将您的存储层与业务逻辑以及用户界面分开。
  • 它允许重用:例如,两个不同的用户界面可以引用包含业务逻辑的同一程序集。
  • 它允许更大的封装:在它们自己的程序集中只需要 的类可以声明为internal(这是C#中顶级类的默认值),这意味着代码在其他集会中甚至不知道他们。如果您的所有代码都在一个程序集中,那么所有这些类将相互“了解”。

现在选择有多少项目是平衡行为 - 我当然看到应用程序已经过多了很多太多了,许多程序集只包含一个类。如果您有大量的程序集,那么在项目和参考管理方面就会变得很麻烦。但是,如果只有少数程序集,则会更难以干净地重用该代码。

答案 1 :(得分:0)

除了Jon Skeets answer之外,我还想添加“可更新性”。对我来说,这有两个好处

  • 一个是如果只需要重建一个项目,则构建时间会变小
  • 和第二,推送到“发布”可能仅限于几个dll而不是一个主要的.exe。

第一个在C#中可能不是什么大问题,因为项目构建速度非常快,但是例如切换到C ++会产生很大影响,因为C ++代码需要很长时间才能编译。

答案 2 :(得分:0)

分离的好处是它允许您在不破坏客户端代码的情况下更改内部实现。如果您决定需要更改代码的界面,它不会保护您,但这是另一回事。

他们可以重用他们的代码。但是如果他们每次需要实现这些类时都使用类(以最好的方式复制并粘贴所有代码)

当他们使用dll代替类时,他们可以通过更新一个或多个dll轻松更新所有项目,尽管如果你在多个项目中使用类,你应该修改所有项目中的所有类。

答案 3 :(得分:0)

我可能会补充说,类是语言构造,而程序集是部署包。 在UML中,这两个完全不同。

http://en.wikipedia.org/wiki/Package_(UML)

在接近细分解决方案的新想法时,项目可能被视为放置名称空间(即文件夹)和类(即文件)的“位置”。

您需要一些时间才能意识到项目最适合层次(或层)的概念,这是系统的架构分离。

在对系统进行分层时,你会发现要解决的最关键问题是分层之间的依赖关系(这将是对项目或dll的引用)。

不能有循环但更重要的是,您应该研究SOLID的OCP(开放 - 封闭原则)和ISP(接口隔离原则)和DIP(依赖性反转原理):

http://en.wikipedia.org/wiki/SOLID_(object-oriented_design)

届时将出现一个新问题。你怎么知道哪些课程相互依赖或不相关?您可以绘制类图,但有一个概念性的方法来解决问题。多年来,它成为设计系统的“实践”。这些概念在GRASP中用于教育目的:

http://en.wikipedia.org/wiki/GRASP_(object-oriented_design)

用于分层的GRASP最重要的部分是“低耦合”和“高内聚”。换句话说,你应该在一个层中批处理功能非常相似的类,并通过功能上彼此不太相关的分层类分开。

相关问题