DDD和EDA-具有面向集操作的单数与复数事件名称



上下文:我正在开发的产品正在从单体架构转向模块化单体架构,并在此过程中实现DDD概念,以及更受事件驱动的架构。

问题:许多操作都是面向集的(即它们接受一组Items而不是单个CCD_1(。据我所知,这违反了";每个交易一个总变化";,然而Vaughn Vernon在IDDD(第367/368页(中提到UI方便性,允许用户创建批量聚合";(转述(是";可接受的理由";打破这个规则。没有提到相应的事件会是什么样子。

问题:在这种特殊情况下,将所有ItemCreated事件批处理为单个ItemsCreated事件(复数与单数(,并将所有单个事件作为有效载荷,这是否正确
因此,如果用户一次创建10个Items,而不是10个ItemCreated(单数(事件,则我将拥有一个单独的ItemsCreated(复数(事件,并引用10个CCD-7。

其他注意事项:我知道域事件是由聚合发出的,因此事件发出命令和域事件之间应该有1:1的匹配。我不确定事件的批处理是否可以在聚合之外完成。

我知道域事件是由聚合发出的,因此,事件发出命令和域事件之间应该有1:1的匹配。

有很多人强烈地认为;交易";应该必然意味着一个";事件";。我和他们中的一些人争论过。它们并不特别令人信服;但显然我也不是。

1:1很简单,但你必须小心那些在其他地方为简单而更复杂的情况。


在这种特殊情况下,将所有ItemCreated事件批处理在单个ItemsCreated事件中(复数与单数(,并将所有单个事件作为有效负载是否正确?

可能是(但我猜不会(。

我认为你应该更仔细地研究情况的细微差别——在你正在建模的业务领域内,这真的是一件正在发生的事情,还是因为它们是一起交付的,所以10件不同的事情碰巧在时间上重合?

每个关心这一套中某一项的人都一定关心所有这些吗?

如果要实现";创建10〃;作为两个不同的";创建5〃;s、 这需要一个活动吗?两个事件?10个活动?

事实上,你认为这是10个不同的集合(而不是一个包含10个不同实体的集合(,这表明我们确实有10种不同的创造行为值得企业关注。

最新更新