Protobuf
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Protobuf

on

  • 1,908 views

Protobuf

Protobuf

Statistics

Views

Total Views
1,908
Views on SlideShare
1,754
Embed Views
154

Actions

Likes
0
Downloads
11
Comments
0

1 Embed 154

http://www.kgdb.info 154

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Protobuf Presentation Transcript

  • 1. ProtoBuf Dongdong Deng <LibFetion@gmail.com>
  • 2. OverView� 1、简介� 2、示例� 3、.proto语法
  • 3. 1、ProtoBuf ProtoBufGoogle开源的,用于序列结构化数据的协议http://code.google.com/apis/protocolbu ffers� 跨编程语言� 跨系统平台� 可扩展
  • 4. 1、ProtoBuf vs XML ProtoBuf� 简单� 比XML小3-10倍� 比XML快20-100倍� 避免歧义� 自动产生数据操作类,让开发者更容易使 用
  • 5. 1、ProtoBuf 缺点 ProtoBuf� 目前使用不够广泛ProtoBuf目前没有广泛使用,如果系统需要提供若干对外 的接口给第三方系统调用,XML目前是更好的选择� 二进制格式导致可读性差二进制格式进行编码,通信协议出现问题不好跟踪� 缺乏自描述如果不配合相应的proto文件,ProtoBuf基本是看不懂,在配置文件方面,XML还是很有优势的
  • 6. 2、ProtoBuf 示例 ProtoBuf1: Write .proto 文件2:protoc --cpp_out --java_out --python_out3: *.pb.h *.pb.cc4: using above *.pb.h in your program
  • 7. 2、.proto .protomessage Test{ required int32 id = 1; required string pwd = 2; optional string others = 3;}
  • 8. 2、protoc protocprotoc --cpp_out=./test test.proto$ls ./testtest.pb.h test.pb.cc
  • 9. 2、progam-产生方 progam-产生方:Test test;test.set_id(344300);test.set_pwd(123);test.set_others("othersothers");string sTest;test.SerailzeToString(&sTest);
  • 10. 2、progam-读取方 progam-读取方:string sTest; //得到协议数据,存放到sTestTest test;if(test.ParseFromString(sTest)){ cout << "ID:" << test.id() << endl << "PWD:" << test.pwd() << endl << "others:" << test.others() << endl;} else { cerr << "parse error!" << endl;}
  • 11. 3、proto 语法 proto
  • 12. package tutorial;message Person { required string name = 1; required int32 id = 2; // Unique ID number for this person. 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;} Make Presentation much more fun// Our address book file is just one of these. @WPS官方微博 @WPS官方微博message AddressBook { @kingsoftwps repeated Person person = 1;}