前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Google Protocol Buff

Google Protocol Buff

作者头像
py3study
发布2020-01-07 11:29:07
8260
发布2020-01-07 11:29:07
举报
文章被收录于专栏:python3python3

一、参考资料

跨语言通信方案的比较—Thrift、Protobuf和Avro

Google Protobuf 3版本介绍

Google Protocol Buffer 简单介绍

python+protobuf 在python中使用protocol buffer

Protobuf3语言指南

Protobuf协议的Java应用例子

二、Protobuff安装

GitHub项目地址:Protocol Buffers - Google's data interchange format

下载到本地

解压后重命名文件夹如下【也可以保持原有的文件夹名不动】

三、protoc.exe编译器下载

百度网盘:protoc-3.5.1-win32.zip

下载解压后,将文件夹bin下面的exe执行程序拷贝到上一步的protobuff目录任意文件夹下

比如放在src目录下

配置系统环境变量 【Path】

启动CMD,输入protoc,验证配置是否成功

我们可以看到编译器的一些参数,其支持输出的语言类型包括C++,C#,Python,Java等

四、简单proto文件编写

Protocol Buffers是一个更灵活、高效、自动化的解决方案。它通过一个.proto文件描述我们想要的数据结构

比如:

代码语言:javascript
复制
syntax = "proto3";
message Person {  
  int32  id    = 1 ;  //message体内的字段序号从1开始往下排  
  string name  = 2 ;  
} 

上述定义了一个消息体,名称是Person,编译后等同于Python的模块、Java的类、C++的头和源文件,其中有两个字段,一个是32位的id,一个是字符串name

关于proto的字段类型有哪些,可以参考:Protocol Buffer 语法(syntax)

五、Windows下,Python配置probuff环境

切换到最开始我们下载的protocol的目录下,找到python文件夹,进去,依次执行

代码语言:javascript
复制
python setup.py build

python setup.py test

python setup.py install

执行前目录结构:

执行后:

六、Python使用Protobuf

将person.proto文件放到任意目录下,最好是python的工作目录下,比如我的放在D盘的proto目录下

有了proto文件,我们需要用protoc.exe工具将其编译成Python语言可以识别的Person模块【py】

编译命令:  protoc -I=输入目录 --python_out=python模块的输出目录 空格 proto文件的绝对路径

打开CMD窗口,由于protoc.exe的环境变量已配置,所以比着上面的模子在窗口中写:

protoc -I=D:/proto --python_out=D:/proto D:/proto/person.proto

不报错就OK,随后,我们可以看到同目录下多了一个文件出来

别小看person.proto这个文件,这个文件可是跨语言的二进制协议文件,也就是我们只需要定义通信的message体,即可实现C++、Java、Python、JS、PHP等语言平台之间的通信,而且这种传输效率很高,后续我会针对Python和Java这两种语言实现基于这种传输协议的Web Restful接口的调用

话不多说,我们在当前目录下,新建一个demo模块,并引入模块person_pb2.py如下

随后我们可以从这个模块中拿出一个person的对象,并很嗨皮的给其附上对应的属性值,如下

我们看一下person_pb2.py这个模块中的属性字段怎么定义的

最后,我们执行下,打印一下person这个对象的信息如下

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、参考资料
    • Google Protobuf 3版本介绍
    • 二、Protobuff安装
    • 三、protoc.exe编译器下载
    • 四、简单proto文件编写
    • 五、Windows下,Python配置probuff环境
    • 六、Python使用Protobuf
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档