原文链接:https://blog.csdn.net/nash_cyk/article/details/99549719
关于Protocol Buffer优势这里就不详细介绍了,如便于不同开发语言的交互通信,便于服务器上线的平滑升级等。
但Protocol Buffer的Message协议升级是需要注意一些细节,以下几点作为开发者需要特殊关注:
1、 原有的Message重新填加新的字段信息时不允许有required字段,具体原因就是旧的版本程序无法读取对应的required字段信息。
2、 再修改原有的Message时,要保证不能修改对应的标签号,就是每一个字段后面的1,2,3序列号,不允许修改。
3、 原有的Message添加新的字段时,类型要保证是optional或者repeated。
4、 如果Message字段已经存在required字段,重新调整时不允许删除required字段。
5、 如果删除原有的Message某个字段时,对应的字段标签号要保留不允许其他字段使用,比如说删除了 optional int server_id = 3
这个字段,这个标签号 3 是不允许再被其他字段使用的。
6、Protocol Buffer是支持修改对应字段的名称的,如optional int server_id = 3
修改成optional int idc_id = 3
。
7、如果考虑修改Message中的类型,需要注意类型的兼容性,如int32、uint32、int64、uint64和bool等类型之间是兼容的,sint32和sint64是兼容的,string和bytes是兼容的,fixed32和sfixed32,以及fixed64和sfixed64之间是兼容的,为了保证兼容性,只能将其修改为与其原有类型兼容的类型,否则就将打破新老消息格式的兼容性。
8、字段类型上optional与repeated也是相互兼容的。
维护协议时记住以上几点即可。