如果已经存在的Message类型不能满足要求,比如我们要在Message格式中需要新增一个额外字段,但是我们仍然希望用旧的代码处理新的Message格式。对于这种情况,Protobuf3的有着非常好的支持。更新Message,需要满足以下要求:
不要改变已经存在的数字标签
以下.proto中各个字段定义如下:
- ”string”: 定义字段类型
- “query”:定义字段名称
- “1”:表示数字标签;
string query = 1; // 1:是数字标签,数字标签一旦被使用不可修改
Message新增一个字段(Fields)后并重新生成新的代码。此时旧的代码对Message序列化的消息,可以被新的代码解析。你需要时刻记住新的值必须设置合适的默认值,这样新的代码可以和旧代码合理交互,相似的,新代码产生的消息,可以被旧代码解析
在删除Message中字段(Fields)时,需要注意对应的数字标签/字段名称不在后续更新中被再次使用。为了避免将来你误用数字标签/字段名称,可以将这些通过reserved避免被误用。
message Foo { res