最經常使用的C++序列化方案:protobuf

參考連接:最經常使用的兩種C++序列化方案的使用心得(protobuf和boost serialization)
[c++] Google Protobuf庫
1. 什麼是序列化?
程序員在編寫應用程序的時候每每須要將程序的某些數據存儲在內存中,而後將其寫入某個文件或是將它傳輸到網絡中的另外一臺計算機上以實現通信。這個將 程序數據轉化成能被存儲並傳輸的格式的過程被稱爲「序列化」(Serialization),而它的逆過程則可被稱爲「反序列化」 (Deserialization)。
簡單來講,序列化就是將對象實例的狀態轉換爲可保持或傳輸的格式的過程。與序列化相對的是反序列化,它根據流重構對象。這兩個過程結合起來,能夠輕 鬆地存儲和傳輸數據。例如,能夠序列化一個對象,而後使用 HTTP 經過 Internet 在客戶端和服務器之間傳輸該對象。
總結:序列化:將對象變成字節流的形式傳出去。
反序列化:從字節流恢復成原來的對象。
2. 爲何要序列化?好處在哪裏?
簡單來講,對象序列化一般用於兩個目的:
(1) 將對象存儲於硬盤上 ,便於之後反序列化使用
(2)在網絡上傳送對象的字節序列
對象序列化的好處在哪裏?網絡傳輸方面的便捷性、靈活性就不說了,這裏舉個咱們常常可能發生的需求:你 有一個數據結構,裏面存儲的數據是通過不少其它數據經過很是複雜的算法生成的,因爲數據量很大,算法又複雜,所以生成該數據結構所用數據的時間可能要好久 (也許幾個小時,甚至幾天),生成該數據結構後又要用做其它的計算,那麼你在調試階段,每次運行個程序,就光生成數據結構就要花上這麼長的時間,無疑代價 是很是大的。若是你肯定生成數據結構的算法不會變或不常變,那麼就能夠經過序列化技術生成數據結構數據存儲到磁盤上,下次從新運行程序時只須要從磁盤上讀 取該對象數據便可,所花費時間也就讀一個文件的時間,可想而知是多麼的快,節省了咱們的開發時間。
3. Google Protocol Buffers (protobuf)
Google Protocol Buffers (GPB)是Google內部使用的數據編碼方式,旨在用來代替XML進行數據交換。可用於數據序列化與反序列化。主要特性有:
>優勢
1. 性能好,效率高
2. 代碼生成機制,數據解析類自動生成
3. 支持向後兼容和向前兼容
4. 支持多種編程語言(java,c++,python)
>缺點
1. 應用不夠廣
2. 二進制格式致使可讀性差(二進制格式)
3. 缺少自描述html

相關文章
相關標籤/搜索