【问题标题】:DDD/CQRS : where to persistDDD/CQRS:持久化的地方
【发布时间】:2012-07-03 01:27:09
【问题描述】:

我们最近开始使用 DDD 和 CQRS(无事件溯源)的概念开发应用程序。我仍然有些困惑,究竟在哪里调用存储库来保存我的聚合根。

我是在命令处理程序中执行还是在事件处理程序中执行?

【问题讨论】:

    标签: domain-driven-design cqrs


    【解决方案1】:

    您在命令处理程序中执行此操作。您可以正常保存域对象。即使您没有使用事件溯源作为持久化域实体的一种方式,您仍然需要触发查询服务将订阅的事件。然后,读取端的事件处理程序将更新为 UI 屏幕定制的非规范化表。所以基本上你有两组数据访问代码:一组用于域,一组用于查询服务(读取端)。如果您使用事件溯源来持久化您的域实体,它的工作量就会减少...

    【讨论】:

    • 谢谢。在长时间运行的“事务”(Sagas?)的情况下,这些最终是否也应该抛出命令?其次,我假设命令不一定来自用户界面,对吧?
    • 没错——命令发布不是 UI 独有的。 Saga 可以发出命令,事件处理程序也可以。后者的典型示例是更新查询失败,需要发出补偿命令来撤消原始命令。
    猜你喜欢
    • 2015-09-17
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2020-03-20
    • 2011-02-07
    • 2014-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多