Welcome 微信登录

首页 / 网页编程 / ASP.NET / 关于系列化和反序列化的一个问题

关于系列化和反序列化的一个问题2011-07-26 博客园 Acen一、情景重现

昨天在做数据库同步测试的时候,用到了一点序列化和反序列化的技术。我把某个表的字段抽象成一 个实体类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();