domain-driven-design - DDD、CQRS、事件溯源、聚合、相关聚合和持久性
问题描述
我刚刚进入 DDD、CQRS 和事件溯源,并且在相关聚合的概念以及在发布涉及两者的事件时可以在两者之间共享多少数据时遇到问题。我的问题...我有一个客户聚合,其中包含一组地址聚合和一个在将地址添加到客户时发布的事件。地址和客户聚合都与电话号码/销售人员和联系人保持关系。
我的理解是我只能通过 id 从另一个聚合中引用聚合。只要我只从客户聚合中引用地址 ID,我是否可以在添加地址时向客户传递更多关于地址的数据,而不仅仅是地址聚合 ID?
我认为我需要额外的数据,所以当我发布事件时,我最终可以将该数据/关系与读取端保持到客户地址表中。
解决方案
当您发现自己试图访问属于另一个聚合的数据时,您应该仔细检查以确保您的聚合边界符合您的需求。
也就是说,将信息从一个聚合复制到另一个聚合是合理的。例如,在发货域中,我们可能会将发货地址复制到每个发货中,但我们可能不会在发货实体本身内管理发货地址的生命周期。
所以我们倾向于关注哪些实体持有权威信息,哪些使用的是陈旧的不可变副本。请参阅外部的 Pat Helland数据......
推荐阅读
- azure - Azure Functions - 并发问题
- php - 如何使用 PATCH HTTP 方法从请求对象中获取 JSON 格式的表单内容?
- javascript - 如何通过发布请求将形状像一些JSON对象数组的字符串传递给数组
- java - CentOS7:将默认 JAVA 设置为 Oracle JDK 而不是 openJDK
- android - REST api 通过改造返回不同的数据类型
- angular - 我想通过 xmlHttpRequest 在 azure 上以角度 5 访问本地文件
- authentication - Nuxeo:激活匿名用户后无法登录
- python - QTabWidget 中 QListWidget 上的 QScroller 不起作用
- c# - 使用 LINQ 从具有特定名称的数组中获取 GameObject
- java - JSch:从私钥文件创建公钥