zoukankan      html  css  js  c++  java
  • 使用 Protocol Buffer 交换数据 wild

    Protocol Buffer 是 google 开发的一个用于定义通信双方数据格式定义库,支持C++,C#,Dart,Go,Java,Kotlin,Python等编程语言。项目参考地址:https://developers.google.cn/protocol-buffers

    1. Protocol Buffer 通过一个 .proto 文件,来定义通信内容的数据结构

    proto 文件定义规范参考:https://developers.google.cn/protocol-buffers/docs/proto3

    2. Protocol Buffer 通过编译 .proto 文件,生成各种语言的源代码(C# 对应 .cs 文件)

    要把 .proto 文件编译成指定语言(C#)源代码,需要下载 proto 编译器,下载地址为:https://github.com/protocolbuffers/protobuf/releases/latest,访问太慢可采用镜像(github.com.cnpmjs.org

    下载文件列表中,下载指定的平台及版本:protoc-{版本}-{平台}.zip,eg. protoc-3.19.1-win64.zip

    下载完成后,建议复制到 C:\Program Files\ 下,并在 PATH 中添加下级 bin 目录,然后命令行执行 protoc --version,查看是否安装成功

    在命令行中,先进入(cd)到 .proto 文件目录,然后执行编译,详细的编译选项使用 protoc --help 查看

    目前主要用到的 --csharp_out 即选择输出为 C# 代码并指定生成的 .cs 文件存放目录

    eg. protoc --csharp_out=. rawdata.proto

    3. 在项目中使用生成的源代码

    在项目中包含编译器生成的 .cs 文件,编译项目会报错,此时需要通过 nuget 安装运行时

    在 nuget 中搜索 Protobuf 并安装对应的版本即可,到此安装完成

    4. 使用 Protocol Buffer

    通过 proto 编译器生成的 cs 文件中,生成了对应结构的类,直接对类的属性进行赋值,即可设置通信的数据内容。

    调用 WriteTo 接口把结构对象写入文件

    using (var output = File.Create("resultFile.dat"))
    {
    	using (var cos = new Google.Protobuf.CodedOutputStream(output))
    	{
    		rawdata.WriteTo(cos);
    	}
    }
    

      通过 Parser.ParseFrom 解析文件生成结构对象

    using (var input = File.OpenRead("resultFile.dat"))
    {
    	using (var cos = new Google.Protobuf.CodedInputStream(input))
    	{
    		rData = Nts.Rawdata.Parser.ParseFrom(cos);
    	}
    }
    

      

      

     

  • 相关阅读:
    UITableView 排序、删除
    iOS中arc的设置
    dynamics ax 2009 distinct实现及数组集合
    将关系数据库映射到业务实体
    常见负载均衡实现
    ibatis经验
    百度贴吧10亿量级LAMP架构分享
    dynamics ax 2009 字段类似的表绑定界面注意
    [转]大型动态应用系统框架
    .net 发展历程
  • 原文地址:https://www.cnblogs.com/462079558/p/15559961.html
Copyright © 2011-2022 走看看