概述
1.为什么要用protobuf?
protobuf 是 google 推出的平台无关、语言无关、可扩展的结构化数据序列化机制,为不同平台间的通讯数据解析,提供了简单高效的方法。支持所有常见语言(C/C++、Java、Python、OC、C#、JS、Ruby、Go、PHP、Dart)。不同于json、xml这种可读性强的数据格式,protobuf格式的数据是二进制格式无可读性,需要进行解包后才有可读性。但是protobuf的优点是紧凑简洁,占用非常少的存储空间,因此非常适合通讯传输。有了protobuf就不用担心不同平台或不同编程语言间,对于数据处理的差异。
2.怎么用protobuf?
protobuf顾名思义是protocol buffer(协议缓冲)的意思了,这个协议以 “.proto” 文件的形式定义,这个文件就是对协议的描述,也是作为不同平台、不同语言间的一个通讯媒介。假如是Java和C++之间使用protobuf协议,首先定义一个 “message.proto”的协议文件,接下来,java需要将这个message.proto转换成java可以调用的接口,C++需要将message.proto转换为C++解压调用的接口。这样对于同一组数据,Java和C++就都能用各自的接口正确解析了。那通过什么来转换message.proto呢?目前windows、linux、macos平台都有各自的转换方法。下面以linux平台为例做介绍。
3.搭建protobuf环境
搭建平台:Ubuntu18.04
1)安装protobuf依赖的库或工具
$ sudo apt-get install autoconf automake libtool curl make g++ unzip
2)下载protobuf源码
下载途径1:通过链接下载压缩包 : protobuf源码及编译好的工具,可根据自己的需要安装所需语言的,也可所有语言全部安装。
下载途径2: “git clone”一份源码
git clone https://github.com/protocolbuffers/protobuf.git
cd protobuf
git submodule update --init --recursive
./autogen.sh
3)安装
./configure --prefix=/usr # ./configure 简单粗暴直接放到 /usr 目录防止系统找不到
make # 过程比较慢
make check
sudo make install # 过程比较慢
sudo ldconfig # refresh shared library cache.
4)验证安装是否成功
protoc --version
libprotoc 3.11.1
4.简单的使用例子
1)创建一个 .proto 文件
syntax = "proto3";
package tutorial;
option java_package = "com.example.tutorial";
option java_outer_classname = "AddressBookProtos";
message Person {
string name = 1;
int32 id = 2;
string email = 3;
}
message AddressBook {
repeated Person people = 1;
int32 id = 2;
}
2)编译 .proto 文件
protoc -I=$SRC_DIR --java_out=$DST_DIR $SRC_DIR/message.proto
编译完后,即可生成 "message.proto" 对应的 java 类文件,这样就可以在java环境解析protobuf格式的数据了。
其他语言只需要替换 上面命令中的 “--java_out”即可,如下:
看到这里,似乎发现并没有支持C语言,这是因为C语言还需要在此文章的基础上安装“protobuf-c”才能使用,详情见下一章。
最后
以上就是明理镜子为你收集整理的protobuf 环境搭建和使用过程。的全部内容,希望文章能够帮你解决protobuf 环境搭建和使用过程。所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复