最近換了工作,新公司使用的是protobuf,第一次看到我也是一臉蒙圈,經(jīng)過一段時(shí)間的摸索,總算是有了一點(diǎn)了解,分享出來希望對大家了解protobuf有用剩辟。因?yàn)槭浅醮谓佑|,資料較少,所以有一些觀點(diǎn)都是自己的主觀意識(shí),如果有錯(cuò)誤請及時(shí)指出,及時(shí)修改,以免誤導(dǎo)了后來使用者拴驮。
protobuf是什么呢?
網(wǎng)上搜索得出如下結(jié)果:Protocol Buffers 是一種輕便高效的結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)格式辙喂,可以用于結(jié)構(gòu)化數(shù)據(jù)串行化,或者說序列化。它很適合做數(shù)據(jù)存儲(chǔ)或 RPC 數(shù)據(jù)交換格式询吴。可用于通訊協(xié)議亮元、數(shù)據(jù)存儲(chǔ)等領(lǐng)域的語言無關(guān)猛计、平臺(tái)無關(guān)、可擴(kuò)展的序列化結(jié)構(gòu)數(shù)據(jù)格式爆捞。目前提供了 C++奉瘤、Java、Python 三種語言的 API煮甥。我的理解就是類似xml json的數(shù)據(jù)結(jié)構(gòu).
那么他相對于xml,json有什么優(yōu)勢呢盗温?我覺得有以下幾點(diǎn)
1.多端通用,只需要維護(hù)一份源文件即可.
2.性能高,效率高,更快,更小,這一點(diǎn)網(wǎng)上有具體的數(shù)據(jù)可以說明,但是相對于一般的app來說其實(shí)json也夠用.
3.傳輸?shù)臅r(shí)候采用二進(jìn)制編碼(轉(zhuǎn)Data)有一定的安全性。
4.個(gè)人心得:我在使用過程中感覺就是,不管是請求還是響應(yīng)都有對應(yīng)的類來,不需要考慮轉(zhuǎn)換到事情,基本不會(huì)出現(xiàn)因?yàn)閿?shù)據(jù)閃退的情況,而且數(shù)據(jù)解析使用比較簡單,不需要考慮這一塊的,只管使用成肘。比較不爽的就是每次修改一點(diǎn)就要全部編譯,因?yàn)槲募幸灿幸恍┫嗷ヒ貌恢朗欠袷俏宜镜膯栴}.后續(xù)熟悉了來解決卖局。
那么在iOS開發(fā)中如何使用protobuf?
1.首先不管語言,都要在電腦上安裝protobuf的編譯器,需要注意的時(shí)候 最好是跟后端約定好版本,我是用的是3.0.0.手動(dòng)安裝,
鏈接如下https://link.jianshu.com/?t=https%3A%2F%2Fgithub.com%2Fgoogle%2Fprotobuf%2Freleases
2.其次根據(jù)語言 在項(xiàng)目中使用不同的protobuf支持庫,
OC項(xiàng)目中,因?yàn)槭抢享?xiàng)目所以是直接手動(dòng)拖入的。
swift項(xiàng)目中 推薦cocopods 使用protobufswift.是蘋果官方出的github鏈接如下
https://github.com/apple/swift-protobuf
3.根據(jù)不同的pb文件編譯出來自己語言所需要的文件
這一步我們是后端定義好pb文件,然后我們拿到之后根據(jù)使用的語言編譯成不同的,直接拉到項(xiàng)目中使用.如果是自己項(xiàng)目內(nèi)使用可以參考如下文章http://www.reibang.com/p/16a7c1e68945 有完整的安裝使用說明.
基本的使用就都在上面了,因?yàn)橐彩堑谝淮谓佑|,所以很多東西不是很懂,現(xiàn)在分享出來的也是自己接觸過程中的一些資料.下一篇文章會(huì)有protobuf如何配合網(wǎng)絡(luò)請求使用双霍。文章鏈接如下http://www.reibang.com/p/346b3cf4a55c