![](/img/trans.png)
[英]Disabling aspxgridviews on server-side, how to handle on client-side?
[英]How to handle CQRS from a client-side perspective
我的公司计划在后端使用CQRS架构,但作为客户端开发人员,我对如何使用请求感到困惑。 以下是我提出的方法,从我的观点来看,没有一个是理想的:
所以问题是:解决这个问题的最佳方法是什么? (不一定是上述之一)
嗯,这一切都取决于你打算在UI中做什么。
如果你有一个SPA并且对Javascript中的事件和订阅有很好的理解,那么单个WebSocket连接似乎是最自然的选择。 如果连接在大多数时间处于空闲状态,并且服务器是异步的(以避免线程不足),则数以千计的WebSocket连接在服务器中不是问题。 但那么......为什么你想要一个REST接口? 您可以通过带有相关ID的WebSocket发送请求,然后等待具有相同相关ID的响应以了解何时完成,这样可以避免每个请求创建新连接的开销。
如果您对AJAX更熟悉并且想要使用REST,那么您可以使用这种异步方法 ,但是您需要进行池化,直到获得HTTP 303 See Other
。 它并不完美,但它可能只是为了操作而打开WebSocket。
阻止连接直到有响应是一种非常糟糕的方法。 网络不能被认为是可靠的,因此如果连接断开,浏览器需要知道如何找出操作的结果。
要完成vtortola的答案,您还可以检查此项目SwaggerSocket 。 它旨在为REST API提供websocket接口以获得更好的性能。
传输不是唯一的问题,您将如何同步服务器和客户端上的合同? 我通过将所有命令和查询呈现为javascript来解决这个问题。 在我的情况下,我使用t4模板引擎,但可以使用任何模板引擎。 你可以在这里阅读更多
http://andersmalmgren.com/2014/02/05/typed-javascript-contracts-using-t4-templates/
至于传输,我认为REST很好,如果你使用例如.NET WebApi并正确使用async关键字,那么当有等待的I / O时,框架将重用该线程(DB等)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.