【问题标题】:Dependencies Rule in Onion Architecture is confusing洋葱架构中的依赖规则令人困惑
【发布时间】:2019-04-09 03:16:40
【问题描述】:

在洋葱架构中,依赖规则是由外而内,箭头表示外层依赖下层,如下图:

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

  1. Project.DomainEntities
  2. Project.RepositoryInterfaces(参考 {1})
  3. Project.ServiceInterfaces(参考 {1} 和 {2})
  4. Project.Test(参考 {1}、{2}、{3})
  5. Project.Web(参考 {1}、{2}、{3})

问题是箭头是什么意思还是我设置的解决方法不正确?如果是,你能帮我指出来吗?

谢谢

【问题讨论】:

  • 你从哪里得到的图表?这不是可以在 Jeffrey Palermo 的 initial blog posts 中找到的图表,我发现它相当具有误导性,因为 Jeffrey 指出“内层定义接口。外层实现接口”,这不是您的图表可视化的内容。
  • 第二个@Steven 的评论 - 域实体依赖于存储库接口。这些接口并不与域分开。它们是域的一部分。

标签: dependency-injection architecture onion-architecture


【解决方案1】:

Arrows 在这种情况下是参考方向;例如,在 C# 中,所有内容都会引用域实体,但域实体不会保存对任何内容的引用。

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

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

【讨论】:

    猜你喜欢
    • 2013-01-31
    • 1970-01-01
    • 2015-05-19
    • 2020-03-23
    • 2017-11-23
    • 2011-12-08
    • 2011-10-09
    • 2014-10-15
    • 1970-01-01
    相关资源
    最近更新 更多