javascript-如何从客户端角度处理CQRS
作者:互联网
我的公司计划在后端使用CQRS架构,但作为客户端开发人员,我对如何使用请求感到困惑.这是我想出的方法,从我的角度来看,没有一个是理想的方法:
>服务器等待,直到队列得到处理,并在响应中返回所需的数据. (从性能的角度来看,这听起来像是一种很差的方法);
>客户端发出请求,并在将请求添加到队列后返回“ 202接受”,然后客户端使用间隔系统进行池化,直到从后端获取必要的数据为止(我不大每秒钟执行X http请求的粉丝);
> Web套接字…似乎是一个完美的解决方案,因为服务器一旦处理完数据就可以将数据推送到客户端(我有点担心在整个应用程序中打开数千个套接字).
所以问题是:解决此问题的最佳方法是什么? (不一定是上述之一)
解决方法:
好吧,这完全取决于您计划在UI中执行的操作.
如果您有SPA并且对events and subscriptions in Javascript有很好的了解,那么单个WebSocket连接似乎是最自然的选择.如果连接大多数时间都是空闲的,并且服务器是异步的(以避免线程匮乏),则数千个WebSocket连接在服务器中不是问题.但是,那…为什么要一个REST接口?您可以通过具有相关性ID的WebSocket发送请求,然后等待具有相同相关性ID的响应来知道何时完成,这样可以避免为每个请求创建新连接的开销.
如果您更熟悉AJAX并想使用REST,则可以使用此asynchronous approach,但是需要合并直到获得HTTP 303.它不是完美的,但是它可能比仅出于该操作而打开WebSocket更好.
阻塞连接直到有响应是一种非常糟糕的方法.网络不能被认为是可靠的,因此,如果连接断开,浏览器需要知道如何找出操作结果.
标签:rest,websocket,client-server,cqrs,javascript 来源: https://codeday.me/bug/20191121/2052808.html