第 7 章 Google Protobuf

7.1 編碼和解碼的基本介紹

  1. 編寫網絡應用程序時,因爲數據在網絡中傳輸的都是二進制字節碼數據,在發送數據時就需要編碼,接收數據時就需要解碼

  2. codec(編解碼器) 的組成部分有兩個:decoder(解碼器)和 encoder(編碼器)。encoder 負責把業務數據轉換成字節碼數據,decoder 負責把字節碼數據轉換成業務數據
    在這裏插入圖片描述

7.2 Netty 本身的編碼解碼的機制和問題分析

  1. Netty 自身提供了一些 codec(編解碼器)

  2. Netty 提供的編碼器
    -StringEncoder,對字符串數據進行編碼
    ObjectEncoder,對 Java 對象進行編碼

  3. Netty 提供的解碼器
    StringDecoder, 對字符串數據進行解碼
    ObjectDecoder,對 Java 對象進行解碼

  4. Netty 本身自帶的 ObjectDecoder 和 ObjectEncoder 可以用來實現 POJO 對象或各種業務對象的編碼和解碼,底層使用的仍是 Java 序列化技術 , 而Java 序列化技術本身效率就不高,存在如下問題:
    1.無法跨語言
    2.序列化後的體積太大,是二進制編碼的 5 倍多。
    3.序列化性能太低
    ===> 引出 新的解決方案 [Google 的 Protobuf]

7.3 Protobuf

在這裏插入圖片描述
在這裏插入圖片描述

7.4 Protobuf 快速入門實例

編寫程序,使用 Protobuf 完成如下功能

  1. 客戶端可以發送一個 Student PoJo 對象到服務器 (通過 Protobuf 編碼)
  2. 服務端能接收 Student PoJo 對象,並顯示信息(通過 Protobuf 解碼)
    在這裏插入圖片描述

7.5 Protobuf 快速入門實例 2

  1. 編寫程序,使用 Protobuf 完成如下功能
  2. 客戶端可以隨機發送 Student PoJo/ Worker PoJo 對象到服務器 (通過Protobuf 編碼)
  3. 服務端能接收 Student PoJo/ Worker PoJo 對象(需要判斷是哪種類型),並顯示信息(通過 Protobuf 解碼)
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章