C# ProtoBuf 入门

个人理解:protobuf 就是一种传输数据的协议,或者说格式,跟json类似。

首先罗列下需要的工具:

VS2015
protobuf-csharp-port-master 下载地址:https://github.com/jskeet/protobuf-csharp-port
(备注:有另一种工具protobuf-net使用起来更方便,有兴趣的可以参考这篇文章:http://www.cnblogs.com/jhli/p/6139914.html)

首先,将下载好的 protobuf-csharp-port-master 工具解压缩,进入build文件夹

点击BuildAll.bat,会在子文件夹下自动生成 build_output 和 build_temp 两个新文件夹

新建一个test.proto文件

package ProtoTest;

message Person {
  required string name = 1;
  required int32 id = 2;        // Unique ID number for this person.
  optional string email = 3;
 
  enum PhoneType {
    MOBILE = 0;
    HOME = 1;
    WORK = 2;
  }
 
  message PhoneNumber {
    required string number = 1;
    optional PhoneType type = 2 [default = HOME];
  }
 
  repeated PhoneNumber phone = 4;
}

 将其放入 build_output 的 tools 文件夹下

运行命令 protoc --descriptor_set_out=test.protobin --include_imports test.proto 会在文件夹下面新生成一个 test.protobin 文件

再运行 protogen test.protobin 就可以生成 test.cs 文件了

此时就可以将cs文件直接添加到项目中使用了

举个例子:

新建一个webservice项目

添加方法

[WebMethod]
        public byte[] Test()
        {
            return new Person.Builder().SetId(1).SetName("王尼玛").SetEmail("woshiwangnima@qq.com").Build().ToByteArray();
        }

在另一个项目中调用这个方法

ProtoServiceSoapClient service = new ProtoServiceSoapClient();

            var test = service.Test();

            ProtoTest.Person person = ProtoTest.Person.ParseFrom(test);

可以看到这个数据已经传输到调用方来了

 

转载于:https://www.cnblogs.com/tom6886/p/6722269.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值