优点
高效性:protobuf使用二进制进行数据编码,体积更小,传输速度更快,解析速度也更快
跨平台:使用二进制编码进行传输,不同平台的编解码都可用,但如果是json这种直接以文本文件进行传输,跨平台之后就可能用不了,因此protibuf支持跨语言传输,如c++、java、python等,使得不同语言编写的程序之间可以方便的进行数据交换
向后兼容性:protobuf可以在不破坏旧数据结构的情况下更新数据结构,添加新的字段
类型安全:protobuf支持静态类型检查,可以在编译时捕获类型错误
缺点
可读性差
灵活性不足:相比于json的灵活格式,protobuf的消息类型需要在编译时静态定义,不支持动态添加和删除字段
通用性差:json可以任何语言都支持,但是protobuf需要专门的解析库