protobuf 版本之间的数据格式兼容性

2024-01-03

我想知道协议缓冲区的序列化数据格式是否在 protobuf 编译器和客户端库版本中保持不变。

换句话说,我是否需要使用相同的编译器版本来生成 Python、Java 和 C++ 类?这些客户端都需要使用相同版本的 protobuf 库吗?

这个帖子 https://stackoverflow.com/questions/4963620/are-protobuf-messages-compatible-across-versions-of-protobuf有点解决了我的问题,但其接受的答案特定于OP的protobuf版本。


是的,这就是这个想法。使用哪个库并不重要,只要它遵循规范即可。请注意,相同的数据can以稍微不同的方式表示,例如字段顺序对客户端来说不重要,虽然它是common对于客户端按升序写入字段,明确要求客户端以任意顺序处理字段。我在这里想说的是,它可能不是完全相同的字节以相同的顺序,但它应该可以在任何客户端上正常工作。

请注意,某些实现可能会提供额外的功能(*咳嗽*像我的提供继承支持),主要仅在单个客户端内使用。在这种情况下,我会a:期望这些功能在使用时是显而易见的,b:它应该always仍然会生成有效的 protobuf 流(您可能只是选择忽略这些字段,或者将它们支持为bytes以往返为目的)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

protobuf 版本之间的数据格式兼容性 的相关文章

  • 序列化匿名类型

    我想将匿名类型变量转换为 byte 我该怎么做 我尝试过的 byte result var my new Test a1 Value 0 BinaryFormatter bf new BinaryFormatter using Memory
  • WPF:BinaryFormatter 可以序列化 FlowDocument 实例吗?

    我喜欢使用binaryformatter来序列化流文档 但这是例外 Serializable public class BinFlow public FlowDocument my get set BinFlow myBF new BinF
  • Python(和 Java)中最快的数据打包

    Sometimes http www codinghorror com blog 2009 01 the sad tragedy of micro optimization theater html our host is wrong na
  • readRDS() 加载额外的包

    什么情况下会出现readRDS R 中的函数尝试加载包 命名空间 我很惊讶地在新的 R 会话中看到以下内容 gt loadedNamespaces 1 base datasets graphics grDevices methods sta
  • XmlArray 序列化 - 如何使序列化程序忽略列表中项目的类名?

    我有一个类 除其他属性外 还有一个 MyObject 列表 public class MyClass XmlArray OBJECT public List
  • DataContractJsonSerializer 包含元素类型子类型的通用列表

    我要使用DataContractJsonSerializer用于 JSON 序列化 反序列化 我在 JSON 数组中有两种对象类型 并希望将它们都反序列化为相应的对象类型 具有以下类定义 DataContract public class
  • 结构体到磁盘的高效 Go 序列化

    我的任务是将 C 代码替换为 Go 而且我对 Go API 还很陌生 我正在使用 gob 将数百个键 值条目编码到磁盘页面 但 gob 编码有太多不需要的膨胀 package main import bytes encoding gob f
  • 如何捕获反序列化异常?

    PHP 是否可以在以下情况下捕获异常 unserialize 产生错误 一个简单的方法是 ret unserialize foo if ret null Error case 但这不是最现代的解决方案 最好的方法是像前面提到的那样有一个自定
  • 如何创建序列化对象集 C#

    有多种类型 在特殊情况下可以以不同的方式配置 如何将它们序列化 Serializable XmlRoot RootXml Namespace public class RootXml object schemaVersion XmlElem
  • 如何从 SBCL 解释器将特定函数写入文件?

    假设我在没有 SLIME 的情况下玩过 SBCL 没有任何简单的解释器 现在我想将几个函数保存在一个文件中 不是核心图像 只是文本形式的一些代码 我该怎么做呢 有两种方法可以做到这一点 使用DRIBBLE and or FUNCTION L
  • 使用反射 API 填充 Proto 中的地图字段

    我正在尝试编写一个模块 该模块将获取 Message Builder 和从字段名称到值的映射 并将用值填充构建器 一切正常 直到我遇到地图字段 使用 Proto3 我收到一条特定消息 我知道我可以执行该消息的字段 builder b put
  • C# WPF 将粘贴在 richtextbox 中的 BitmapImage 转换为二进制

    我有一个 Richtextbox 我计划将其保存到数据库中 该数据库可以加载回同一个 Richtextbox 中 我已经让它工作了 这样我就可以将流程文档保存为 DataFormats XamlPackage 这可以保存图像 但问题是文本不
  • 有没有某种方法可以为嵌套在 Jackson 的可选类型中的类型指定自定义反序列化器?

    我有一些类型需要用它们自己的特殊反序列化器和序列化器来处理 但是当类型嵌套在可选中时 如何指示 Jackson 使用它们 我正在使用 JDK8Module 它适用于任何不需要任何特殊处理的类型 当 JsonDeserialize和 Json
  • 表示protobuf-c中的指针变量

    我不知道如何在 protobuf c 中表示指针 当有如下结构时 struct EXAMPLE1 int32 x int32 y 我如何在 protobuf c 中表示指针变量 y message EXAMPLE1 int32 x y 指针
  • 如何序列化 android.graphics.Path 对象

    我正在尝试将 Android graphics Path 对象存储在内部设备内存中 有谁知道如何序列化 android graphics Path 对象 另外 还有其他方法来存储 Path 对象吗 谢谢 我这样做的方法是从原始 Path 类
  • Rails 序列化数据验证

    我有一个通过默认 AR 行为序列化为 YAML 的字段 例如 它目前位于哈希数组中 name gt hi url gt bye name gt hi url gt bye name gt hi url gt bye 有没有办法可以在其中一些
  • GeoDjango:距离对象不可序列化

    我刚刚学习 geo django 我可以找出所有地方到一个点的距离 但是当我使用 values方法注释distance场 我得到 TypeError Object of type Distance is not JSON serializa
  • BigDecimal 无法强制转换为 BigDecimal

    这应该很简单 但它却爆炸了 有任何想法吗 d BigDecimal new 2 0 YAML load a gt d to yaml TypeError BigDecimal can t be coerced into BigDecimal
  • 应用程序内的 SQLite 文件版本兼容性

    我有一个 C NET 应用程序 一种复杂的计算应用程序 其中用户输入数据 处理后的信息使用 JSON 序列化和 EF 保存到 SQLite 文件中 需要时可以将其加载到我们的应用程序中 应用程序在开发过程中经历了很多变化 类也被修改 因此
  • simpleframework,将空元素反序列化为空字符串而不是 null

    我使用简单框架 http simple sourceforge net http simple sourceforge net 在一个项目中满足我的序列化 反序列化需求 但在处理空 空字符串值时它不能按预期工作 好吧 至少不是我所期望的 如

