我现在正在研究 CQRS,我看到了一些源代码(Greg Young 的 SimpleCQRS 和 Mark Nihjof 的)。我仍然对命令和域事件感到困惑。我们是否总是需要将域持久化以在域事件处理程序中“写入数据库”?如果我调用代码将域保存到命令处理程序中的数据库(通常通过域存储库),然后让域事件处理程序处理其他内容(例如:更新读取模型和执行其他服务,如电子邮件通知),这是否常见。谢谢。
问问题
1676 次
1 回答
7
存储事件:我不会使用事件处理程序来持久化事件。使用事件溯源时,将其从命令处理程序委托给存储库或工作单元可能是最常见的方法。所以,是的,在命令处理程序中进行持久性(好吧,委托它)并让事件处理程序做其他事情是很常见的。
存储状态:当不使用事件源时,我认为人们将事件存储在状态旁边或更糟,根本不存储(使用队列作为持久性机制)。尽管如此,持久性逻辑仍然存在于命令处理程序的空间中。
命令捕获意图并告诉系统该做什么。始终使用祈使句。事件捕获意图并告诉系统中发生了什么。总是过去时。
你给我的印象是这个话题的新手。掌握 CQRS 概念的最佳方法是观看http://cqrsinfo.com和http://skillsmatter.com (architecture/ddd) 上的材料。其他在这个主题上写博客的人(在我的脑海中):Udi Dahan、Gregory Young、Jonathan Oliver、Rinat Abdullin、Jérémie Chassaing,......
于 2011-01-13T22:16:04.113 回答