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

Domain driven design 保存域以在CQRS中写入数据库的最佳位置(命令处理程序或域事件处理程序),domain-driven-design,cqrs,Domain Driven Design,Cqrs,我现在正在研究CQRS,我看到了一些源代码(Greg Young的SimpleCQRS和Mark Nihjof的)。 我仍然混淆了命令和域事件。 我们是否总是需要在域事件处理程序中持久化域以“写入数据库”? 如果我调用代码将域保存到命令处理程序中的数据库(通常通过域存储库),然后让域事件处理程序处理其他事情(例如:更新读取模型和执行其他服务,如电子邮件通知),这是否常见。 谢谢。存储事件:我不会使用事件处理程序持久化事件。使用eventsourcing时,将其从命令处理程序委派到存储库或工作单元

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

存储事件:我不会使用事件处理程序持久化事件。使用eventsourcing时,将其从命令处理程序委派到存储库或工作单元可能是最常见的方法。因此,是的,在commandhandler中执行持久化(好吧,委托它)并让事件处理程序执行其他事情是很常见的

存储状态:当不使用eventsourcing时,我假定人们将事件存储在状态旁边或更糟的位置,而不是(使用队列作为持久性机制)。尽管如此,持久性逻辑仍然驻留在commandhandler的空间中

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


我觉得你是这个话题的新手。要掌握CQR的概念,您可以做的最好的事情是在和(架构/ddd)上观看材料。其他关于这个主题的博客(我不知道怎么写):Udi Dahan,Gregory Young,Jonathan Oliver,Rinat Abdullin,Jérémie Chassaing,…

谢谢你的解释,我确实是CQRS的新手。也许这会有助于这是Udi Dahan关于它的一篇非常好的帖子。