在CQRS中如何使用NServiceBus更新命令和查询存储

时间:2015-10-14 18:40:32

标签: c# .net asp.net-mvc-5 cqrs nservicebus5

在CQRS中,如何确保命令处理程序以事务方式更新写入存储和读取存储?

我不确定这两个步骤是否被视为交易? 或者你在这里依赖最终的一致性?这意味着读取商店最终会更新吗?

使用NServiceBus 5或6执行此操作的常见方法是什么?

在我们的应用程序中,我们为命令端IRepository<T>(添加,更新)更新了Sql Server数据库。 查询方面很简单。实体框架DbContext上的数据库和外观。

命令端的步骤是:

  1. MVC控制器从View
  2. 接收数据
  3. controller action创建一个Command / Message对象并将其发送到总线。
  4. 正确的命令处理程序创建适当的域对象并对其进行验证。
  5. 如果有效,则使用IRepository插入或更新数据库。
  6. 现在是什么?
  7. 这是否必须是NServiceBus中的Saga,其中步骤1和2更新命令存储并读取存储?

    谢谢。

1 个答案:

答案 0 :(得分:1)

我看到的流程如下:

  • 控制器接收操作并在命令总线中发出命令
  • 正确的命令处理程序被触发并且写入模型得到更新
  • 在命令处理程序中,触发了一个事件
  • 正确的事件处理程序被触发并且读取的模型得到更新

因此,更新读取模型将在事件处理程序中完成 - 因此最终的一致性

希望这有帮助!祝你好运!