https://blog.xuite.net/grimmslaw/78/52048294-%E5%BA%8F%E5%88%97%E5%8C%96%EF%BC%88Serialization%EF%BC%89
序列化(Serialization)是.NET平臺最酷的特性之一。
1、為什麼要序列化:
首先你應該明白序列化的目的就不難理解他了。序列化的目的就是能在網路上傳輸物件,否則就無法實現面向物件的分散式計算。比如你的用戶端要調用伺服器上的一個方法獲得一個產品物件,比如方法為:public Product findProduct(int product_id);
注意該方法返回一個Product物件,如果沒有序列化技術,用戶端就收不到返回的物件Product。而序列化的實現就是把物件變成一個可在網路上傳輸的位元組流。
2、利用序列化技術,可以實現物件的備份和還原。序列化可以將記憶體中的物件(或物件圖)序列化為資料流程,並保存到磁片上進行持久化;還可以將資料流程反序列化為物件,實現物件的還原。序列化技術在分散式系統的資料傳輸中得到充分的利用,如:XML Web Service 利用XML序列化實現跨平臺,.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 程式集中可以找到。
序列化和反序列化用於將一個物件保存到檔,和從檔讀取。
View Source------------------------------------------------------------------------------
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(22,"SOM"); Stream fs = File.Create("Serialized.txt"); BinaryFormatter serializer = new BinaryFormatter(); serializer.Serialize(fs, tbs); fs.Close(); } public void DeSerialize()//反序列化 { ToBeSerialized restore; Stream fs = File.OpenRead("Serialized.txt"); BinaryFormatter deserializer = new BinaryFormatter(); restore = (ToBeSerialized)(deserializer.Deserialize(fs));//反序列化得到的物件 fs.Close(); } }
沒有留言:
張貼留言