用.NET框架實現序列化

iDotNetSpace發表於2008-09-08
序列化是將一個物件儲存到儲存介質上或者將物件進行轉換使之能夠在網路上傳送的行為。在一個物件被序列化之後,你會想要將它反序列化,也就是將資料重新轉換為可用的物件的行為。這種型別的功能被用在一個物件必須被從一個上下文封送到另一個上下文的時候,例如當物件跨越App域的時候。另外一個例子是Web服務——物件在伺服器上被序列化,通過網路被(封送或)傳送到的客戶端,然後被反序列化成有用的物件。

  從二進位制到XML,.NET框架為開發人員提供了很多序列化選項,甚至允許開發人員建立自己的序列化例程。在本文中,我將著重討論XML的序列化,並告訴你如何利用這一內建的功能。

  XML序列化

  .NET框架提供的一種形式的序列化是XML序列化。在這種型別的序列化裡,物件狀態被以XML格式儲存。這使得被序列化的物件能夠被不同的系統取得並修改,甚至是那些不是用.NET編寫的系統。另外一個優勢是被序列化的物件對於人來說是可讀和可寫的——因此更新物件的方式莫過於開啟寫字板更改其值。

  XML序列化常常被來遠端控制專案和Web服務專案裡,雖然你可能會在別的地方發現它,比如DataSet封送。在與Xpath查詢和Predicate方法一起使用的時候,XML序列化能夠被用來實現物件導向的資料庫——我會在今後的文章裡談這方面的內容。

  使用XML序列化

  在.NET框架裡利用內建的XML序列化方法相對較為容易。你只需要熟悉一些類和屬性就可以開始使用簡單的XML序列化了:

  System.Xml.Serialization名稱空間:含有使用XML序列化所需要的類和功能。這個名稱空間應該被放在使用XML序列化的類的頂部的一個“using”命令裡。

  XmlSerializer類:提供將物件序列化和反序列化的功能。

  XmlIgnore屬性:告訴XmlSerializer類跳過你不希望序列化的成員。

  這個列表只不過讓你對序列化有一個初步的瞭解。還有更多的物件可以供你在使用XML序列化的時候使用。

  列表A是將Customer物件序列化的一個簡單例子。這個Customer物件在下載檔案的示例應用程式裡被定義。

  列表A   Customer customer = newCustomer();
  customer.FirstName = "Zach";
  customer.LastName = "Smith";
  XmlSerializer serializer = newXmlSerializer(typeof(Customer));
  StringWriter writer = newStringWriter();
  serializer.Serialize(writer, customer);
  Console.WriteLine(writer.ToString());
  正如你看到的,XML序列化是一個很簡單的過程。我們只需要建立一個需要被序列化的物件,建立用於這種型別物件的XmlSerializer,並呼叫XmlSerializer.Serialize。被序列化的物件然後被寫到提供的Stream裡——在本文中是一個叫做“writer”的StringWriter。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-442348/,如需轉載,請註明出處,否則將追究法律責任。

相關文章