RESTful 端点返回 Protobuf 字符串是否常见?

Is it common to have RESTful endpoint returning Protobuf strings?

您没有 gRPC 服务器(例如,由于平台限制),而是有一个 returns data.SerializeToString() 作为负载的 REST 端点。当然,此端点的任何客户端都会为每个响应提供适当的原型文件,因此他们可以 ParseFromString(data) 并继续前进。这样做的原因包括 Protobufs 的好处。

改进了对问题的理解:将 PB 用于 gRPC 传输以外的其他目的是否很常见?

是的,这是完全普遍和合理的。 PB 实际上只不过是一种数据序列化格式。 gRPC 只是将其用作消息交换格式(自然选择,因为两者都是 Google 创作)。让答案成为 Google 本身的描述:

Protocol buffers are Google's language-neutral, platform-neutral, extensible mechanism for serializing structured data.

Google's basic tutorial 正在将其保存到磁盘。做任何你想用任何其他二进制 blob(jpeg、mp3、...)做的事

但是! 如果序列化速度对您来说真的很重要,请不要假设任何事情。今天的 JSON 库可能会出乎意料地表现出色 - 取决于您的特定平台和主要消息特征。做你自己的性能测试。如果JSON劣势得到证实,那么又有比PB序列化速度更快的库了。举几个例子:Google 不太受欢迎的 PB 兄弟 FlatBuffers and something called Simple Binary Encoding,它是为高频交易开发的……不言自明。