嗨是可以更改协议缓冲区中字段的数据类型,以保持向后兼容性。例如
旧消息
message Connection{
optional string wifi = 1;
optional int32 wifiCode = 2;
}
**new message**
message Connection{
message wifiConnection{
optional string name = 1;
optional int32 code = 2;
}
optional wifiConnection wifi = 1;
}
所以基本上我没有更改字段的标记号,也没有重命名它,但我已经更改了数据类型。那么它会向后兼容吗?如果获取使用先前模式创建的旧proto对象,是否可以通过此新模式创建的对象进行解析?
答案 0 :(得分:1)
不,它不会向后兼容。 Protcol Buffers存储的数据大致类似于
Code1 + wire-type1 + {Data1}
Code2 + wire-type2 + {Data2}
Code3 + wire-type3 + {Data3}
所以第一个旧格式将存储为
1 + wire-type {Wifi-Data}
2 + wire-type {Wifi-Code-Data}
新邮件将存储为
1 + wire-type {
1 + wire-type {Wifi-Data}
2 + wire-type {Wifi-Code-Data}
}