随机推荐

  • 从部分字符串中查找全局原子

    我可以使用创建一个全局原子GlobalAddAtom我可以使用再次找到该原子GlobalFindAtom如果我已经知道与原子相关的字符串 但是有没有办法找到关联字符串与给定部分字符串匹配的所有原子呢 例如 假设我有一个原子 其字符串是 He
  • 使用模板时的类型推断

    所以这就是我想做的 我使用std pair 但我肯定想使用元组或几乎任何类型的模板来做同样的事情 分配对变量时 我需要输入如下内容 T1 t1 T2 t2 std pair
  • python 中的字数统计

    我想计算从网站上获取的文本的字数 我正在尝试下面的代码 import requests from bs4 import BeautifulSoup from urllib request import urlopen def get tex
  • TensorFlow DataSet API 导致图形大小爆炸

    我有一个非常大的训练数据集 我正在使用数据集 API 如下所示 self dataset tf contrib data Dataset from tensor slices self images list self labels lis
  • 存储经度和纬度值

    所以我有 5000 多个船舶坐标 它们是经度和纬度坐标 我想知道为每艘船存储这些的最佳方式是什么 每艘船都有未知数量的坐标 最初我想到的是一个类似于以下的双二维数组 double array new double 但我不知道我需要的尺寸 我
  • 延迟加载和 Load() 有什么区别

    在实体框架 4 中 延迟加载和使用 Load 方法有什么区别 编辑 我添加了两个 if 语句 延迟加载 var query from c in context Contacts select c foreach var contact in
  • robospice 如何管理活动生命周期?

    我正在寻找有关 android robospice 库如何管理活动生命周期的技术答案 从入门页面 https github com octo online robospice wiki Starter Guide https github
  • 背景图像上出现流氓白线

    html height 100 overflow hidden background url http farm9 staticflickr com 8345 8208481483 fc6b1bdf7d h jpg no repeat ce
  • C# 正则表达式提取键值

    有没有一种简单而优雅的方法从以下格式的字符串中提取键值对 key1 value1 key2 value 2 key3 value3 key4 value4 key5 5555 key6 xxx666 我的尝试导致了这个结果 但我对此不太满意
  • 什么IDE适合开发PyQt应用程序? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 什么IDE适合开发PyQt应用程序 我正在使用 Eclipse 的 pydev 扩展进行 Python
  • Bootstrap-3:带有 jQ​​uery 验证消息的输入组插件 STRETCHES

    我正在使用 Twitter Bootstrap 3 和 jQuery Validate 插件 但由于某种原因 当弹出验证错误消息时伸展运动 my 输入组插件框和图标 正常 无验证 WITH VALIDATION 这是我的小提琴 以防您想解决
  • 复选框设置为已检查= false 不起作用

    我正在生成一个 HTML 输入checked false 但是该复选框显示为已选中 我在 javascript 控制台中执行了以下操作 但无法完全弄清楚发生了什么 使用后生成的 HTML prop 将值设置为 false 看起来相同 只是现
  • 如何将 matplotlib 颜色条刻度线更改为朝外?

    我在 matplotlib 示例库中注意到 所有具有垂直颜色条的图都有朝内的刻度线 即从条形的边缘到条形的彩色区域 对于我正在使用的绘图和色阶类型 将刻度线朝外会更好 我会怎样修改 matplotlib 库中的这个简单示例 见下文 在其颜色
  • Google Script:如何通过电子邮件发送Tablechart? [复制]

    这个问题在这里已经有答案了 我正在 Google 脚本中创建一个表格图表 我想通过电子邮件发送它 这是我的代码 var data Charts newDataTable addColumn Charts ColumnType STRING
  • Symfony 原则多对多完整性约束违规:1062 重复条目

    我有一个具有多对多 自引用 关系的实体用户 Serializer Expose ORM ManyToMany targetEntity User ORM JoinTable name user referent joinColumns OR
  • 如何在运行 Node.js 的 Raspberry Pi (Debian) 上解决 LIBUSB_ERROR_BUSY

    我在树莓派 3 debian 上运行 node js 我有一个小型原型项目 它从我的 Turbo 教练机上的 ANT 发射器收集数据 这些数据通过 Suunto Movestick USB 加密狗发送 我正在使用Ant Plus用于管理 A
  • 是否可以将本地存储库保留在 dropbox 上而不使用远程存储库

    这里已经询问了有关使用 Dropbox 托管裸存储库的几个问题 我的问题不同而且简单得多 我是一名拥有少量代码的社会科学家 我将所有数据和代码保存在 Dropbox 上 并在家庭和工作计算机上同步 我可以只使用 GIT 进行版本控制而不使用
  • 在 r 中的非等值连接期间,从 data.table 中按组提取条件数据的有效方法

    我有两个表 一个包含时间序列数据 dat 另一个包含一些参考点 pts 用于一堆不同的观察结果 time group 和 well 请参阅最小示例表 set seed 5 dat data table time group c rep ba
  • 使用 Start-Process 捕获标准输出和错误

    PowerShell 中是否存在错误Start Process访问时的命令StandardError and StandardOutput特性 如果我运行以下命令 我不会得到任何输出 process Start Process FilePa
  • protobuf 版本之间的数据格式兼容性

    我想知道协议缓冲区的序列化数据格式是否在 protobuf 编译器和客户端库版本中保持不变 换句话说 我是否需要使用相同的编译器版本来生成 Python Java 和 C 类 这些客户端都需要使用相同版本的 protobuf 库吗 这个帖子