0

据我了解,六边形架构的关键规则之一是域层​​如何与除与它一起工作的应用程序层之外的所有事物隔离(域层完全没有依赖关系,因为它位于核心中):

在此处输入图像描述

那么我的问题是,域层是否做过任何工作或对数据持久性有任何了解?假设我们有一些业务逻辑依赖于被检索然后持久化的数据,它应该总是应用层来编排吗?

加载业务逻辑运行所需的一切 -> 告诉领域层运行所有业务逻辑 -> 提取业务逻辑的结果并告诉基础设施层持久化它们 ->

从这个意义上说,应用层不是总是需要跟踪领域层计算的任何结果,因此总是会实现某种 UnitOfWork 模式来跟踪这些结果吗?

域层会与存储库或存储库的接口一起使用吗?有一些消息来源似乎表明这很好,从我的角度来看,这与图表完全矛盾。

4

1 回答 1

2

假设我们有一些业务逻辑依赖于被检索然后持久化的数据,它应该总是由应用层来编排吗?

在理想化的设置中,您有清晰的关注点分离:域模型使用本地内存中已有的信息计算事物,以及协调从/到本地内存复制信息的应用程序代码。

表达方式有所不同:我们应该能够在完全不干扰领域模型实现的情况下替换所有管道。

在简单的版本中,我们立即知道我们在本地需要什么信息,因此应用程序可以获取所有内容的副本,域模型计算更改,然后应用程序代码将本地更改复制到它们需要的位置。

在我们不一定事先知道我们需要的所有信息的情况下,这会变得更加棘手。在这些情况下,您最终会在询问域模型它需要什么信息,然后获取它,或者将查找信息本身的能力传递给域模型之间做出选择。

您可能不会直接从域模型中使用 REPOSITORY - 不完全是;您更有可能看到域服务。换句话说,获取某些信息的能力可能具有您将某些表示形式作为参数传递给域模型,以便它可以例如执行自己的查询。

注意:在 Evans 的原著中,域服务是在对域进行建模时出现的一种模式(第 5 章),而存储库是一种出现在生命周期管理中的模式(第 6 章)。

分布式信息通常涉及故障模式,我们通常希望我们的域代码不被一堆故障管理逻辑弄乱,就像我们通常不希望我们的域代码关心一堆持久性一样担忧。

也可以看看

于 2021-03-25T00:28:49.063 回答