一、情景重現
昨天在做數據庫同步測試的時候,用到了一點序列化和反序列化的技術。我把某個表的字段抽象成一 個實體類DiagramInfo,然後把客戶端新增的記錄用一個泛型集合存儲,再把這個泛型集合系列化,通過 TCP發送到服務端,服務端對其進行反序列化,再把這些數據寫入數據庫。這大概就是這個操作的流程。
序列化我用的是System.Runtime.Serialization.Iformatter類,把泛型集合序列化成二進制流。序列 化的部分代碼如下:
private void Seriable(List<DiagramInfo> diagrams)
{
MemoryStream stream = new MemoryStream();
IFormatter formater = new BinaryFormatter();
formater.Serialize(stream, diagrams);
stream.Flush();
serializedData = stream.ToArray();
stream.Close();
}
然後使用TCP協議發送,這部分內容省略。
服務端部分接收數據,並保存成MemoryStream,然後對其反序列化,部分代碼如下:
do
{
bytesRead = stream.Read(responseBuffer, 0, bufferSize);
memstream.Write(responseBuffer, 0, bytesRead);
}
while (bytesRead > 0);
IFormatter formater = new BinaryFormatter();
diagrams = (List<DiagramInfo>)formater.Deserialize(memstream);
stream.Close();
memstream.Close();
client.Close();