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);  
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容