Protocol Buffers的入门加实践
来源:互联网 发布:java string类排序 编辑:程序博客网 时间:2024/06/06 19:49
目录
- 1.介绍
- 2.下载与安装
- 3.实例说明(Python代码)
- 4.实例说明(Objective-C代码)
- 5.文件.proto的解释
1.介绍
Protocol Buffer,简单来说,就是一种数据交换格式,就像JSON
和XML
作用一样,只不过Protocol Buffer是Google开源的一套二进制流网络传输协议,它独立于语言,独立于平台;而且它的性能、速度等非常优越于JSON
和XML
。google 提供了多种语言的实现:objective-c, swift,java、c#、c++、Go 和Python等,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,比使用 xml 进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。
对于XML来说,Protocol Buffers
有太多优点了,尤其是针对序列化结构数据。优点:
- 更简单
- 小到3-10倍
- 快到20-100倍
- 相当少的歧义
- 文档型协议
- T-L-V的数据存储方式 Tag-Length-Value
注意
protobuf
目前有两个版本proto2
和proto3
。这两个版本的语法并不是完全兼容的,所以为了避免使用时的麻烦,请仔细阅读proto2和proto3的语法。
2.下载与安装
我的环境:macOS Sierra Version 10.12.6
- 1.下载最新版本的ProtoBuff (我下载的是v3.4.1)。下载完后,解压压缩包。注意
:解压后里面的objectivec目录
是给iOS
和macOS
专用
- 2.然后依次键入以下命令进行安装,以下的每个命令都可能或占用几分钟时间,请耐心等待下
$> cd protobuf-3.4.1/$> ./configure$> make$> make check$> make install// 当输入此步骤时,如果正常输出版本号信息,就表示安装正确了$> protoc --version
Python的使用命令
Python教程
编译一个.proto
文件,命令如下:
//$SRC_DIR 为源文件目录//$DST_DIR 为目标文件目录protoc -I=$SRC_DIR --python_out=$DST_DIR $SRC_DIR/addressbook.proto
然后,你就会看到后缀为:_pb2.py
的文件在你指定的目录下。
Objective-C的使用命令
Objective-C教程
编译一个.proto
文件,命令如下:
//$SRC_DIR 为源文件目录//$DST_DIR 为目标文件目录protoc --proto_path=$SRC_DIR --objc_out=$DST_DIR $SRC_DIR/addressbook.proto
然后,你就会看到后缀为:.pbobjc.h
和.pbobjc.m
的文件在你指定的目录下。
以下将展示Objective-C和python的案例,以及解释,请点击这里
Reference:
完整Protobuffer的使用
- Protocol Buffers的入门加实践
- [Hadoop]Google 的Protocol Buffers 入门
- Protocol Buffers使用入门
- Protocol Buffers C++ 入门
- Google Protocol Buffers 入门
- Google Protocol Buffers 入门
- Google Protocol Buffers 入门
- Google Protocol Buffers 入门
- Google Protocol Buffers 入门
- Protocol Buffers的安装使用和C++入门示例
- Protocol Buffers的安装使用和C++入门示例
- Protocol Buffers的安装使用和C++/Python入门示例
- Protocol Buffers 的使用 (一)
- protocol buffers的使用示例
- protocol buffers的使用示例
- Wire protocol buffers的使用
- Protocol Buffers的简单介绍
- Protocol Buffers的学习笔记
- mybatis 延迟加载
- SDImageCache缓存图片例子
- 顺序表的插入与输出
- JavaScript实现简单的广告滚动条
- jQuery获取选中的radio值的方法
- Protocol Buffers的入门加实践
- 数据结构实验之二叉树七:叶子问题
- 数据库存储过程的一点积累
- hdfs2.6.2源码学习:Day2-DataNode启动流程分析
- 递归与非递归的比较
- 随想录(你所不知道的交叉编译器)
- 公告定向发布和全部发布两部分数据拼接思路
- 找工作的程序员应该这样优化简历【内附120套优质简历模板】
- 如何用一个栈实现队列?