【发布时间】:2021-08-01 14:39:33
【问题描述】:
我的问题很直接,正如主题中提到的那样。
但是,请允许我在这里简要解释一下我的无辜想法。
我已经使用 Axon 大约 10 个月了。我曾经基于 Hexagonal architecture 设计我的项目结构,其中两个顶级包分别为domain 和infrastructure。
此外,domain 包将包含不同的域对象(如 DDD 概念中所述),如下所示:
-
Aggregate(这将是一个 Axonaggregate类)。 -
Repository(在我的例子中,这将是一个 Spring Data Repository 接口)。 -
Entity(在我的例子中,它包含我用于基于集合的一致性验证的任何查找实体,如 here 所写)。 -
Service Port(Input和Ouput端口接口的集合)。 -
Commands(代表AxonCommand对象)。
至于Events,我曾经将它们放在我编译为jar 文件的不同模块上,因此我可以将其分享给其他将在他们的项目中使用相同事件的开发人员。
我最近注意到我所有的命令和事件基本上都是贫血模型(我们应该避免的反模式)。 有什么好的做法吗?或者,它是设计有意使用的东西吗?
我一直在考虑将我的 Command 类放在我的 Aggregate 类中(作为内部类)。至少通过使用这种方法,我最终不会有这么多贫血模型分散在外面。有什么想法吗?
【问题讨论】: