前端后台以及游戏中使用Google Protocol Buffer详解

 

0、什么是protoBuf

protoBuf是一种灵活高效的独立于语言平台的结构化数据表示方法,与XML相比,protoBuf更小更快更简单。你可以用定义自己protoBuf的数据结构,用ProtoBuf编译器生成特定语言的源代码,如C++,Java,Python等,目前protoBuf对主流的编程语言都提供了支持,非常方便的进行序列化和反序列化。

特点:

  • 平台无关、语言无关。
  • 二进制、数据自描述。
  • 提供了完整详细的操作API。
  • 高性能 比xml要快20-100倍
  • 尺寸小 比xml要小3-10倍 高可扩展性
  • 数据自描述、前后兼容

1、下载protobuf的编译器

目前最新版本为Protocol Buffers v3.5.1

2、配置环境变量

解压 protoc-3.5.1-osx-x86_64.zip

Mac 配置环境变量 vi ~/.bash_profile 使其配置生效source ~/.bash_profile

#protobuf export PROTOBUF_HOME=/Users/Javen/Documents/dev/java/protobuf/protoc-3.5.1-osx-x86_64 export PATH=$PATH:$PROTOBUF_HOME/bin

Window 将bin添加到path 即可 例如:D:\protobuf\protoc-3.5.1-win32\bin

本文在Mac环境下编写 Macwindow命令唯一的区别就是需要将protoc改成protoc.exe 前提是需要添加环境变量。

3、编写一个proto文件

文件保存为chat.proto 此proto文件摘自t-io 让天下没有难开发的网络编程

syntax = "proto3"; package com.im.common.packets;  option java_package = "com.im.common.packets";  //设置java对应的package option java_multiple_files = true; //建议设置为true,这样会每个对象放在一个文件中,否则所有对象都在一个java文件中  /**  * 聊天类型  */ enum ChatType {     CHAT_TYPE_UNKNOW = 0;//未知     CHAT_TYPE_PUBLIC = 1;//公聊     CHAT_TYPE_PRIVATE = 2;//私聊 } /**  * 聊天请求  */ message ChatReqBody {     int64 time = 1;//消息发送时间     ChatType type = 2; //聊天类型     string text = 3; //聊天内容     string group = 4; //目标组id     int32 toId = 5; //目标用户id,     string toNick = 6; //目标用户nick }  /**  * 聊天响应  */ message ChatRespBody {     int64 time = 1;//消息发送时间     ChatType type = 2; //聊天类型     string text = 3; //聊天内容     int32 fromId = 4; //发送聊天消息的用户id     string fromNick = 5; //发送聊天消息的用户nick     int32 toId = 6; //目标用户id     string toNick = 7; //目标用户nick     string group = 8; //目标组id }

4、编译器对其进行编译

4.1 编译为Java

进入到项目的跟目录执行以下编译命名,com/im/common/packets

关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信