遗留系统上的CQRS和慢命令

时间:2015-10-26 08:41:13

标签: c# cqrs legacy-database

我是CQRS的新手,想要建议如何在遗留系统上实现这一点。

我有一些问题:

  1. 数据库将保留在旧系统中。我猜对了,我们对事件采购没有任何用处?

  2. 某些命令需要一段时间才能完成(从几秒钟到几分钟不等)。我们如何使用CQRS处理它?<​​/ p>

  3. 我希望解决这个问题如下:

    1. 客户端发送 UpdateSomeDataCommand
    2. UpdateSomeDataHandler 创建一个从旧系统中检索数据的新线程
    3. 客户端使用读取模型获取缓存数据并将其呈现给用户
    4. UpdateSomeDataHandler 准备好检索数据时,会发送 SomeDataUpdated 事件
    5. 读取模型对 SomeDataUpdated 作出反应并将新数据存储在其缓存数据库中
    6. 读取模型使用INotifyPropertyChanged通知客户端已更新数据。
    7. 客户端从读取的模型中检索更新数据并将其呈现给用户。
    8. 感觉好像我做错了。但我想不出更好的事情。

1 个答案:

答案 0 :(得分:0)

  1. 我们无法告诉您是否需要事件采购。有许多技术可以实现Event-Sourcing的功能。它只是一个数据库&#34;存储所有命令以更改数据库中的任何内容。您可以将其用于分析或调试或回放播放场景(再次用于业务目的,用于分析或调试)。所以这取决于你想做什么。为了进行事件采购,您不需要事件采购。

  2. 只要问问自己想要达到的目标。你的路径很好看。但我们不知道它是否合适。步骤1,2,4和5在某种程度上是强制性的。 3,6和7看起来像是在判断如何处理两者之间的信息。这完全依赖于您正在处理的业务模型。如果这是强制性的 - 那么这是一个好方法。

  3. 让它听起来更清晰一些。您只是将命令分派给负责命令数据库的特定服务。到现在为止还挺好。 读数据库(前端用户)是否必须知道在实体上发出了大量命令? 当新数据在读取数据库中可用时,是否需要通知前端 - 以便它可以自动在前端加载新数据?

    如果是这样 - 你的方法很好。