protobuf前后端解析_前端后台以及游戏中使用google-protobuf详解

前端后台以及游戏中使用google-protobuf详解

[TOC]

0、什么是protoBuf

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

特点:

平台无关、语言无关。

二进制、数据自描述。

提供了完整详细的操作API。

高性能 比xml要快20-100倍

尺寸小 比xml要小3-10倍 高可扩展性

数据自描述、前后兼容

1、下载protobuf的编译器

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环境下编写 Mac与window命令唯一的区别就是需要将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

i

你可能感兴趣的:(protobuf前后端解析)