Protocol Buffer平滑升级原则

关于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也是相互兼容的。
维护协议时记住以上几点即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章