Protobuf 简介及转换为.cs文件

2020-12-21 16:45发布

Protocol Buffers: 
protocolbuffer(以下简称PB)是google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了多种语言的实现:java、c#、c++、go 和 python,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,比使用xml 进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。

protobuf-net地址:https://github.com/mgravell/protobuf-net

Protobuf优点: 
同XML相比,Protocol buffers在序列化结构化数据方面有许多优点: 
1. 更简单 
2. 数据描述文件只需原来的1/10至1/3 
3. 解析速度是原来的20倍至100倍 
4. 减少了二义性 
5. 生成了更容易在 编程中使用的数据访问类 
6、支持多种编程语言 
通常应用于网络游戏中,,,


Protobuf语法规则: 
指定字段类型 
所有的字段都是标量类型:string、bool类型、int类型等等,当然,你也可以为字段指定其他的合成类型,包括枚举(enumerations)或其他消息类型。 
分配标识号 
在消息定义中,每个字段都有唯一的一个标识符。这些标识符是用来在消息的二进制格式中识别各个字段的,一旦开始使用就不能够再改。 
● 注:[1,15]之内的标识号在编码的时候会占用一个字节。[16,2047]之内的标识号则占用2个字节。所以应该为那些频繁出现的消息元素保留 [1,15]之内的标识号 
● 切记:要为将来有可能添加的、频繁出现的标识号预留一些标识号。 
最小的标识号可以从1开始,最大到229 - 1, or 536,870,911。不可以使用其中的[19000-19999]的标识号, Protobuf协议实现中对这些进行了预留。如果非要在.proto文件中使用这些预留标识号,编译时就会报警。 
指定字段规则 
所指定的消息字段修饰符必须是如下之一: 
* required:不可增加或删除的字段,必须初始化; 
* optional:可选字段,可删除,可以不初始化; 
* repeated:可重复字段(对应C#里面的List)。

本人不是专业的,所以在这里只是简介,想了解详情可百度搜索Protobuf语法规则用法手册,,,推荐链接:http://colobu.com/2015/01/07/Protobuf-language-guide/


Protobuf例子 
如下便是一个Protobuf文件

Package Cmd;

message Person

{

    optional string Child = 1;

    repeated string Parent = 2;

    required string Name = 3;

    required bool Gender = 4;

    required Int32 Msg = 5;

}

将proto文件转换问.cs文件,,, 
首先需要创建一个.proto文件,,(以创建的Text.proto为例) 
然后需要有下面这文件: 链接:http://pan.baidu.com/s/1nveIOit 密码:w4fz 


然后使用 命令提示符:

输入:protogen.exe -i:Text.proto -o:Text.cs 
注意:上面是书写格式,我们可以做如下操作,将下载好的上图文件中的protogen.exe拖拽到doc命令面板上,然后输入 -i: 然后将要转换的文件拖拽到doc面板上 然后输入 -o:然后输入要生成文件所在目录已经文件名称,,,操作后如下图:(注意不要有中文目录)

这样就完成文件格式的转换了,,,下篇我将介绍Protobuf在Unity中的使用(序列化和反序列化)



作者:Czhenya

链接:https://czhenya.blog.csdn.net/article/details/78216281

来源:CSDN
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。