C#使用ProtoBuf

2023-05-16


1. Google ProtoBuf
经过测试,protobuf比json存储效率还是要高,即时号称最快的fastjson也没有protobuf快,这里为了使用 c#做一个客户端兼容,所以也需要使用protobuf。

2.准备工作
 

Visual Studio 2017
NuGet安装:Google.Protobuf、Google.Protobuf.Tools
根据协议设计并编写.proto文件

3. 使用步骤
3.1 安装Google.Protobuf和Google.Protobuf.Tools的Nuget包
3.2 在Google.Protobuf.Tools下找到编译工具protoc.exe
3.3 准备好协议描述文件xx.proto,需要注意的是,proto文件之间可以互相引用,要正常使用,必须把所有相关的proto文件都准备好.


3.4 生成解码器

.\protoc.exe --proto_path=src --csharp_out=gen xx.proto

这里src是proto文件目录,gen是生成的cs文件目录,也可以使用当前目录./

3.5 安装到项目后,会自动在bin目录生成相关的动态链接库


5.关键代码
网络上有关C#和ProtoBuf 的文章比较混乱,大多数都不是基于Google的官方版本的,在这里我给出的建议是,使用官方的版本和API,这样不但能使用到最新的特性,还能保证读取的兼容性.

官网链接 https://developers.google.com/protocol-buffers/

解码:从数据库读出字节流,转为JSON

 // 比如我定义了一个message LINKINFO_EX,这里从接收或者数据库读字节流解析
 LINKINFO_EX linkinfo = LINKINFO_EX.Parser.ParseFrom(dataInfo);

 // 这里直接转为json 
 this.Info = linkinfo.ToString();

编码:这里是将json转为字节流

 LINKINFO_EX linkinfo = LINKINFO_EX.Parser.ParseJson(json: Info);
 this.lenInfo = linkinfo.CalculateSize();
 this.dataInfo = new byte[lenInfo];
 linkinfo.WriteTo(dataInfo);

