文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Google Protocol Buff

2023-01-31 05:50

关注



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

Google Protobuf 3版本介绍

Google Protocol Buffer 简单介绍

python+protobuf 在python中使用protocol buffer

Protobuf3语言指南

Protobuf协议的Java应用例子





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




下载到本地



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







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

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




比如放在src目录下





配置系统环境变量 【Path】





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





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







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


比如:





syntax = "proto3";
message Person {  
  int32  id    = 1 ;  //message体内的字段序号从1开始往下排  
  string name  = 2 ;  
} 



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


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






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


python setup.py build

python setup.py test

python setup.py install



执行前目录结构:





执行后:








将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这个对象的信息如下






阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