gpt4 book ai didi

architecture - 领域事件处理程序 - 它们应该用于应用层问题吗?

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

在实现领域事件时,事件处理程序应该只用于纯粹的领域问题;您将与业务专家讨论的内容,或者他们是否愿意被对域模型感兴趣的任何人使用?

这可能最好用一个简单的例子来解释,考虑一个用于为员工安排工作的日历应用程序。

我们可能有以下领域事件...

已添加预约
预约已删除
约会内容已更改
约会已移动

我们有这些事件的处理程序,例如,当约会被移动到员工工作时间以外的时间时,我们会设置警告标志。

当然也有对这些事件感兴趣的应用程序问题,例如将约会添加到日历后,我们应该将其添加到工作单元,以便稍后提交更改。

这些应用程序应该关注领域事件的消费者,还是应该引发和处理单独的系统事件?

最佳答案

在 DDD 解决方案中,有两种成熟的使用事件的方法。

第一个是基于Udi Dahan的articles about events .如果您还没有阅读过它们,我强烈建议您阅读。总之,它表示您使用静态类 发布事件。除了正常的 ORM 风格的行为。所以你添加一个订单到客户的订单集合 你发布事件。因为您的域行为是在事务范围内执行的,所以事件处理程序也是如此。您还可以在那里找到并建议不要手动将对象附加到工作单元。新的聚合根应该通过调用现有的行为来创建。

还有另一种选择是由 Greg Young 提出的。它基于事件源,它基本上使用事件作为持久状态的手段。在这种方法中,您的聚合根通常使用一些基础设施(例如基本聚合根类)来应用事件。 Apply 确实在聚合根类 上调用事件处理程序和 在总线上发布此事件(无论您使用什么总线实现)。

关于architecture - 领域事件处理程序 - 它们应该用于应用层问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4631697/

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