1. 程式人生 > >【轉】【UNITY3D 遊戲開發之五】Google-protobuf與FlatBuffers資料的序列化和反序列化

【轉】【UNITY3D 遊戲開發之五】Google-protobuf與FlatBuffers資料的序列化和反序列化

★protobuf有啥缺陷?
前幾天剛剛在“光環效應 ”的帖子裡強調了“要同時評估優點和缺點”。所以俺最後再來批判一下這玩意兒的缺點。
◇應用 不夠廣
由於protobuf剛公佈沒多久,相比XML而言,protobuf還屬於初出茅廬。因此,在知名度、應用廣度等方面都遠不如XML。由於這個原因,假如你設計的系統需要提供若干對外的介面給第三方系統呼叫,俺奉勸你暫時不要考慮protobuf格式。
◇二進位制格式導致可讀性差
為了提高效能,protobuf採用了二進位制格式進行編碼。這直接導致了可讀性差的問題(嚴格地說,是沒有可讀性)。雖然protobuf提供了TextFormat這個工具類(文件在“這裡 ”),但終究無法徹底解決此問題。
可讀性差的危害,俺再來舉個例子。比如通訊雙方如果出現問題,極易導致扯皮(都不承認自己有問題,都說是對方的錯)。俺對付扯皮的一個簡單方法 就是直接抓包並dump成log,能比較容易地看出錯誤在哪一方。但是protobuf的二進位制格式,導致你抓包並直接dump出來的log難以看懂。
◇缺乏自描述
一般來說,XML是自描述的,而protobuf格式則不是。給你一段二進位制格式的協議內容,如果不配合相應的proto檔案,那簡直就像天書一般。
由於“缺乏自描述”,再加上“二進位制格式導致可讀性差”。所以在配置檔案方面,protobuf是肯定無法取代XML的地位滴。