我是CQRS的新手,想知道如何在遗留系统上实现它。
我有一些问题:
-
数据库将保留在遗留系统中。我猜对了,我们没有任何使用事件溯源?
-
一些命令需要一些时间来执行(从几秒钟到几分钟不等)。我们如何用CQRS处理它?
我希望解决这个问题如下:
- 客户端发送 updatesomedataccommand
- UpdateSomeDataHandler创建一个从遗留系统检索数据的新线程
- 客户端使用读取模型获取缓存数据并将其呈现给用户 当UpdateSomeDataHandler准备检索数据时,它发送 somedataupated 事件
- read模型响应 somedataupated 并将新数据存储在其缓存数据库
- read模型使用INotifyPropertyChanged通知客户端更新的数据可用。
- 客户端从读取模型中检索更新数据并呈现给用户。
感觉好像我做错了。但是我想不出更好的了
-
我们不能告诉你是否需要Event-Sourcing。有无数种技术可以实现事件溯源的功能。它只是一个"数据库",其中存储了更改数据库中的任何内容的所有命令。您可以将其用于分析、调试或回放场景(同样出于业务目的,用于分析或调试)。这取决于你想做什么。您不需要为了Event-Sourcing而使用Event-Sourcing。
-
只要问自己你想要实现什么。你的路看起来不错。但我们不知道这样做是否合适。步骤1、2、4和5是强制性的。在我看来,3,6和7像是你在对如何处理中间的信息做出判断。这完全取决于您正在处理的业务模型。
让它听起来更清楚一点。您只是将命令分派给负责命令数据库的特定服务。到目前为止一切顺利。读数据库(前端用户)必须知道在实体上发出了一个重命令吗?当read-database中有新数据可用时,前端是否需要被告知——以便它可以自动在前端加载新数据?