protobuf

  1. Protobuf是什么?git

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

  2. Protobuf的优缺点?编程

  • 优势:json

    ①相比较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
相关文章
相关标签/搜索