• Protobuf简介


    Protobuf

    定义:可序列化的数据交换格式
    用途:用于通信协议(数据),数据存储等
    特点:语言无关,平台无关,高效,扩展性好。
    相近产品:XML/JSON
    优点:性能好效率高(存储和转化)、预生成代码(无需编写解析代码)、多语言支持(开源社区)、兼容性好
    缺点:国内应用较少(跨系统调用不方便)、没有json易读可调试

    Protobuf性能为什么这么好
    1. 去掉了json中的字段名
    2. 使用了tag技术,保证了字段不重复,保证在数据流中的位置,标记类型。
    3. Varint编码,普通整数的4字节,较小的数字可以用1字节表示。使用zigzag算法优化负数表示sint32。
    4. 根据Tag中的数据类型信息按位解析数据,不再需要像json解析字符串
    5. 储存string类型时,采用了tag|leg|value
    使用

    在VS中的工具->NuGet程序包管理器->程序包管理器控制台,运行命令:
    install-Package protobuf-net -Version 1.0.0.280
    就能下载对应版本的Protobuf工具到该项目文件夹中,以后可以复制该文件夹到其他项目中使用。
    可以自己写一个CMD脚本文件,运行命令时双击文件即可,文件命名为genproto.cmd,内容如下:

    "protoc-3.2.0-win32/bin/protogen" --proto_path=../Src/Lib/proto --csharp_out=../Src/Lib/Protocol message.proto
    pause
    
    • 1
    • 2

    即可在特定位置生成对应的csharp脚本文件。在项目中引用对应的头文件即可使用自己定义的协议。

    序列化和反序列化

    序列化:将数据结构和对象转换成能够存储和传输的格式。
    反序列化:将序列化之后的数据转化为序列化之前的数据结构或对象。
    protobuf的数据要经过序列化转换为二进制数据才能在网上传输,对方收到后进行反序列化还原

  • 相关阅读:
    【OpenCV】-图像的矩
    7-119 奇偶分家
    kube-apiserver 安装路由汇总
    Elasticsearch:从零开始创建一个 REST handler 插件
    搭建微服务项目框架环境
    在 IconFont 上获取图标资源的操作方法与感悟
    Searching for MobileNetV3翻译
    【RK3588】Firefly 瑞芯微板子入门知识、和环境篇
    k8s2-4控制器操作指令
    猿创征文|OpenCV-像素值读写(java版)
  • 原文地址:https://blog.csdn.net/tianjuewudi/article/details/134329077