想象一个实例,其中我们有一个具有值对象集合的实体。
如果我们要向集合添加(例如域概念是分配)一个额外的记录值对象,我们将有如下内容:
entity.assign_record(...)
这将引发:
class RecordAssignedEvent(...)
直线前进。
现在想象一下不变量要求需要替换整个集合的情况。假设现在分配方法将替换实体中的所有当前记录。
IE。
entity.assign_records(list <records>)
引发单个事件会更好:
class RecordsAssignedEvent:
contains details of all records updated
或为每个分配的记录创建一个单独的事件,然后一起发布集合:
class RecordAssignedEvent(...)
我的担忧是:
- 单个 RecordsAssignedEvent 将包含大量数据...想象一下分配了 10 条记录?100?
- 我的领域事件仅包含原始类型。但是,如果我作为单个事件提出,我将被迫创建一些 DTO 或类似的东西以包含为一个集合。该 DTO 现在需要对事件的任何订阅者可用。如果我引发多个事件,我可以轻松地继续限制为原语。
在 DDDSample 应用程序中,有一个类似的场景,其中 Cargo 的行程由多个支路组成(在这种情况下,集合本身是由值对象组成的值对象):
在这些情况下,是否有关于领域事件粒度的任何指导?