What are protocol buffers?
官网对protobuf的描述
Protocol buffers are a flexible, efficient, automated mechanism for serializing structured data – think XML, but smaller, faster, and simpler. You define how you want your data to be structured once, then you can use special generated source code to easily write and read your structured data to and from a variety of data streams and using a variety of languages. You can even update your data structure without breaking deployed programs that are compiled against the "old" format.
为什么要用protobuf?
常见的序列化的方式
1. 直接使用java的序列化方式,这种方式只有java知道,C++是不知道的,不利于数据交换。
2. 使用自定义的数据格式,比如存储三元数组可以采用类似1:20:3的方式进行,但是需要额外的编码去解析,也需要额外的运行时去处理。
3. 使用xml的序列化方式。但是xml对空间的占用是相对来说是比较大的。
protobuf的特点
1. protobuf多语言支持,方便各个端进行数据交换
2. 在.proto文件中定义好数据结构之后,可以通过官方提供的工具生成相关的类,不需要自己再写代码了,相当的方便。
3. 使用protobuf序列化对象后的字节数更小,速度更快,传输更快。
4. 使用protobuf序列化对象之后,是以二进制的方式存在的,不是文本类型的,不便于肉眼查看,调试时可以使用toString(),将对象转化为肉眼能查看的内容,解析这些二进制内容需要schema。
5. 在遵守一定的设计规则下,保持向后兼容性,每个域都有一个独立的id号,方便产品的迭代,数据结构的变化
怎么用protobuf?
1. protobuf会根据.proto文件生成代码,所以说.proto的message名和域名都需要遵守一定的命名规范
message SongServerRequest {
required string song_name = 1;}IT是个变化很快的行业,想了解最新,最酷的特性只能上官网去查找。
人类一思考,上帝就发笑。
站在巨人的肩膀上编码的,
并非巨细都出自自己的思考,
难免会有偏差,
若有误,欢迎指正。
------------by jackson.ke