遗留系统上的CQRS和慢速命令



我是CQRS的新手,想知道如何在遗留系统上实现它。

我有一些问题:

  1. 数据库将保留在遗留系统中。我猜对了,我们没有任何使用事件溯源?

  2. 一些命令需要一些时间来执行(从几秒钟到几分钟不等)。我们如何用CQRS处理它?

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

  1. 客户端发送 updatesomedataccommand
  2. UpdateSomeDataHandler创建一个从遗留系统检索数据的新线程
  3. 客户端使用读取模型获取缓存数据并将其呈现给用户
  4. UpdateSomeDataHandler准备检索数据时,它发送 somedataupated 事件
  5. read模型响应 somedataupated 并将新数据存储在其缓存数据库
  6. read模型使用INotifyPropertyChanged通知客户端更新的数据可用。
  7. 客户端从读取模型中检索更新数据并呈现给用户。

感觉好像我做错了。但是我想不出更好的了

  1. 我们不能告诉你是否需要Event-Sourcing。有无数种技术可以实现事件溯源的功能。它只是一个"数据库",其中存储了更改数据库中的任何内容的所有命令。您可以将其用于分析、调试或回放场景(同样出于业务目的,用于分析或调试)。这取决于你想做什么。您不需要为了Event-Sourcing而使用Event-Sourcing。

  2. 只要问自己你想要实现什么。你的路看起来不错。但我们不知道这样做是否合适。步骤1、2、4和5是强制性的。在我看来,3,6和7像是你在对如何处理中间的信息做出判断。这完全取决于您正在处理的业务模型。

让它听起来更清楚一点。您只是将命令分派给负责命令数据库的特定服务。到目前为止一切顺利。读数据库(前端用户)必须知道在实体上发出了一个重命令吗?当read-database中有新数据可用时,前端是否需要被告知——以便它可以自动在前端加载新数据?

最新更新