赞
踩
目录
protobuf是一个灵活的、高效的用于序列化数据的协议。相比较XML和JSON格式,protobuf更小、更快、更便捷。google protobuf是跨语言的,并且自带了一个编译器(protoc),只需要用它进行编译,可以编译成Java、python、C++、C#、Go等代码,然后就可以直接使用,不需要再写其他代码,自带有解析的代码。
GitHub地址:https://github.com/protocolbuffers/protobuf
不同语言源码版本下载地址:
https://github.com/protocolbuffers/protobuf/releases/latest
Protobuf的优点如下:
A、性能好,效率高
序列化后字节占用空间比XML少3-10倍,序列化的时间效率比XML快20-100倍。
B、有代码生成机制
将对结构化数据的操作封装成一个类,便于使用。
C、支持向后和向前兼容
当客户端和服务器同时使用一块协议的时候, 当客户端在协议中增加一个字节,并不会影响客户端的使用
D、支持多种编程语言
Protobuf目前已经支持Java,C++,Python、Go、Ruby等多种语言。
Protobuf的缺点如下:
A、二进制格式导致可读性差
B、缺乏自描述
1. 下载:
https://github.com/protocolbuffers/protobuf/releases下载Protocol Buffers v3.8.0
2. 解压
tar -zxf protobuf-all-3.8.0.tar.gz
3. 跳转到解压后的目录
cd protobuf-3.8.0
4. 设置编译目录
./configure --prefix=/usr/local/protobuf
/usr/local/protobuf/ 为自己配置的编译安装目录
5. 安装
还是在解压的目录下进行
make
make install
6. 配置环境变量
sudo vim .bash_profile
7. 添加配置文件
export PROTOBUF=/usr/local/protobuf
export PATH=$PROTOBUF/bin:$PATH
PS: 如果第七步数据保存不了可以先切换到root 用户进行保存
sudo -i
8. 使配置文件生效
source .bash_profile
9. 测试安装结果
输入protoc --version
看到如下结果表示安装成功:
~ maerfeifei$ protoc --version
libprotoc 3.8.0
在项目下新建hello.proto文件,文件内容写
syntax = "proto3"; package lm; message helloworld { int32 id = 1; // ID string str = 2; // str int32 opt = 3; // optional field }
proto3如果不填默认是proto2,proto3和proto2区别请看https://solicomo.com/network-dev/protobuf-proto3-vs-proto2.html
然后执行protoc --php_out=./ hello.proto
注意 ./后面必须有一个空格,不然会报错。
这是时候会生成
GPBMetadata/Hello.php Lm/helloworld.php两个文件
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。