什么是序列化?

来源:互联网 发布:js获取name 编辑:程序博客网 时间:2024/09/21 09:27

    形象的说,序列化就是(1)将一个对象保存到到存储介质上或者(2)将对象进行转换使其能够在网络上传输的行为。能对一个类进行序列化的条件是:该类的任何基类都可以序列化;该类应用了Serializable特性。

    序列化常用的两个应用如下:

1.保存和加载程序的配置

    我们在程序中可以创建一个类,它包含了应用程序的配置信息。当应用程序加载时,配置对象被反序列化到内存中的配置类;当用户在程序运行的过程中对配置信息进行修改的时候,可以把配置信息(在内存中)序列化到硬盘中,以后运行程序的时候可以方便的从硬盘中加载这些配置信息。这样就方便的实现了配置文件的读写。

2.分布式计算

    序列化的最大优势在于分布式计算。两台机器拥有相同的程序集,则可以利用序列化技术进行通信。A机器通过序列化技术向B机器发送对象的快照,B机器能快速、正确的重建出改对象来。

    在.NET Framework中,有三种序列化机制:二进制、XML和SOAP(Simple Object Access Protocol 简单对象访问协议)。他们各自的优缺点如下:

    (1)二进制序列化的最大优点是:类型数据可以准确的表示出来。因为二进制序列化可以序列化公有和私有成员,所以在反序列化的时候可以忠诚的重建出改对象的状态。

    (2)XML只序列化对象的公有属性和字段。在XML序列化时,私有字段和其他实例对象就丢失了。

    (3)XML和SOAP是开发标准,具有很好的移植性。

 

扩展:C#中进行序列化和反序列化的代码很简单,三者对应的命名空间及对应的格式化类分别如下:

二进制System.Runtime.Serialization.Formatters.Binary-BinaryFormatter

XML:System.Xml.Serialization-XmlSerialization

SOAP:System.Runtime.Serialization.Formatters.SOAP-SoapFormatter

                                                                                                                                                                                     参考资料:《.NET程序员面试宝典》

原创粉丝点击