gpt4 book ai didi

event-sourcing - 可以使用事件源进行 FAT 事件吗?

转载 作者:行者123 更新时间:2023-12-04 04:29:03 26 4
gpt4 key购买 nike

我最近一直在 Greg Young EventStore 之上构建一个应用程序作为我的持久层,我一直在思考我应该允许一个事件有多大?

例如,我有一个包含以下字段的英国地址聚合

UK_Address
-BuildingName
-Street
-Locality
-Town
-Postcode

现在我正在使用 React/Redux 构建 UI,并且在想我应该创建一个包含上述所有字段的单个 FAT 地址更新事件吗?

或者我应该为每个不同的领域创建一个事件?并在客户端内对它们进行批处理,直到 Save 事件被触发? buildingNameUpdated 事件、streetUpdated 事件、localityUpdated 事件。

我不确定答案是否像黑白问题一样我已经问过我真正想知道的是您可以使用哪些条件/约束来做出决定?

最佳答案

should I create a event for each of the different fields?



不。您的事件的表示是 API 的一部分——因此您希望使用在业务级别而不是在实现级别有意义的拼写。

Now I'm building the UI using React/Redux and was thinking should I create a single FAT updateAddress Event containing all the above fields?



您不需要限制发送到 UI 的数据以匹配持久性存储中的数据。 UI 只是读取模型的缓存表示;表示没有理由需要与您的事件存储中的内容具有相同的形式。

考虑 React 模型本身——您的代码对数据的“内存”表示进行更改,然后库计算新的 DOM 并替换它,这反过来又会导致浏览器更新其 View ,进而导致改变屏幕上的像素。

因此,从存储中获取一个胖事件,并将其分解为 UI 的字段级事件是可以的。从存储中获取多个事件并将它们聚合到 UI 的单个消息中也很好。从事件存储中获取事件并将它们转换为 UI 能够识别的拼写也很好。

Do you have any comment regarding Arien answer regarding keeping fields that need to be consistent together? so regardless of when your snapshop the current state of the world it would be in a valid state?



我不相信这是有道理的,我不确定一般情况下是否可行。

这没有意义,因为“有效状态”只是写模型问题;事件是已经发生的事情,现在投票是否有效为时已晚。例如,如果您部署一个具有新不变量的新模型,它仍然需要尊重之前发生的历史。因此,您可以为该新模型构建快照,但该快照可能不是“有效”的。太糟糕了。

鉴于此,我认为担心提交中的每个单独事件是否使快照处于有效状态是没有意义的。

特别是,如果特定交易涉及多个实体,领域语言很可能会为每个实体建议一个事件(我们“借方现金”和“贷方应收账款”)。当然,实体本身能够相互独立地改变——它是维持平衡的聚合体。

关于event-sourcing - 可以使用事件源进行 FAT 事件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41213726/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com