Protocol Buffer 简介
生活随笔
收集整理的這篇文章主要介紹了
Protocol Buffer 简介
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、Protocol Buffer 與 XML、JSON 的區別
- Protocol Buffer 和 XML、JSON一樣都是結構數據序列化的工具,但它們的數據格式有比較大的區別:
- 首先,Protocol Buffer 序列化之后得到的數據不是可讀的字符串,而是二進制流
- 其次,XML 和 JSON 格式的數據信息都包含在了序列化之后的數據中,不需要任何其它信息就能還原序列化之后的數據;但使用 Protocol Buffer 需要事先定義數據的格式(.proto 協議文件),還原一個序列化之后的數據需要使用到這個定義好的數據格式
- 最后,在傳輸數據量較大的需求場景下,Protocol Buffer 比 XML、JSON 更小(3到10倍)、更快(20到100倍)、使用 & 維護更簡單;而且 Protocol Buffer 可以跨平臺、跨語音使用
- Protobuf 安裝:
- 安裝 protobuf: apt-get install libprotobuf-dev
- 安裝 protobuf 的 python 模塊:pip3 install protobuf==3.13.0
- 源碼方式安裝:可參考 Protobuf 安裝及使用 && https://github.com/protocolbuffers/protobuf/blob/main/src/README.md
- Protobuf 版本查看:
- protoc --version
- import google.protobuf as gp, gp.__version__
二、Protocol Buffer 的作用
- 通過將結構化的數據(擁有多種屬性)進行序列化,從而實現(內存與硬盤之間)數據存儲和交換的功能
- 序列化: 按照 .proto 協議文件將數據結構或對象轉換成二進制流的過程
- 反序列化:將在序列化過程中所生成的二進制流轉換成數據結構或對象的過程
三、構建 Protocol Buffer 消息對象模型
1、通過 Protocol Buffer 語法描述需要存儲的數據結構
- Protocol Buffer 定義數據格式的文件一般保存在 .proto文件中,每一個 message代表了一類結構化的數據,message 里面定義了每一個屬性的類型和名字。
- 一個消息對象可以將其他消息對象類型用作字段類型,情況如下:
2、通過 Protocol Buffer 編譯器編譯 .proto 文件
- 作用:將 .proto 文件 轉換成對應平臺(python、C++、Java)的代碼文件
- 編譯指令如下所示:
四、參考資料
1、這是一份很有誠意的 Protocol Buffer 語法詳解
2、手把手教你如何安裝 Protocol Buffer
總結
以上是生活随笔為你收集整理的Protocol Buffer 简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 晚上的笔记:p2p vod
- 下一篇: Protocol Buffer 基础(P