C#使用ProtoBuf


1. Google ProtoBuf
经过测试,protobuf比json存储效率还是要高,即时号称最快的fastjson也没有protobuf快,这里为了使用 c#做一个客户端兼容,所以也需要使用protobuf。

2.准备工作
 

Visual Studio 2017
NuGet安装:Google.Protobuf、Google.Protobuf.Tools
根据协议设计并编写.proto文件

3. 使用步骤
3.1 安装Google.Protobuf和Google.Protobuf.Tools的Nuget包
3.2 在Google.Protobuf.Tools下找到编译工具protoc.exe
3.3 准备好协议描述文件xx.proto,需要注意的是,proto文件之间可以互相引用,要正常使用,必须把所有相关的proto文件都准备好.


3.4 生成解码器

.\protoc.exe --proto_path=src --csharp_out=gen xx.proto

这里src是proto文件目录,gen是生成的cs文件目录,也可以使用当前目录./

3.5 安装到项目后,会自动在bin目录生成相关的动态链接库


5.关键代码
网络上有关C#和ProtoBuf 的文章比较混乱,大多数都不是基于Google的官方版本的,在这里我给出的建议是,使用官方的版本和API,这样不但能使用到最新的特性,还能保证读取的兼容性.

官网链接 https://developers.google.com/protocol-buffers/

解码:从数据库读出字节流,转为JSON

 // 比如我定义了一个message LINKINFO_EX,这里从接收或者数据库读字节流解析
 LINKINFO_EX linkinfo = LINKINFO_EX.Parser.ParseFrom(dataInfo);

 // 这里直接转为json 
 this.Info = linkinfo.ToString();

编码:这里是将json转为字节流

 LINKINFO_EX linkinfo = LINKINFO_EX.Parser.ParseJson(json: Info);
 this.lenInfo = linkinfo.CalculateSize();
 this.dataInfo = new byte[lenInfo];
 linkinfo.WriteTo(dataInfo);

真是比c++版本方便多了。

 

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值