Protocol Buffer安裝及使用

一、什么是Protocol Buffer?

Protocol Buffer是一種輕便高效的結構化數據存儲格式,可以用于結構化數據序列化,語言中立,平臺中立,可用于通訊協議,數據存儲等方面,目前有兩個版本,分別是proto2和proto3,鑒于proto3還是beta版本,所以使用的較多的還是proto2

優點:

1.序列化速度快,官方說比xml和json快20~100倍

2.體積小,有測試表明數據可以縮小3倍左右

3.多平臺僅需維護一套對象協議文件(.proto)

4.使用在http里面,傳輸內容抓包只能看到的是字節

5.因為體積小,傳輸起來帶寬和速度會有優化

缺點:

1.不適合描述符號文本
2.不如XML易閱讀和編輯
3.需要工具預先生成序列化類

二、安裝

打開終端
安裝Homebrew(Mac OSX上的軟件包管理工具,能在Mac中方便的安裝軟件或者卸載軟件)

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

利用Homebrew工具安裝Protobuf編譯器

brew install protobuf-swift

查看安裝是否安裝成功

protoc --version

出現了對應的版本號就說明安裝成功了

三、使用

3.1下載ProtocolBuffers-Swift框架到你的工程中,我使用了cocoaPods

image.png

3.2創建proto文件
commod+N 創建一個空的文件 我命名為IMMessage.proto
3.3填寫需要序列化的消息類型

image.png

3.4 進入proto當前文件夾 編譯“.proto”文件 可以看到同目錄下多了一個Immessage.proto.swift文件

protoc  IMMessage.proto --swift_out="./"

3.5 結構化數據序列化

        // 序列化  對象轉二進制
        let p = Person.Builder()
        p.id = 769215561
        p.name = "lky"
        p.email = "769215561@qq.com"
        
        guard let per = try? p.build() else { return }
        let sendData = per.data()
    
         // 反序列化  二進制轉對象
        
        guard  let p2 = try? Person.parseFrom(data: sendData) else{ return }
        
        print("\(p2.id)")
        print("\(p2.name)")
        print("\(p2.email)")
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容