ProtoBuf介绍

最近在工作中接触到了Google的.proto文件编写,因此对其进行简单的汇总。

protocol buffer 是一种语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等。

Protocol Buffer 是一种灵活,高效,自动化机制的结构数据序列化方法-可类比 XML,但是比 XML

  • 更小(3 ~ 10倍)
  • 更快(20 ~ 100倍)
  • 更为简单
  • 自动生成更易于以编程方式使用的数据访问类

你指定的 message 字段可以是下面几种情况之一:

  • required: 格式良好的 message 必须包含该字段一次。
  • optional: 格式良好的 message 可以包含该字段零次或一次(不超过一次)。
  • repeated: 该字段可以在格式良好的消息中重复任意多次(包括零)。其中重复值的顺序会被保留。
    注:在 proto3 中已经为兼容性彻底抛弃 required。

分配字段编号

如你所见,message 定义中的每个字段都有唯一编号。这些数字以 message 二进制格式 标识你的字段,并且一旦你的 message 被使用,这些编号就无法再更改。请注意,1 到 15 范围内的字段编号需要一个字节进行编码,编码结果将同时包含编号和类型(你可以在 Protocol Buffer 编码 中找到更多相关信息)。16 到 2047 范围内的字段编号占用两个字节。因此,你应该为非常频繁出现的 message 元素保留字段编号 1 到 15。请记住为将来可能添加的常用元素预留出一些空间。

例如,如果要定义与搜索请求相应的搜索回复 message - SearchResponse message,则可以将其添加到相同的 .proto:
可以在单个 .proto 文件中定义多种 message 类型。

message SearchRequest {
   
  string query = 1;
  int32 page_number = 2;
  int32 result_per_page 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值