为什么RESTful HTTP服务即使在现在的后端通信中也如此流行,除了它是一个标准和简单的服务?
我永远不会选择HTTP-REST用于需要低延迟和/或高吞吐量的后端,主要是因为:
- HTTP 使用单向请求-响应范例,这不是全双工流式处理。
- HTTP意味着数据包长度和其他信息,这是一个开销。
我可以在许多开源项目中看到 RESTful Web 服务,声称它们是低延迟、高吞吐量的。例如,创建 RESTful 微服务、将轻量级 http 服务器嵌入服务器端应用程序是非常流行的。
作为替代方案,我可以通过TCP使用WebSockets(当然是通过HTTP升级(。
我知道HTTP在引擎盖下以及较低层TCP是如何工作的。但是请解释一下,除了HTTP-REST是一个流行语和简单,这就是为什么你应该使用一个,还有其他优点吗?
RESTful HTTP是一项成熟的技术,而WebSockets在2014年夏季才成为W3C推荐标准。
一方面,新技术进入产品需要一些时间,因为人们必须采用新技术,而且很多时候你也不想重写你的产品只是为了拥有WebSockets。
另一方面,更重要的是,RESTful HTTP和WebSockets是完全不同的技术。RESTful HTTP 是无状态的,因此您可以构建高度可扩展的应用程序。另一方面,WebSocket 是双向的,因此端(服务器和客户端(都可以触发通信。因此,最后您的决定应基于场景。过去在某些情况下,RESTful HTTP是完美的解决方案,今天也是如此。另一方面,需要实时通信或服务器驱动的事件的场景将从 WebSocket 中受益。
但重要的是:从现在开始,你有选择!