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}"); }
到這裏使用就結束了,你們能夠自行測試下在不一樣的序列化方式下執行的速度跟最後文件的大小,推薦你們在系統架構的時候能夠採用這種方式命令行