.Net 对象的序列化和反序列化
序列化简介
序列化是将对象状态转换为可保持或传输的形式的过程。序列化的补集是反序列化,后者将流转换为对象。这两个过程一起保证数据易于存储和传输。
.NET Framework 提供了两种序列化技术:
- 二进制序列化保持类型保真,这对于多次调用应用程序时保持对象状态非常有用。例如,通过将对象序列化到剪贴板,可在不同的应用程序之间共享对象。您可以将对象序列化到流、磁盘、内存和网络等。远程处理使用序列化,“按值”在计算机或应用程序域之间传递对象。
- XML 序列化只序列化公共属性和字段,并且不保持类型保真。当您希望提供或使用数据而不限制使用该数据的应用程序时,这一点非常有用。由于 XML 是开放式的标准,因此它对于通过 Web 共享数据来说是一个理想选择。SOAP 同样是开放式的标准,这使它也成为一个理想选择。
来自 http://msdn.microsoft.com/zh-cn/library/7ay27kt9(v=VS.90).aspx
二进制序列化
可以将序列化定义为一个将对象状态存储到存储介质的过程。在这个过程中,对象的公共字段和私有字段以及类(包括含有该类的程序集)的名称,将转换成字节流,而字节流接着将写入数据流。随后对该对象进行反序列化时,将创建原始对象的准确克隆。
XML序列化:
XML 序列化将对象的公共字段和属性或者方法的参数和返回值转换(序列化)为符合特定 XML 架构定义语言 (XSD) 文档的 XML 流。XML 序列化生成强类型的类,并为存储或传输目的将其公共属性和字段转换为序列格式(在此情况下为 XML)。
在这种类型的序列化里,对象状态被以XML格式保存。这使得被序列化的对象能够被不同的系统取得并修改,甚至是那些不是用.NET编写的系统。另外一个优势是被序列化的对象对于人来说是可读和可写的
注意 XML 序列化不转换方法、索引器、私有字段或只读属性(只读集合除外)。若要序列化对象的所有字段和属性(公共的和私有的),请使用 BinaryFormatter,而不要使用 XML 序列化。

浙公网安备 33010602011771号