protobuf协议基础介绍

Protocol Buffers

介绍主题

l  Protocol Buffers简介

l  定义一个.proto文件

l  Message的使用

l  消息的编码机制

l  使用时注意事项

 

什么是ProtocolBuffers?

l  Google定义的一种序列化的协议格式;

l  Google内部几乎所有的RPC调用及文件格式;

(据称当前google已经定义了12,183个.proto文件,共有48,162种不同的message类型。它们用于RPC系统或各种存储系统中进行数据的存储)

l  目标:

Ø  简单性

Ø  兼容性

Ø  高性能

 

XML与Protobuf的比较

易读性 <->二进制格式;

自描述语言 <->没有.proto文件根据就是无用的;

文件大<-> 文件小(3-10倍);

解析及序列化较慢<->快(20- 100倍);

.xsd(复杂)<->.proto(简单,无二义性);

访问简单<->访问容易;

 

示例如下:

<person>

    <name>John Doe</name>

    <email>[email protected]</email> 

  </person>

(== 69 bytes, 5­10ms to parse)

System.out.println(person.getElementsByTagName("name").getElementText());

System.out.println(person.getElementsByTagName("email").getElementText());

 

Person {

  name: "John Doe"

  email: "[email protected]

}

(== 28 bytes, 100­200ns to parse)

System.out.println(person.name());

System.out.println(person.email());

 

message示例

package tutorial;

option java_package = "com.example.tutorial";

option java_outer_classname = "AddressBookProtos";

 

message Person {

required string name  = 1; 

required int32  id    = 2;

optional string email = 3; 

enum PhoneType {

     MOBILE = 0;

HOME   = 1;

WORK   = 2;

}

message PhoneNumber {

required string    number = 1;

optional PhoneType type   = 2 [default = HOME];

}

repeated PhoneNumber phone = 4;

}

message AddressBook {

  repeated Person person = 1;

}

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值