您好,登錄后才能下訂單哦!
protobuf-csharp-sport 的下載地址 : https://github.com/jskeet/protobuf-csharp-port
①,將下載的文件解壓:
②,開(kāi)啟BuildAll.bat在根目錄生成build_output 和 build_temp2個(gè)文件夾
(注意使用管理員權(quán)限打開(kāi)BuildAll.bat , 不然會(huì)出現(xiàn)錯(cuò)誤)
③,在生成的build_output成會(huì)生成一系列的工具(在其下的tools文件夾下),介紹如下:
①,將一個(gè)proto文件copy到tools文件夾
proto文件內(nèi)容如下:
package PB;
message R_LoginVo{
required string name = 1;
required string pwd = 2;
required string sign = 3;
}
message A_LoginVo{
required int32 ty = 1;
required ParamVo msg = 2;
}
message PackingVO{
required bool succ = 1;
required string protoId = 2;
optional int32 obj = 3;
}
message ParamVo{
optional string m = 1;
}
②,將proto文件生成二進(jìn)制文件
1,打開(kāi)命令提示提示符 , 轉(zhuǎn)到tools文件夾(如上).
2,使用命令 : protoc --descriptor_set_out=protocol_pb.protobin --include_imports protocol_pb.proto
可以看到tools文件夾中多了一個(gè) : protocol_pb.protobin文件 , 如下:
3,使用命令:protogen protocol_pb.protobin 將protocol_pb.protobin文件翻譯成C#文件 : ProtocolPb.cs , 如下:
可以看出c#文件將中間的_去掉了.這個(gè)確實(shí)是我始料未及的.
①,將Google.ProtocolBuffers.dll 和 Google.ProtocolBuffers.Serialization.dll 引入到項(xiàng)目,如下
②,將 ProtocolPb.cs文件加入此項(xiàng)目
③,測(cè)試(正在使用)
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using PB;
namespace ProtoBufDemo
{
class Program
{
static void Main(string[] args)
{
R_LoginVo.Builder loginBuild = R_LoginVo.CreateBuilder();
loginBuild.SetName("Aonaufly").SetPwd("123456").SetSign("123456789");
Console.WriteLine(@"name : {0} , pwd : {1} , sign : {2}" , loginBuild.Name , loginBuild.Pwd , loginBuild.Sign);
byte[] bytes;
R_LoginVo login = loginBuild.Build();
using (MemoryStream stream = new MemoryStream())
{
//Save the person to a stream
login.WriteTo(stream);
bytes = stream.ToArray();
}
R_LoginVo copy_analysis = R_LoginVo.CreateBuilder().MergeFrom(bytes).Build();
Console.WriteLine(@"name : {0} , pwd : {1} , sign : {2}", copy_analysis.Name, copy_analysis.Pwd, copy_analysis.Sign);
bytes = R_LoginVo.CreateBuilder().MergeFrom(bytes).Build().ToByteArray();
Console.ReadKey();
}
}
}
結(jié)果如下:
可以看出 , Google的ProtoBuf在通訊方面確實(shí)有很大的優(yōu)勢(shì) :
1,操作簡(jiǎn)單
2,代碼明晰
再也不需要構(gòu)建復(fù)雜的Bytes結(jié)構(gòu)了.
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。