成都网站建设设计

将想法与焦点和您一起共享

C#之ProtoBuf应用基础-创新互联

protobuf-csharp-sport 的下载地址 : https://github.com/jskeet/protobuf-csharp-port

专业领域包括成都网站建设、成都做网站、电子商务商城网站建设、微信营销、系统平台开发, 与其他网站设计及系统开发公司不同,成都创新互联公司的整合解决方案结合了帮做网络品牌建设经验和互联网整合营销的理念,并将策略和执行紧密结合,为客户提供全网互联网整合方案。

一 : 准备工作

①,将下载的文件解压:

C#之ProtoBuf应用基础
②,开启BuildAll.bat在根目录生成build_output 和 build_temp2个文件夹
(注意使用管理员权限打开BuildAll.bat , 不然会出现错误)
C#之ProtoBuf应用基础
③,在生成的build_output成会生成一系列的工具(在其下的tools文件夹下),介绍如下:
C#之ProtoBuf应用基础

二 : 生成C#文件

①,将一个proto文件copy到tools文件夹
C#之ProtoBuf应用基础
proto文件内容如下:

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文件生成二进制文件
1,打开命令提示提示符 , 转到tools文件夹(如上).
2,使用命令 :protoc --descriptor_set_out=protocol_pb.protobin --include_imports protocol_pb.proto
可以看到tools文件夹中多了一个 : protocol_pb.protobin文件 , 如下:
C#之ProtoBuf应用基础
3,使用命令:protogen protocol_pb.protobin将protocol_pb.protobin文件翻译成C#文件 : ProtocolPb.cs , 如下:
C#之ProtoBuf应用基础
可以看出c#文件将中间的_去掉了.这个确实是我始料未及的.

三 : 使用C#资源

①,将Google.ProtocolBuffers.dll 和 Google.ProtocolBuffers.Serialization.dll 引入到项目,如下
C#之ProtoBuf应用基础
②,将 ProtocolPb.cs文件加入此项目
③,测试(正在使用)

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();
        }
    }
}

结果如下:
C#之ProtoBuf应用基础
可以看出 , Google的ProtoBuf在通讯方面确实有很大的优势 :
1,操作简单
2,代码明晰
再也不需要构建复杂的Bytes结构了.

创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。


分享名称:C#之ProtoBuf应用基础-创新互联
文章来源:http://chengdu.cdxwcx.cn/article/gsido.html