# Protobuf
# Protobuf
# protoBuf简介
Google Protocol Buffer(简称 Protobuf)是一种轻便高效的结构化数据存储格式,平台无关、语言无关、可扩展,
可用于通讯协议和数据存储等领域。
数据交互的格式比较
数据交互xml、json、protobuf格式比较
1、json: 一般的web项目中,最流行的主要还是json。因为浏览器对于json数据支持非常好,有很多内建的函数支 持。
2、xml: 在webservice中应用最为广泛,但是相比于json,它的数据更加冗余,因为需要成对的闭合标签。json使 用了键值对的方式,不仅压缩了一定的数据空间,同时也具有可读性。
3、protobuf:是后起之秀,是谷歌开源的一种数据格式,适合高性能,对响应速度有要求的数据传输场景。因为 profobuf是二进制数据格式,需要编码和解码。数据本身不具有可读性。因此只能反序列化之后得到真正可读的数 据。
相对于其它protobuf更具有优势 1:序列化后体积相比Json和XML很小,适合网络传输 2:支持跨平台多语言 3:消息格式升级和兼容性还不错 4:序列化反序列化速度很快,快于Json的处理速速
Protobuf安装
下载 protoBuf: $ git clone https://github.com/protocolbuffers/protobuf.git mac可以直接brew安装 1.下载依赖库(工具) $ brew install automake $ brew install libtool 2.下载Protobuf $ brew install protobuf
protobuf的语法 要想使用 protobuf必须得先定义 proto文件。所以得先熟悉 protobuf的消息定义的相关语法。 定义一个消息类型
标准数据类型 一个标量消息字段可以含有一个如下的类型——该表格展示了定义于.proto文件中的类型,以及与之对应的、在自 动生成的访问类中定义的类型:
编译 :执行以下命令生成转换文件
$ protoc --go_out=./ *.proto
生成 test.pb.go文件 4.使用 protobuf做数据格式转换
# 编译 helloServer.proto文件
$ protoc --go_out=./ *.proto #不加grpc插件
$ protoc --go_out=plugins=grpc:./ *.proto #添加grpc插件 #对比发现内容增加
#得到 helloServer.pb.go文件