1. 程式人生 > >序列化(Serialization)的使用

序列化(Serialization)的使用

1.為什麼要序列化

首先你應該理解序列化的目的,序列化的目的就是能夠在網路上傳輸物件,否則就無法實現面相物件的分散式計算,比如你的客戶端要呼叫伺服器上的一個方法獲得一個產品物件,比如方法為:public Character  FindCharacter(int character_id);

該方法返回一個Character物件,如果沒有序列化技術,客戶端就收不到返回的物件Character.而序列化的實現就是把物件變成一個可以在網路上傳輸的位元組流。

2.利用序列化技術,可以實現物件備份和還原。

序列化可以將記憶體中的物件(或者物件圖)序列化為資料流,並儲存到磁碟上進行持久化;還可以將資料流反序列化為物件,實現物件的還原。序列化技術在分散式系統的資料傳輸中得到充分的利用,如:XML Web Service 利用XML序列互是hi現跨平臺,.NET Remoting 則利用到二進位制序列化和SOAP序列化。

.NET Compact Framework 2.0 支援XML序列化,不支援二進位制序列化和SOAP序列化。而.NET Compact Framework 1.0 連XML序列化都不支援。不過OpenNETCF 1.X 為.NET CF 1.0實現了一個XML序列化的類,這個類在OpenNETCF.Xml.dll程式集中可以找到。

序列化和反序列化用於將一個物件儲存到檔案,和從檔案讀取。

Using System.IO;

Using System.Runtime.Serialization.Formatters.Binary;

[Serializable()]//可以序列化的類需要用這個屬性標記



Public class ToBeSerialized

{

    Public int a;

    Public string b;

    Public ToBeSerialized(int a , string b)

    { 

       this.a = a;

       this.b =b;

    }

 }



Public class Test

{

  public void Serialize()//序列化

 }



ToBeSerialized tbs = new ToBeSerialized(24,"JACK");



Stream fs = File.Create("Serialized.txt");



BinaryFormatter serializer = new BinaryFormatter();

 

serializer.Serialize(fs,tbs);



fs.Close();



public Void Deserialize()//反序列化

{

ToBeSerizlized restore;

Stream fs  = File.OpenRead("Serialized.txt");

BinaryFormatter deserializer   = new BinaryFormatter();



restore = (ToBeSerialized)(deserializer.Deserialize(fs));//反序列化

fs.Close();

}