Protocol buffers 是一个由谷歌开发的开源的编码机制用于将结构化的数据序列化或者反序列化,被设计成语言以及平台中立,protobuff比xml更简单比json还要紧凑一些,网上有一些关于对比他与一些序列化的对比这里就再也不赘述。这里主要说一下在C#/dotNet里是怎么运行的。json
1.下载google-protobuff的源码或者直接去下载别人编译好的dll也能够。若是是源码在VS2015里编译一下若是没有问题会生成Google.Protobuf.dllc#
2.定义数据结构,注意这里定义后能够生成各类语言的代码文件.我这里定义的数据结构以下:数据结构
syntax = "proto3"; package ConsoleService; message Order{ int32 orderId = 1; string memberName = 2; string memberPhone = 3; string memberReceiveName =4; enum PhoneType { MOBILE = 0; HOME = 1; WORK = 2; } message PhoneNumber { string number = 1; PhoneType type = 2; } repeated PhoneNumber phones = 5; }
注意这里的package是指命名空间,也能够这样 option csharp_namespace = "ConsoleService";架构
3.生成c#文件测试
能够用 protogen 把执行文件放到system32里或者配置环境变量这样就能够直接使用在命令行下进入到文件目录 而后执行google
protogen -i:./proto\order.proto -Order.cs 编码
4.使用spa
Order ir = new Order { MemberName="侧山东省的说的", MemberPhone="15858209305", MemberReceiveName ="encryFish", OrderId=1234 }; using (var output = File.Create("encry.dat")) { ir.WriteTo(output); } Order myOrder; using (var input = File.OpenRead("encry.dat")) { myOrder = Order.Parser.ParseFrom(input); //myOrder=Order.Parser.ParseFrom( Console.WriteLine($"my order receiveName is {myOrder.MemberReceiveName}"); }
到这里使用就结束了,你们能够自行测试下在不一样的序列化方式下执行的速度跟最后文件的大小,推荐你们在系统架构的时候能够采用这种方式命令行