繁体   English   中英

旧系统上的CQRS和慢速命令

[英]CQRS and slow commands on legacy system

我是CQRS的新手,希望获得关于如何在旧系统上实施此建议的建议。

我有一些疑问:

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

  2. 一些命令将花费一些时间(从几秒钟到几分钟不等)。 我们如何使用CQRS处理它?

我正在寻求解决以下问题:

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

感觉就像我做错了。 但我想不出更好的办法。

  1. 我们无法告诉您是否需要事件源。 有数不胜数的技术可以实现事件源的功能。 它只是存储所有命令的“数据库”,这些命令会更改数据库中的任何内容。 您可以将其用于分析或调试或倒带播放方案(同样用于商业目的,用于分析或调试)。 因此,这取决于您要做什么。 为了拥有事件源,您不需要事件源。

  2. 只是问问自己想要实现什么。 你的路看起来不错。 但是我们不知道是否合适。 步骤1、2、4和5在某种程度上是必需的。 3、6和7在我看来就像您正在判断如何处理中间的信息。 这完全取决于您正在处理的业务模型。 如果这是强制性的-那是一个好方法。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM