Protocol Buffers概览(翻译)
}
显式的格式化的协议也会把新版本协议的发布搞的很复杂,因为开发者必须保证在请求发起者和实际处理者这两端启用新协议之前,它们之间的所有的服务器,都必须理解新版本的协议。
Protocol?buffers被设计来解决许多这样的问题:
- 新的字段可以很容易被引入,不需要检查新增数据的中间服务器可以像之前一样解析原有数据并一起传输他们,不需要知道新的字段。
- 格式是自描述的,可以被广泛的编程语言处理(C++,?Java, 等)
然而,用户仍然需要手写他们自己的解析代码。
随着系统的进化,它已经有了一些其他特性和用途:
- 自动生成的序列化和反序列化代码,用户可以不用手工编写解析代码了。
- 除了被用作短期的RPC(远程过程调用)请求,人们开始用protocol?buffers作为一种便利的自描述格式来持久化存储数据(比如Bigtable)。
- 服务器的RPC接口开始声明成为protocol文件的一个部分,还有protocol编译器生成的类,用户可以用实际的实现重写他们。
Protocol?buffers现在是Google交流数据的主要交际语 - 撰写本文时,Google的代码树中有12,183个.proto文件,包含有48,162个不同的消息类型定义。它们被用在RPC系统和各种存储系统的数据的持久化的存储。