五、对象序列化
对象序列化主要解决对象状态(指某一时刻对象所拥有的各个字段/属性值的集合)的保存问题。
5.1 序列化(Serialization)
将对象状态保存到其它媒介(常用媒介有流Stream
和字符串String
)中的过程称为对象的序列化(Serialization)。
流(Stream)代表的是一连串有顺序的二进制数据,如下图所示:
- 二进制序列化
将对象的数据格式化成二进制的数据写入到流中。
格式化器(Faomatter):BinaryFormatter完成二进制序列化工作。
支持二进制序列化的类要求拥有[Serialization]标记。
- XML序列化
将对象数据用XML方式表示之后再以字符串的方式写入到流中。
格式化器(Faomatter):SoapFormatter完成XML序列化工作。
- 分布式系统的对象序列化
分布于不同计算机上的应用程序相互通讯,可将对象序列化(也可以将对象序列化为XML或JSON字符串实现跨平台跨网络的远程对象传送)到网络流(NetworkStream)中,从而将一个对象通过网络从一台机器传送到另一台机器。
5.2 反序列化(Deserialization)
从媒介中重新读取数据来重建对象的过程称为反序列化(Deserialization)。
- 二进制反序列化
5.3 .Net中的流对象
5.4 应用实例
- 批量的复制对象
先将对象序列化到内存流,然后将流的读写指针移回到开头位置,再反序列化即可创建一个与原有对象一模一样的对象。重复这个过程可以克隆多个对象。
- 程序退出时保存状态