Protocol Buffers - PB協(xié)議概述

目錄

一. 什么是PB

二. 定義(編寫實體描述文件)

三. 編譯(從描述文件到java類)

四. 項目中使用

五. 擴展

一. 什么是PB

? ProtocolBuffers-Google'sdatainterchangeformat

? 一種語言無關、平臺無關、擴展性好的用于通信協(xié)議、 數(shù)據(jù)存儲的結構化數(shù)據(jù)串行化方法。

? Java、C++或Python開發(fā)者

? 谷歌的數(shù)據(jù)交換格式

? 類似 JSON, XML

? GITHUB:https://github.com/google/protobuf/

為什么不用XML

? ProtocolBuffer擁有多項比XML更高級的串行化結構數(shù)

據(jù)的特性,ProtocolBuffer:

? ·更簡單

? ·小3-10倍

? ·快20-100倍

? ·更少的歧義

? ·可以方便的生成數(shù)據(jù)存取類

Protocol Buffers

? ProtocolBuffer是用于結構化數(shù)據(jù)串行化 的靈活、高效、自動的方法,有如XML, 不過它更小、更快、也更簡單。你可以定 義自己的數(shù)據(jù)結構,然后使用代碼生成器 生成的代碼來讀寫這個數(shù)據(jù)結構。你甚至 可以在無需重新部署程序的情況下更新數(shù) 據(jù)結構。

二. 定義(編寫實體描述文件) 建立一個msg.proto文件

option java_package = "com.protobuftest.protobuf";
option java_outer_classname = "PersonProbuf";
  message Person {
  required string name = 1;
  required int32 id = 2;
  optional string email = 3;
}
enum PhoneType {
    MOBILE = 0; HOME = 1; WORK = 2;
}

三. 編譯(從描述文件到java類)

  1. 下載安裝編譯器。

  2. 找到.proto文件位置

  3. 運行編譯器,指定源目錄和目標目錄,定位你的 .proto 文件到源目錄,然后執(zhí)行:

protoc -I=$SRC_DIR --python_out= $DST_DIR addressbook.protoPython    –python_out

四. 在項目(工程)中使用

  1. 加入類庫jar包

  2. 加入剛剛生成的 實體類文件

項目中使用 實體類的轉換

(1) 實體轉字節(jié)

String imei = getImei(); ObdRightBean.ObdRightRequest obdRightRequest;

.

obdRightRequest = 
      ObdRightBean.ObdRightRequest.newBuilder().setImei(imei).build();

//轉換成字節(jié) obdRightRequest.toByteArray()

(2) 字節(jié)轉實體

  ObdRightBean.ObdRightResponse obdProductResponse = null;

  obdProductResponse =   
        ObdRightBean.ObdRightResponse.parseFrom(bytes2);

  int code = obdProductResponse.getCode();

討論

? HTTP+PB VS HTTPS+JSON ?

? PB協(xié)議中間序列號時會進行壓縮,網(wǎng)絡

傳輸更少 ?

? PB是加密的嗎? 還需要對字節(jié)DESC嗎? ? 開發(fā)效率? JSON更快?學習曲線?

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 由于工程項目中擬采用一種簡便高效的數(shù)據(jù)交換格式,百度了一下發(fā)現(xiàn)除了采用 xml、JSON 還有 ProtoBuf(...
    黃海佳閱讀 49,168評論 1 23
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評論 19 139
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內(nèi)部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,696評論 18 399
  • 什么是protocal buffer? protocal buffer 以下簡稱protobuf是google 的...
    碎念楓子閱讀 3,913評論 8 10
  • 蛋兒媽閱讀 168評論 0 0

友情鏈接更多精彩內(nèi)容