【发布时间】:2017-06-11 18:20:43
【问题描述】:
HTTP/2 是二进制的,protobuf 也是如此。
如果我在我的服务器上使用 HTTP/2,那么如果我使用 protobuf 来减少消息的大小,或者将 JSON gzip 压缩并通过 HTTP/2 发送比较相同,我是否还需要使用 protobuf?
JSON 似乎更易于阅读且更易于调试,并且不需要额外的客户端库。
【问题讨论】:
标签: javascript protocol-buffers http2
HTTP/2 是二进制的,protobuf 也是如此。
如果我在我的服务器上使用 HTTP/2,那么如果我使用 protobuf 来减少消息的大小,或者将 JSON gzip 压缩并通过 HTTP/2 发送比较相同,我是否还需要使用 protobuf?
JSON 似乎更易于阅读且更易于调试,并且不需要额外的客户端库。
【问题讨论】:
标签: javascript protocol-buffers http2
这些是正交的。 HTTP/2 是基于套接字的二进制帧/多路复用协议。它可以处理单个 TCP 流上的多个并行请求/响应,而 HTTP/1 不能。然而,从应用程序的角度来看,两者都提供了请求和响应方向的二进制流,您可以将文本或 JSON 或 protobuf 编码数据或您想要的任何其他数据放入其中。
如果在应用程序级别使用 protobuf 更优化(因为节省空间、更快的编码解码等),那么它在 HTTP/1.1 和 HTTP/2 上都会更优化。如果使用 JSON 对应用程序来说足够好,那么它是 HTTP/1.1 和 HTTP/2 的正确选择。
与 HTTP/1.1 相比,HTTP/2 作为传递二进制请求和响应数据的底层传输或根本发起请求可能更快,但这取决于数据和使用场景。
【讨论】: