C# 使用google protocolbuffer协议

王朝学院·作者佚名  2016-05-20
窄屏简体版  字體: |||超大  

C# 使用google PRotocolbuffer协议 简介

google protocolbuffer,google 提供了三种语言的实现:java、c++和python,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,比使用xml进行数据交换快许多。

可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。

以下介绍下C#使用protocolbuffer

下载protobuf-csharp-port-2.4.1.521-release-binaries.zip

http://code.google.com/p/protobuf-csharp-port/

proto 文件

//import "Base.proto"; 添加引用文件方式

package Proto;

message LoginRsp{ required int32 Result = 1;//0:失败,1:成功 optional bytes Cause = 2; optional bytes guid = 4;//唯一标识请求,可选}

required 必填项

optional 可选项

repeated list项

协议生成

把下载文件中的protoc.exe、ProtoGen.exe、Google.ProtocolBuffers.dll这些文件和bat文件、proto文件放入同一个文件夹

生成协议bat文件格式:

@echo onprotoc --descriptor_set_out=LoginRsp.protobin --include_imports LoginRsp.proto protogen LoginRsp.protobin

会在该文件中生成 LoginRsp.cs

生成要发送协议数据

Proto.LoginRsp.Builder builder = new Proto.LoginRsp.Builder();

builder.Result = 1;

builder.Cause = ByteString.CopyFrom(Cause, Encoding.Default);

builder.Guid= ByteString.CopyFrom(Guid, Encoding.Default); //string 转 ByteString , ByteString 是 Protocol buffer 的类型。byte[] sendData = builder.Build().ToByteArray();//发送data

解析协议:

Proto.LoginRsp Rsp = Proto.LoginRsp.ParseFrom(netMsg);//netMsg 生成的协议 byte[] sendData = builder.Build().ToByteArray();

StringConvertToByteString

public class StringConvertToByteString { public static ByteString ConvertToByteString(string text) { if (text != null) return ByteString.CopyFrom(text, Encoding.Default); else return ByteString.Empty; } public static ByteString ConvertToByteString(string text, Encoding encoding) { if (text != null) return ByteString.CopyFrom(text, Encoding.Default); else return ByteString.Empty; } public static string ConvertToString(ByteString text) { return text.ToString(Encoding.Default); } public static string ConvertToString(string value) { if (!string.IsNullOrEmpty(value)) return value; else return string.Empty; } }

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航