Schedule
Word count
487 words
Reading time
2 minutes
Introduction
在网络编程中,数据通信往往需要跨端甚至跨语言进行,为了让不同系统之间能够正确解析数据,通信双方必须提前约定好数据结构。倘若通信双方完全依赖手动约定和实现,整个过程通常会非常繁琐且容易出错。
JSON 作为一种广泛使用的数据交换格式,以其简单、直观和良好的跨语言支持而闻名。其简单的将数据分为键值对,对于开发者来说几乎没有语言门槛,毕竟字典和哈希表早已经是公认支持的基础数据结构。
然而JSON虽然简单,弊端也非常明显,尤其是在网络编程中,一来SON 是一种文本格式,数据体积相对较大,在网络传输中会带来额外的带宽开销,二来,由于需要进行字符串解析,序列化与反序列化的效率低下。于是业界急切的需要一个更好的中间人,来完成跨端,跨语言的数据格式统一。
Protocol Buffers 就诞生于这样的背景之下,通过编写.proto文件,协定好双方使用的数据结构,并通过protoc编译器一键生成对应语言的代码。借助这种方式,不同语言之间可以方便地共享统一且类型安全的数据结构定义
在此基础上,Google 还对 Protobuf 的编码与解码进行了大量优化,使其在数据体积、序列化速度以及跨语言支持方面都具备显著优势,一跃成为现代网络编程中主流的高效数据序列化协议。
mimizh