用.NET框架實現序列化
序列化是將一個物件儲存到儲存介質上或者將物件進行轉換使之能夠在網路上傳送的行為。在一個物件被序列化之後,你會想要將它反序列化,也就是將資料重新轉換為可用的物件的行為。這種型別的功能被用在一個物件必須被從一個上下文封送到另一個上下文的時候,例如當物件跨越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。
從二進位制到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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MessagePack 序列化框架在netty中的簡單實現。框架Netty
- asp.net JavaScriptSerializer實現序列化和反序列化ASP.NETJavaScript
- .Net 虛擬框架的實現原理框架
- 微軟開源 .NET 框架 實現跨平臺微軟框架
- 用C++優雅的實現物件到檔案的序列化/反序列化C++物件
- 分散式RPC框架Dubbo實現服務治理:整合Kryo實現高速序列化,整合Hystrix實現熔斷器分散式RPC框架
- 什麼是Java序列化?如何實現序列化?Java
- 基於Netty自己動手實現Web框架NettyWeb框架
- Linux 2.4中netfilter框架實現(轉)LinuxFilter框架
- 用原生http 實現簡單 Express 框架HTTPExpress框架
- 什麼是Java序列化,如何實現java序列化Java
- c#.net實體類序列化方法 為什麼要序列化C#
- 用java實現一個簡單的序列化的例子(轉)Java
- 用java實現一個簡單的序列化的例子 (轉)Java
- NetCore框架WTM的分表分庫實現NetCore框架
- asp.net frameset 框架頁面伸縮功能實現ASP.NET框架
- 用 .SqlSugar ORM 來實現報表功能 .NET CORE /.NETSqlSugarORM
- 用laravel框架實現敏感詞彙過濾功能Laravel框架
- 用一個檔案,實現迷你 Web 框架Web框架
- 集合框架-用LinkedList實現棧結構框架
- JS原生實現表單序列化JS
- Java中使用FlatBuffer實現序列化Java
- .net序列化與反序列化總結
- C# 實現複雜物件的序列化與反序列化C#物件
- jackson序列化與反序列化的應用實踐
- 從零開始實現簡單 RPC 框架 5:網路通訊之序列化RPC框架
- koa框架會用也會寫—(koa的實現)框架
- 用什麼類實現框架的視窗分割?框架
- Kubernetes 實戰——發現應用(Service)
- 基於socket用java實現telnet功能Java
- .NET物件的XML序列化和反序列化物件XML
- 原生JS實現表單序列化serialize()JS
- 原生實現jquery param序列化引數jQuery
- .net精簡框架集多個類同時序列化(XML方式)技術框架XML
- 序列化和反序列化的底層實現原理是什麼?
- SimpleRpc-序列化與反序列化的設計與實現RPC
- 在C#中實現Json的序列化與反序列化C#JSON
- 一行程式碼實現iOS序列化與反序列化行程iOS