博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
protobuf v3测试
阅读量:7048 次
发布时间:2019-06-28

本文共 1371 字,大约阅读时间需要 4 分钟。

hot3.png

    谷歌最近发布了v3版本的protobuf,以前的protobuf被称之为v2,二者之间的区别其特点见我上一篇blog。

    个人以为v3要比v2好处就在于:简洁,且二者的新版本都共同支持了新的数据类型:map。相比v2,它去掉了required等选项,只保留了repeated选项,还添加了时间等比较常用的数据类型(当然暂时还没有实现)等等。唯一的缺点就是,v3还没有发布beta版,目前的版本是protobuf-3.0.0-alpha-1。

    为了测试v3对v2的兼容性,我写了一个程序,v2的协议内容如下:

syntax = "proto2";package proto3_proto;message Message {  enum Humour {    UNKNOWN = 0;    PUNS = 1;    SLAPSTICK = 2;    BILL_BAILEY = 3;  }  optional string name = 1;  optional Humour hilarity = 2;  optional uint32 height_in_cm = 3;  optional bytes data = 4;  optional int64 result_count = 7;  optional bool true_scotsman = 8;  optional float score = 9;  repeated uint64 key = 5 [packed = true];  // repeated uint64 key = 5;}message MessageArray{   map
 msg_map = 1;}

     上面的协议内容基本上把protobuf各种数据类型都包括了,下面是对应的v3版本协议:

syntax = "proto3";package proto3_proto;message Message {  enum Humour {    UNKNOWN = 0;    PUNS = 1;    SLAPSTICK = 2;    BILL_BAILEY = 3;  }  string name = 1;  Humour hilarity = 2;  uint32 height_in_cm = 3;  bytes data = 4;  int64 result_count = 7;  bool true_scotsman = 8;  float score = 9;  repeated uint64 key = 5[packed = true];}message MessageArray{   map
 msg_map = 1;}

    v3的协议内容看着比v2清爽一些。 写了一个测试程序,其内容就不列出来了,我放在了,感兴趣的自己去下载。只要是v3没有改变v2的部分,二者编码后的内容是一致的。

   待v3的stable版本发布出来时候,它可能就开始支持时间等一些常用类型了,据说还可以把内容序列化为json格式,到时候再把更新本篇的内容。

转载于:https://my.oschina.net/alexstocks/blog/376407

你可能感兴趣的文章
Maven项目部署问题
查看>>
javax.servlet包加载不了
查看>>
matlab-线性代数 齐次方程组 判断是否有无穷多解
查看>>
myeclipse建立maven项目
查看>>
sql server 2000,一个数据库最多能建多少张表,每张表最多能建多少个字段?
查看>>
系统表相关SQL语句
查看>>
MWC 2017:S8缺席,三星祭出AR/VR项目救场
查看>>
iOS 官方文档阅读顺序整理
查看>>
获取验证码的URL后边为什么要加上一个值不断变化的参数?
查看>>
centos7 mysql的安装
查看>>
Javascript跨浏览器的事件对象
查看>>
前端代码规范
查看>>
UITableView:下拉刷新和上拉加载更多
查看>>
CFileDialog
查看>>
centOS Python 安装2.7以上版本
查看>>
最近気になる清掃
查看>>
C语言下的简易计算器
查看>>
git 分支
查看>>
一类分治问题
查看>>
[ZJOI2017]树状数组
查看>>