三层架构:数据层是否应该依赖于域层,反之亦然?

时间:2010-05-12 13:13:03

标签: dns data-access-layer

这两个选项都正确吗?其中一个比另一个好吗?在什么情况下?是否比其他人更难实现?

2 个答案:

答案 0 :(得分:1)

理想情况下,两者都不应该依赖于另一个 - 但实际上域将依赖于数据层,但希望间接地。

这是什么意思?

数据层不应该依赖于域层。

域层可能会使用数据对象,但理想情况下,您可以通过依赖注入来实现。一种方法是使用接口并仅在编译时引用接口。在运行时通过IoC容器(如Structure Map或Unity)为这些接口提供具体实现。

这也有助于您对解决方案进行单元测试,并强制分离关注点并创建松散耦合的系统。

答案 1 :(得分:0)

通常,域(业务逻辑)层应该依赖于数据层,而不是相反。

理由:

  • 您希望保持更改业务逻辑的灵活性,而不会对数据产生任何不必要的影响
  • 如果您可以将数据层设计为独立于业务逻辑决策,那么数据层将更加简单且不易出错。
  • 域层通常是数据层的调用者,因此不需要反过来生成依赖

这实际上非常类似于域层应该在表示层上具有最小依赖性的方式(尽管在实践中这可能很难实现)。

相关问题