真是比c++版本方便多了。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#使用ProtoBuf 的相关文章

  • Protobuf在Android中的基本使用

    前言 Protobuf xff0c 类似于json和xml xff0c 是一种序列化结构数据机制 xff0c 可以用于数据通讯等场景 xff0c 相对于xml而言更小 xff0c 相对于json而言解析更快 xff0c 支持多语言 一 Pr
  • 使用protobuf进行序列化时遇到的几个问题

    问题1 向一个string bytes字段设置参数时 xff0c 调用set str xff0c 在SetNoArena 处出现问题 xff0c 程序卡死 原因分析及解决 第一 xff0c 可能是 proto文件中字符串的类型不正确 可以尝
  • zeromq 利用protobuf通信

    利用zeromq进行编程时候 xff0c 服务器和客户端的通信 xff0c 利用protobuf时候 之前的项目里面 xff0c 需要对protobuf进行编码解码 其实并不需要如此繁琐 xff0c 直接利用 protobuf里面的 Mes
  • protobuf安装

    clone 代码 git clone https github com protocolbuffers protobuf git安装依赖项 sudo apt get install autoconf sudo apt get install
  • 消息序列化工具-protobuf介绍及安装使用技巧

    简介 protobuf是google团队开发的用于高效存储和读取结构化数据的工具 xml json也可以用来存储此类结构化数据 xff0c 但是使用protobuf表示的数据能更加高效 xff0c 并且将数据压缩得更小 xff0c 大约是j
  • golang gRPC:根据.protobuf文件生成go代码

    文章目录 golang gRPC xff1a 根据 protobuf文件生成go代码根据 protobuf文件生成go代码根据proto生成go放在什么位置是最佳实践ProtoBuf 生成 Go 代码去掉 JSON tag omitempt
  • Protobuf报错CHECK failed: GeneratedDatabase()->Add(encoded_file_descriptor, size):

    前言 Protobuf全称Protocol buffers xff0c 是Google研发的一种跨语言 跨平台的序列化结构的数据格式 xff0c 是一个灵活的 高效的用于序列化数据的协议 使用protobuf时 xff0c 既可以采用动态链
  • protobuf快速上手

    protobuf快速上手 一 序列化与反序列化 序列化与反序列化的场景 常用的工具 二 protobuf工作原理 三 快速上手 protobuf中的数据类型 proto文件格式 编译选项 快速上手 四 通讯录demo 编写proto文件 编
  • Protobuf C++ 版入门Demo

    Protobuf C 版入门Demo 前言 有关其编译和安装请查看 Protobuf C 版编译安装和简单使用 之前已经进行了编译安装 并且成功将已知的proto文件转化为cc和h 本文简单探讨如何使用Protobuf进行数据写入和读取 也
  • protobuf 2.0版本排查必填字段未填的方法

    在proto2 0版本中 如果required字段没有填写 那么proto编码字符串发给对方进行parse时 对方会parse失败 因此有必要在发送前检查一下是否存在这种情况 特别是在debug阶段 1 为了获取proto序列化的错误信息
  • 【Protobuf速成指南】enum类型的使用

    文章目录 2 1枚举类型 一 如何定义枚举类型 二 语法规范 三 重定义问题 四 enum类型相关函数 五 Contact 2 1 改写 六 总结 2 1枚举类型 本系列文章将通过对通讯录项目的不断完善 带大家由浅入深的学习Protobuf
  • Protobuf(Protocol Buffers)超详细入门教程(跨平台序列化, Java)——更新于2022.01

    目录 相关教程 相关文献 安装 C Installation Unix 环境 Protobuf3 0基础上手例子 相关教程 Protobuf Protocol Buffers 超详细入门教程 跨平台序列化 C CMake 更新于2022 0
  • protobuf c++编程笔记

    文章目录 字段内容的定义 修饰符 字段类型 引用方式 不同字段的方法 1 optional修饰的基本类型 2 optional修饰的对象类型 3 repeated修饰的基本类型 4 repeated修饰的对象类型 序列化 反序列化 字段内容
  • protobuf 中复合数据类型的读写

    背景 protobuf 在生成的 C 代码中为 proto 文件中的每个 message 生成了对应的 C 类 并提供了数据成员的读写方法 message 类型读写 message 示例 message Point double lng 1
  • protobuf详细介绍和使用

    一 protobuf初识 一 protocol buffers 是什么 protocol buffers 是一种灵活 高效 自动化机制的结构数据序列化方法 可类比 XML 但是比 XML 更小 更快 更为简单 你可以定义数据的结构 然后使用
  • ProtocolBuffers-3.0.0 For Objective C 的快速集成指南

    一 前言 最近调研 Google的Protocol Buffer 在网上看了几篇相关博客 发现他们讲的都比较复杂 所以就想写一篇简单点的文章 配置环境 mac OS 10 11 5 Xcode7 3 二 Protocol Buffer简介
  • protobuf的介绍、安装与使用

    1 protobuf是什么 protobuf是google旗下的一款平台无关 语言无关 可扩展的序列化结构数据格式 所以很适合用做数据存储和作为不同应用 不同语言之间相互通信的数据交换格式 只要实现相同的协议格式即同一 proto文件被编译
  • Protobuf(二)proto3语法格式

    proto文件有两种语法标准 proto2和proto3 我们以proto3为例 其语法格式如下 message
  • protobuf安装教程

    protobuf安装 一 Windows下安装 下载protobuf 配置环境变量 检查是否安装成功 二 Linux下安装 下载protobuf 安装protobuf 检查是否安装成功 一 Windows下安装 下载protobuf 下载地
  • Hello! protobuf——编译与安装(c++版)

    目录 前言 一 protobuf是什么 二 protobuf官方路径 三 protobuf编译安装 1 安装前建议 2 cmake使用 1 cmake介绍 2 命令行介绍 3 编译选项介绍 4 cmake安装 3 windows下使用nma

随机推荐