序列化(Serialization)的使用
阿新 • • 發佈:2019-01-29
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(); }