protobuf

1. 概述

  protobuf(Protocol Buffers )是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。相比于Json,Protobuf有更高的转化效率,时间效率和空间效率都是JSON的3-5倍。

由于谷歌官方网站已经不再提供源代码下载,可以去以下地址下载。 Protobuf源代码下载地址:https://github.com/mgravell/protobuf-net 

特点: 
  

    • 结构数据串行化,灵活、高效、自动。
    • 相对XML,更小、更快、更简单。
    • 自定义数据结构。
    • 动态更新数据结构。

2、protobuf有什么?

        Protobuf 提供了C++、JavaPython语言的支持,提供了windows(proto.exe)和Linux平台动态编译生成proto文件对应的源文件。proto文件定义了协议数据中的实体结构(message ,field)

关键字message: 代表了实体结构,由多个消息字段(field)组成。

消息字段(field): 包括数据类型、字段名、字段规则、字段唯一标识、默认值

数据类型:常见的原子类型都支持(在FieldDescriptor::kTypeToName中有定义)

字段规则:(在FieldDescriptor::kLabelToName中定义)

        required:必须初始化字段,如果没有赋值,在数据序列化时会抛出异常

        optional:可选字段,可以不必初始化。

        repeated:数据可以重复(相当于java 中的Array或List)

        字段唯一标识:序列化和反序列化将会使用到。

默认值:在定义消息字段时可以给出默认值。

2、利用protoGen将proto文件转换成C#

(1)将proto文件放在protoGen文件夹根目录下面。

(2)打开命令提示符,进入protoGen文件夹根目录。

(3)执行命令protogen.exe -i:xxx.proto -o:xxx.cs

有import类型的 Proto文件的生成方法:

import "game_character.proto";

有import类型的 Proto文件,将基础文件,和import文件同时放在 根目录下, 命令行下运行protogen.exe

cd /d E:ProtoGen

protogen.exe -i:Name.proto -o:E:ProtoGenName.cs

//新方法
需要导入的文件必须放在ProtoGen 根目录下面,不要放在proto里, 可以直接批处理

原文地址:https://www.cnblogs.com/AaronBlogs/p/6815745.html