使用协议缓冲区,更改消息的字段名称是否仍然允许它向后兼容?我找不到任何关于那个的引用。
例如:原始消息
#id_name>div>div>div {
width: 5%;
background: blue;
}
#id_name>div>div>div[class] {
width: 100%;
background: red;
}
更改为:
<div id="id_name">
<div>
<div>
<div class="col-sm-10 col-md-5 no-padding">
/*CONTENT SQUASHED BY THE 5% WIDTH*/
</div>
<div>
/*THE ORIGINAL DIV THAT WAS TARGETED BY THE CSS*/
</div>
</div>
</div>
答案 0 :(得分:16)
更改字段名称不会影响protobuf编码或使用仅由字段名称不同的原型定义的应用程序之间的兼容性。
二进制protobuf编码基于标签号,因此您需要保留。
您甚至可以在某种程度上更改字段类型(检查https://developers.google.com/protocol-buffers/docs/encoding#structure处的类型表),前提是其线型保持不变,但这需要额外考虑,例如,是否将uint32
更改为从您的应用程序代码的角度来看,uint64
是安全的,并且对于更好的&#39;只需定义一个新字段就更好了。
如果使用该功能,更改字段名称将影响json表示。