ProtoBuf

作者: 歌莫信息 | 来源:发表于2018-08-06 14:24 被阅读34次

    一、概述

    1. Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 .proto 文件。他们用于 RPC 系统和持续数据存储系统。
      2.一种语言无关、平台无关、扩展性好的、轻便高效的的结构化数据串行化方法。用于通信协议、数据存储的结构化数据串行化方法。
      3.目前官方已提供主流平台(Windows,osx,Android,iOS,Linux…),主流语言(C++,C#,JS,JAVA,Objective-C,Ruby,Python…)的支持。

    二、编译器下载及安装

    1. 下载地址:https://github.com/google/protobuf/releases
      2.不同平台需要安装对应平台的编译器

    三、ProtoBuf源文件
    Test.proto 文件 // Test是文件名,proto文件后缀

    文件内容
    syntax = “proto3”; //声明:当前使用的文件语法是 proto3 (对应有proto2标准)
    message Person{ //Person 是数据结构名称(类似于数据类的类名), 前缀message表示其在文件中属于消息类型。(对应有enum前缀,表示枚举类型)
    string name = 1;// (字段名name, 类型为string(字符串类型), 在结构体中的编号是1)
    int32 age = 2; //(字段名name, 类型为int32(32位整型数), 在结构体中的编号是2)
    float weight = 3;// (字段名name, 类型为float(单精度浮点数), 在结构体中的编号是3)
    bytes emailData= 4; //(字段名name, 类型为bytes (二进制data类型), 在结构体中的编号是4)
    repeated Person children = 5; //(字段名children , 类型为repeated (数组类型),数组的元素类型为Person, 在结构体中的编号是5)
    }

    四、编译
    不同平台用自己的编译器,编译protobuf源文件,得到自己平台的对应语言的源代码


    屏幕快照 2018-08-06 下午2.13.51.png

    五、Objective-C源文件

    1. Person类为protobuf 源文件Test.proto定义的数据类,两者间的字段名及字段类型是相互配置的
    2. Person类继承于protobuf框架中的 GPBMessage类,GPBMessage类提供数据序列化函数(data)及反序列化函数(initWithData)
    3. 不同语言间的数据序列化函数及反序列化函数的函数名有所差异。


      屏幕快照 2018-08-06 下午2.14.05.png

    六、参考
    •1.https://blog.csdn.net/xiaofei0859/article/details/53169687
    •2.https://github.com/google/protobuf/releases
    •3.https://www.cnblogs.com/tandaxia/p/6181534.html

    相关文章

      网友评论

          本文标题:ProtoBuf

          本文链接:https://www.haomeiwen.com/subject/mqzwvftx.html