我的公司正在进行辩论。有些人主张在一个程序集中移动业务,数据和业务实体
其他引用应用程序体系结构指南的人希望每个层和业务实体都在一个单独的程序集中。
请注意
有些使用有一种直觉,我们应该分割我们的商业,数据和实体,但缺乏理由。
现在我们的系统中有大约600个dll。所以我们处于一个极端,一切都分开了。有一些肯定会发生合并,但正在提出的是将我们带到一个完全的另一个极端,每个应用程序都在一个dll中。
我可否就这个常见问题获得一些外界观点?
谢谢!
答案 0 :(得分:4)
DLL或程序集是分发的单位。
对我而言,它主要是关于内聚,耦合和重用 我喜欢分布的特定单元中的类是有凝聚力的,我不喜欢分布单元之间的耦合(我几乎总是喜欢依赖于包含接口的第三个分布单元,以便通过依赖于抽象来实现耦合而不是结核)。在决定分配单位时,重用是我的关键。如果代码将在多个应用程序/产品中使用,那么它需要是一个单独的分发单元,其自己的版本号与应用程序版本号分开。
答案 1 :(得分:2)
分割物理部署边界是个好主意。如果您有可以托管以供远程使用的组件,那么单独的程序集是有意义的。对于初学者来说,这可能是你能分开的最简单,最实用的线。例如,当您希望 Web层包含业务服务和数据访问代码时,很少会出现这种情况。
从那里,尝试将程序集减少到对版本有意义的东西。如果你总是需要将10个组件一起复制,那么它们可能应该构建为一个。
答案 2 :(得分:1)
我们团队的目标是尽可能少组装。除了你列出的好处之外,我还发现当DLL数量较少时,更容易处理DLL版本化噩梦。使用过多的程序集也会带来在程序集之间创建循环引用的风险。
我们不会竭尽全力将代码推送到它不属于的程序集中。但是我们绝对不会在没有充分理由的情况下创建新程序集。通常,我们有应用程序的共享逻辑(业务对象等)的程序集和用户界面的程序集(Web程序集,WinForms程序集等)。我们也不会在程序集中复制代码/类,以避免创建新的程序集。