別隻會用Json和XML了,快來學習Google出品的序列化神器Protocol Buffer

前言

  • 習慣用 Json、XML 數據存儲格式的你們,相信大多都沒聽過Protocol Buffer
  • Protocol Buffer 其實 是 Google出品的一種輕量 & 高效的結構化數據存儲格式,性能比 Json、XML 真的強!太!多!
由於 Google出品,我相信Protocol Buffer已經具備足夠的吸引力
  • 今天,我將獻上一份全面 & 詳細的 Protocol Buffer攻略,含介紹、特點、具體使用、源碼分析、序列化原理等等,希望您們會喜歡。

  • 目錄

    示意圖


    1. 定義

    一種 結構化數據 的數據存儲格式(類似於 XML、Json

    1. Google 出品 (開源)
    2. Protocol Buffer 目前有兩個版本:proto2proto3
    3. 因爲proto3 還是beta 版,所以本次講解是 proto2

    2. 作用

    通過將 結構化的數據 進行 串行化(序列化),從而實現 數據存儲 / RPC 數據交換的功能

    1. 序列化: 將 數據結構或對象 轉換成 二進制串 的過程
    2. 反序列化:將在序列化過程中所生成的二進制串 轉換成 數據結構或者對象 的過程

    3. 特點

    • 對比於 常見的 XML、Json 數據存儲格式,Protocol Buffer有如下特點:

    Protocol Buffer 特點


    4. 應用場景

    傳輸數據量大 & 網絡環境不穩定 的數據存儲、RPC 數據交換 的需求場景

    如 即時IM (QQ、微信)的需求場景


    總結

    傳輸數據量較大的需求場景下,Protocol BufferXML、Json 更小、更快、使用 & 維護更簡單!


    5. 序列化原理解析

    • 序列化的本質:對數據進行編碼 + 存儲
    • Protocol Buffer的性能好:傳輸效率快,主要原因 = 序列化速度快 & 序列化後的數據體積小,其原因如下:

    1. 序列化速度快的原因:
      a. 編碼 / 解碼 方式簡單(只需要簡單的數學運算 = 位移等等)
      b. 採用 PB 自身的框架代碼 和 編譯器 共同完成

    2. 序列化後的數據量體積小(即數據壓縮效果好)的原因:
      a. 採用了獨特的編碼方式,如VarintZigzag編碼方式等等
      b. 採用T - L - V 的數據存儲方式:減少了分隔符的使用 & 數據存儲得緊湊

    更加詳細的介紹,請看文章:Protocol Buffer 序列化原理大揭祕 - 爲什麼Protocol Buffer性能這麼好?

    至此, 關於Protocol Buffer的序列化原理講解完畢。下面將繼續講解如何具體使用Protocol Buffer


    6. 使用步驟 & 實例講解

    使用 Protocol Buffer 的流程如下:

    Protocol Buffer使用流程

    下面,我將對流程中的每個流程進行詳細講解。

    6.1 環境配置

    至此, Protocol Buffer已經安裝完成。下面將講解如何具體使用Protocol Buffer


    6.2 構建 Protocol Buffer 消息對象模型

    • 構建步驟具體如下:

    構建步驟

    至此, 關於Protocol Buffer的語法 & 如何構建Protocol Buffer 消息對象模型講解完畢。下面將繼續講解如何具體使用Protocol Buffer


    6.3 應用到具體平臺(Android平臺)

    • 終於到了應用到具體平臺項目中的步驟了。

    此處以 Android平臺 爲例

  • 具體步驟如下:

  • 具體步驟

    至此, 關於Protocol Buffer的使用講解完畢。下面將講解Protocol Buffer的源碼分析


    7. 源碼分析

    7.1 核心分析

    在下面的源碼分析中,主要分析的是:
    1. Protocol Buffer具體是如何進行序列化 & 反序列化 ?
    2. 與 XML、Json 相比,Protocol Buffer 序列化 & 反序列化速度 爲什麼如此快 & 序列化後的數據體積這麼小?

    本文主要講解Protocol BufferAndroid 平臺上的應用,即 Java
    平臺

    7.2 具體描述

    具體的源碼分析請看文章:Android:手把手帶你分析 Protocol Buffer使用 源碼

    至此,關於 Protocol Buffer的所有內容講解完畢,含介紹、特點、具體使用、源碼分析、序列化原理等等。


    8. 總結

    • 傳輸數據量較大的需求場景下,Protocol BufferXML、Json 更小、更快、使用 & 維護更簡單!
    • 下面用 一張圖 總結在 Android平臺中使用 Protocol Buffer 的整個步驟流程:

    總結


    請幫頂或評論點贊!因爲你的鼓勵是我寫作的最大動力!

    轉自:https://blog.csdn.net/carson_ho/article/details/70037693

    發表評論
    所有評論
    還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
    相關文章