Google 协议缓冲区可以在不同语言之间进行序列化/解析吗?

Posted

技术标签:

【中文标题】Google 协议缓冲区可以在不同语言之间进行序列化/解析吗?【英文标题】:Can Google Protocol Buffers be serialized/parsed between different languages? 【发布时间】:2016-10-06 18:16:00 【问题描述】:

official site 以及其他一些消息来源将 Google Protocol Buffers 的优势之一描述为高度可互操作。我知道该技术支持开箱即用的不同语言绑定,以及更多第三方实现,但这究竟意味着什么?

我的理解是否正确,认为只要我有一个通用的模式文件,我就可以运行 protoc 编译器并为多种语言生成代码,然后使用生成的代码以一种语言编写程序,将一些数据序列化为一个文件,然后在另一个程序中用另一种语言解析它?

例如,我在 Java 中运行的客户端应用程序是否可以序列化 Google 协议缓冲区并将其通过线路发送到用 C++ 实现的服务器,然后只要双方都是从相同的架构文件?

如果这正确的,那么是什么允许发生这种情况 - 是否它们的序列化/解析逻辑遵循了一个通用/一致的线路格式,详细说明 here?

【问题讨论】:

【参考方案1】:

是的,你可以,是的,这是因为有线格式是固定的(即任何语言绑定都相同)。

【讨论】:

谢谢!对不起,如果这个问题似乎毫无意义 - 我找不到任何明确表达的地方哈哈。

以上是关于Google 协议缓冲区可以在不同语言之间进行序列化/解析吗?的主要内容,如果未能解决你的问题,请参考以下文章

Google 协议缓冲区 - protoc-c 和 protoc 之间的二进制兼容性

C++ 中的 Google 协议缓冲区:从现有结构创建消息

2个用不同语言编写的程序之间的通信 - 序列化?

gRPC在 ASP.NET Core 中应用学习

多平台下的数据存储新秀-PROTOBUF

使用 Google 协议生成 C# 文件失败