微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

CQRS事件源值对象和接受命令的实体

如何解决CQRS事件源值对象和接受命令的实体

专家

我正在评估将一个设计精美的DDD应用程序作为一个宠物项目移至事件源架构。

可以推断,我的“聚合”操作的粒度相对较粗。作为设计过程的一部分,我现在发现自己会从一小部分操作中发出大量事件,以满足我对读取模型的要求。这是可以接受的做法吗?

除此之外,我还通过使用ValueObjects和实体提炼了很多领域的复杂性。 VO的E可以接受命令并自己发出事件,还是应该公开状态并从命令处理程序中向下添加堆栈?

就VO而言,我很少使用可变操作,这是在使域的其他区域过于复杂之间进行权衡的问题。

解决方法

我现在发现自己从一小部分操作中发出大量事件,以满足我对读取模型的要求。这是可以接受的做法吗?

在大多数情况下,您应该通过命令执行1个事件。请记住,事件描述了用户的意图,因此您必须密切注意用户的操作。

VO / E是否可以接受命令并自己发出事件

不仅聚集会发出事件,是的,如果您有很多事件,您可以提出非常混乱的聚集,但是有一些解决方案,例如将工作委托给命令和事件本身。我在这里写了关于这种技术的博客:https://dev.to/maximegel/cqrs-scalable-aggregates-731

就VO而言,我很少使用可变操作

只要您知道后果。没关系。权衡是工作的一部分,但是请确保您的团队意识到,因为到处都写着价值对象是不可变的,这会使您自己陷入混乱和指针问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。