序列化[Serializable]

來源:互聯網
上載者:User

      昨晚研究了一哈序列化問題,以前還以為是什麼高深的技術,故此經常是避而不用,避而不談,現在看來是我錯了哦!^_^ 其實在.NET中使用序列化是很簡單的事情了,希望我寫這點東西,對想研究這個的同胞們一個小小的提示吧!我覺得要掌握序列化問題,至少要明白以下幾點:

 

1、為什麼要用序列化?

2、序列化有那些屬性?

3、序列化的過程是什麼樣的?

4、序列化有那些格式?

5、怎樣保證序列化的安全問題?

 

1、為什麼要用序列化?

有的時候需要使對象 能夠持續化,比如在兩個不同的應用程式中,使用相同的對象,這樣我們就可以把對象序列化到檔案系統中,通過解序列化的方式來恢複原來對象的副本或原形;還 一個用處就是用在.net Remoting中/遠程模型,大家可能知道,他有兩種模型:一,通過複製的方式來得到遠程對象。二,按引用的方式來得到遠程對象。其中使用方式一時就要 用到序列化這種技術。

 

2、序列化有那些屬性?

有Serializable,Noserialized,有時可以根據需要實現ISerializable介面

比如:序列化一個類:

[Serializable]

public class jianghua

{

[Noserialized] int myTest;//不需要被序列化

//.....

}

 

3、序列化的過程是什麼樣的?

先序列化成一個對象ID,通過對象管理器自動管理,在這個過程中是使用ObjectIDGenerator ,ObjectManager 來操作的。

 

4、序列化有那些格式?

在.NET下提供了三種格式序列化:

BinaryFormatter

SoapFormatter

XmlSerializer

 

5、怎樣保證序列化的安全問題?

如果有的對象中包含一些敏感的資料,在序列化時就要小心了,我們可以藉助

System.Secuiry這個空間中的方法來對對象的資料進行加密

 

最後列舉一個例子:

假設有一個類MyClass

 

[Serializable]

public class MyClass

{

public string name="";

private int age=22;

public String address=null;

}

 

例:使用SoapFormatter來序列化

 

  MyClass mysoap=new MyClass();

   mysoap.name="jianghua";

   mysoap.address="Xi Hua Universtiy...";

  IFormatter myformater=new SoapFormatter();

  Stream stream=new FileStream("c://soap.xml",FileMode.Create,FileAccess.Write,FileShare.None);

  myformater.Serializable(stream,mysoap);

  stream.close();

 

說明:對於還原序列化操作其思路基本一樣,在這裡附帶說明以下,什麼叫深序列化,什麼叫淺序列化

所謂深序列化就是序列化對象中所有的公有,私人成員;淺序列化就是只序列化對象的公有成員了。比如:SoapFormatter ,BinaryFormatter 就是深序列化,XmlSerializer是淺序列化;在實際開發時要注意其名稱空間的使用,一般都包括以下一些名稱空間:

System.Runtime.Serialization.Formatters.Binary;

System.Runtime.Serialization.Formatters.Soap;

System.Runtime.Serialization; 

System.IO;

System.Xml.Serialization;

 

引自 <http://blog.csdn.net/jigee/archive/2005/09/19/484445.aspx>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.