我正在构建一个用户可以编辑和共享笔记的网络应用程序。用户应该通过角色(所有者、读取、读写)连接到笔记。这是一个偶尔连接的系统,所以我选择使用 CQRS 和事件源进行同步。在Greg Young 的演讲 [36:20 - 38:40]之后,流程如下:
- 客户端在离线时进行更改。
- 客户端连接到 Internet。
- “存储和转发”发送客户端离线时发生的事件。
- 客户端将本地事件与接收到的事件进行比较并进行合并,决定保留哪些命令。然后更新本地视图模型。
- 客户端将存储的命令(离线创建)发送到服务器。
- 服务器执行命令并生成存储在事件存储中的事件。
- “存储和转发”保存每个用户感兴趣的事件,直到用户重新上线。
问题是:“存储和前言”如何决定应该向每个用户发送哪些事件?
显然,发送所有事件会危及其他用户的安全。