Onion体系结构中的依赖关系规则令人困惑

时间:2019-04-09 03:16:40

标签: dependency-injection architecture onion-architecture

在Onion Architecture中,依赖性规则是由内而外的,箭头表示外层依赖于下层,如下图所示:

enter image description here

在现实世界中,假设我们的项目结构如下:

  1. Project.DomainEntities
  2. Project.RepositoryInterfaces(对{1}的引用)
  3. Project.ServiceInterfaces(对{1}和{2}的引用)
  4. Project.Test(对{1},{2},{3}的引用)
  5. Project.Web(对{1},{2},{3}的引用)

问题是箭头是什么意思,或者我设置的解决方案不正确?如果是,您能帮我指出吗?

谢谢

1 个答案:

答案 0 :(得分:2)

enter image description here在这种情况下,箭头将作为参考方向;例如,在C#中,所有内容都将引用域实体,但是域实体将不包含对任何内容的引用。

这样做的好处是您不会将任何基础架构逻辑与域逻辑混合在一起,实际上使这成为不可能,因为您的域甚至都不知道ORM之类的东西甚至数据库是什么。

再往前走,您的服务层会知道您的域中存在哪些对象,因此可以设置一个接口来保留您的域对象,但无法将ORM中的对象返回给它;具体的实现将是唯一知道如何持久化域对象的方法,并且必须在返回域对象之前将其从形式转换为域对象。