当我们必须将推送更新功能添加到基于CQRS的系统时,似乎有意义让“读取”模型负责管理这些推送消息。当使用长轮询和服务器事件时(大多数是单向的),这很有意义CQRS和WebSockets
但WebSockets是双向持久通道。这是一个已经建立的连接,可用于获取推送更新和发送命令。问题是WebSocket连接由于减少了延迟和状态而变得非常方便,因为很多事情都像自动完成搜索框一样。乍一看,从技术角度来看,当已经有一个可用的通道就绪并准备就绪时,使用另一个端点(即:HTTP POST接收器)是没有道理的。
哪里可以找到启用WebSocket端点的正确位置?
阅读模式:是有道理的推送更新客户端和像自动完成搜索框解答问题,但如果它接受“写”,那就已经阅读并在同一个地方更新模型试。
更新模型:接受客户端输入是有意义的。将推送更新发送到客户端是有道理的,因为它们是由其他客户端输入触发的。但是对于搜索自动完成搜索等请求响应的东西是没有意义的。
那么你在那个项目中提到你是如何结束发送命令的?通过不同的渠道? – vtortola 2015-02-12 00:27:58
我们通过WebSocket发送它们作为基本的RPC。套接字上的一个自定义协议允许多个命令,查询和可观察的查询一次执行。 – 2015-02-12 02:03:50
好的,你在哪里放置了端点?在阅读模型或更新模型中? – vtortola 2015-02-12 15:50:28