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
相關文章
相關標籤/搜索