程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 關於系列化和反序列化的一個問題

關於系列化和反序列化的一個問題

編輯:關於ASP.NET

一、情景重現

昨天在做數據庫同步測試的時候,用到了一點序列化和反序列化的技術。我把某個表的字段抽象成一 個實體類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();

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved