依赖管理.Net:类或程序集?

时间:2018-01-04 15:15:42

标签: c# .net architecture software-design

如果我希望我的业务域对象不依赖于数据库,我的域类是否应该在单独的程序集中?

请考虑以下事项:

Core.dll - 包含业务对象,参考资料非常有限

Application.dll - 包含将业务对象保存到数据库的存储库。此程序集引用SQLClient.dll和其他外部库

Web.dll - Web应用程序。需要引用Core.dll和Application.dll

这个限制,是我无法很好地利用访问修饰符。我希望存储库类有一些方法/数据可以访问但不能访问Web.DLL中的类。

我有两种方法来研究这个问题。

  1. 可以将Core.dll与Application.dll合并,只要业务逻辑类不导入不必要的库(如SqlClient)。存储库和域类应该在同一个程序集中,因为它们经常一起更改。

  2. 将Core.dll和Application.dll分开是更好的,因为您可以引用Core.DLL而无需引用其他库(如SQLClient)。您可以共享命名空间或使用InternalsVisibleTo在业务对象和数据访问之间创建层

  3. 哪个社区被认为是更好的做法?

1 个答案:

答案 0 :(得分:0)

根据您的想法,我绝对会继续您的第二种方法,分别保留Core,Application和Web。每个都有自己独特的组件和功能。