protobuf的使用

protobuf是Google提供一个具有高效的协议数据交换格式工具库,可以用于网络通信和数据存储。

优点:

  1. 体积小
  2. 序列化速度快
  3. 传输速度快
  4. 向后兼容性好
  5. 加密性好
  6. 维护成本低
  7. 跨平台,跨语言,可扩展性高

缺点:

  1. 二进制格式导致可读性差
  2. 缺乏自描述(不配合结构体看不出什么作用)
  3. 通用性差
protobuf在egret中的使用

先给一个.proto文件

package common;  
message SendMsg {
    required string userName = 1;
    required bool isTrue = 2;
    optional int32 phone = 3;
} 


message ReceiveMsg {
    required int32 type = 1;
    required SendMsg receive = 2;  //返回一个结构体数组
}

加载序列化

let str:string = RES.getRes("common_proto"); //加载proto文件

//初始化消息体
let builder:dcodeIO.ProtoBuf.Builder = dcodeIO.ProtoBuf.newBuilder();
dcodeIO.ProtoBuf.loadProto(str, builder);

//构建对象
let protoroot = builder.build();
let Cls = protoroot.common["SendMsg"];

//传入数据
let msgObj = new Cls({userName:"test1",isTrue:false, phone:15206});
let msg = msgObj.encode();       //序列化
let msgDe = msgCls.decode(msg);  //反序列化
console.log(msgDe);  

你可能感兴趣的:(protobuf的使用)