0

我正在构建一个用户可以编辑和共享笔记的网络应用程序。用户应该通过角色(所有者、读取、读写)连接到笔记。这是一个偶尔连接的系统,所以我选择使用 CQRS 和事件源进行同步。在Greg Young 的演讲 [36:20 - 38:40]之后,流程如下:

  1. 客户端在离线时进行更改。
  2. 客户端连接到 Internet。
  3. “存储和转发”发送客户端离线时发生的事件。
  4. 客户端将本地事件与接收到的事件进行比较并进行合并,决定保留哪些命令。然后更新本地视图模型。
  5. 客户端将存储的命令(离线创建)发送到服务器。
  6. 服务器执行命令并生成存储在事件存储中的事件。
  7. “存储和转发”保存每个用户感兴趣的事件,直到用户重新上线。

问题是:“存储和前言”如何决定应该向每个用户发送哪些事件?

显然,发送所有事件会危及其他用户的安全。

4

1 回答 1

1

由于您的客户端知道它显示了哪些聚合,因此它可以告诉后端“嘿,自 [timestamp] 以来是否存在聚合 ID [...] 的事件?”。

这就是reSolve框架保持 UI 反应性的方式——客户端订阅特定聚合 ID 的事件并通过 websockets 实时接收它们。

因此,您的问题的一个答案可能是“让用户询问他感兴趣的事件(aggregateIds)”

于 2019-10-30T08:10:53.693 回答