background image

Oct 08 2016

[ProtoBuf] ProtoBuf Serialize 與 DeSerialize!

這一篇應該是我ProtoBuf的系列文章第二篇,上一篇只簡單說了一些安裝方式與一些定義檔 的設定根本就不知道該如何使用這一個好用的序列化工具。依樣會是使用protobuf-net 這一個套件來做一個簡單的紀錄。

ProtoBuf 序列化

在使用 ProtoBuf 的第一步就必須了解 Stream 的資料格式,因為在(反)序列化 的過程中,預設都是使用 Stream 作為媒介。序列化的部份是使用 Serializer.Serialize 這個方法來處理。

Simple Code 1 - 序列化

主要原因是若Stream關閉後就無法做任何的操作,所以交由外部來控制Stream的資源初始與回收。 可以在序列化成為 Array 或 String 的格式。

Simple Code 2 - Serialize to byte array and string

在Format 成 String 我是採用ASCII的編碼方式,讓他出來會像16進位的感覺。

也可以使用 Convert.ToBase64String(stream.ToArray()); 產生文字資料

ProtoBuf 反序列化

在反序列化的部分也是預設採用 Stream 的資料格式來處理,

Simple Code 3 - 反序列化

Simple Code 4 - 針對 Byte array and string deserialize

注: 若string是使用base64字元輸出,那麼在deserialize時就必須使用 Convert.FromBase64String(data) 處理

文章標籤