protobuf

元气小坏坏 提交于 2020-11-21 04:23:28
  1. Protobuf是什么?

    Protobuf是一种平台无关、语言无关、可扩展且轻便高效的序列化数据结构的协议,可以用于网络通信和数据存储。

  2. Protobuf的优缺点?

  • 优点:

    ①相比较XML和JSON格式,protobuf更小、更快、更便捷。它以高效的二进制方式存储,比XML小3到10倍,快20到100倍。所以性能比较好,效率自然也高。

    ②有代码生成机制。可以自定义数据结构,然后使用代码生成器生成的代码来读写这个数据结构。 比如你你写个一下类似结构体的内容:

    message test
    {  
        required int32 test = 1;  
    } 
    

    像写一个这样的结构,protobuf可以自动生成一个.cpp文件或者其他语言(Python、Java等)文件。 protobuf将对结构体test的操作封装成一个类。便于使用。

    ③支持向后兼容和向前兼容。

    当客户端和服务器同事使用一块协议的时候, 当客户端在协议中增加一个字节,并不会影响客户端的使用。

    ④支持多种编程语言。 Protobuf目前已经支持Java,C++,Python、Go、Ruby等多种语言。

  • 缺点

    ①二进制格式导致可读性差。

    为了提高性能,protobuf采用了二进制格式进行编码。这直接导致了可读性差。

    ②缺乏自描述。

    一般来说,XML是自描述的,而protobuf格式则不是。 给你一段二进制格式的协议内容,不配合你写的结构体是看不出来什么作用的。

    ③通用性差。

    protobuf虽然支持了大量语言的序列化和反序列化,但相比json 和 XML,通用性还是没那么好。

  1. Protobuf的使用?

    GitHub地址: https://github.com/google/protobuf

    获取Release版本的地址是:https://github.com/google/protobuf/releases 你可以从这个地址下载你所需要的安装包。

    谷歌官方文档: https://developers.google.com/protocol-buffers/

    安装方法:我下载的是releases版本,使用的Ubuntu系统,解压后执行安装命令即可:

    $ ./configure
    $ make && make install
    $ sudo ldconfig # refresh shared library cache.
    

    通常情况ProtoBuf都安装在/usr/local目录下,该目录下包含了ProtoBuf的头文件,静态库和动态库文件。安装后测试protoc命令,该程序用于把proto文件翻译成目标代码:

    protoc --version
    
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!