在CQRS(命令处理程序或域事件处理程序)中保存域以写入数据库的最佳位置

时间:2011-01-12 05:18:57

标签: domain-driven-design cqrs

我正在研究CQRS,我看到了一些源代码(Greg Young的SimpleCQRS和Mark Nihjof的)。 我仍然对命令和域事件感到困惑。 我们是否始终需要在域事件处理程序中将域保持为“写入数据库”? 如果我调用代码将域保存到命令处理程序中的数据库(通常通过域存储库),然后让域事件处理程序处理其他东西(例如:更新读取模型和执行其他服务,如电子邮件通知),这是很常见吗? 感谢。

1 个答案:

答案 0 :(得分:7)

存储事件:我不会使用事件处理程序来保留事件。将命令处理程序委托给存储库或工作单元可能是使用事件源时最常用的方法。所以,是的,命令处理程序中的持久性很常见(好吧,委托它)并让事件处理程序做其他事情。

存储状态:当不使用事件源时,我假设人们将事件存储在州或更差的地方,而不是根本不存在(使用队列作为持久性机制)。仍然,持久性逻辑驻留在命令处理程序的空间中。

命令捕获意图并告诉系统要做什么。总是使用命令。 事件捕获意图并告知系统中发生了什么。总是过去时。

你让我成为这个话题的新手。掌握CQRS概念可以做的最好的事情是在http://cqrsinfo.comhttp://skillsmatter.com(architecture / ddd)上观看材料。其他关于这个主题的博客(我的头脑):Udi Dahan,Gregory Young,Jonathan Oliver,Rinat Abdullin,JérémieChassaing,...