草叶睡蜢

导航

面向对象基础知识-五、对象序列化

五、对象序列化

对象序列化主要解决对象状态(指某一时刻对象所拥有的各个字段/属性值的集合)的保存问题。

5.1 序列化(Serialization)

将对象状态保存到其它媒介(常用媒介有流Stream和字符串String)中的过程称为对象的序列化(Serialization)。
image
(Stream)代表的是一连串有顺序的二进制数据,如下图所示:
image

  • 二进制序列化
    将对象的数据格式化成二进制的数据写入到流中。
    image

格式化器(Faomatter):BinaryFormatter完成二进制序列化工作。
支持二进制序列化的类要求拥有[Serialization]标记。

  • XML序列化
    将对象数据用XML方式表示之后再以字符串的方式写入到流中。
    image

格式化器(Faomatter):SoapFormatter完成XML序列化工作。

  • 分布式系统的对象序列化
    分布于不同计算机上的应用程序相互通讯,可将对象序列化(也可以将对象序列化为XML或JSON字符串实现跨平台跨网络的远程对象传送)到网络流(NetworkStream)中,从而将一个对象通过网络从一台机器传送到另一台机器。
    image

5.2 反序列化(Deserialization)

从媒介中重新读取数据来重建对象的过程称为反序列化(Deserialization)。
image

  • 二进制反序列化
    image

5.3 .Net中的流对象

image

5.4 应用实例

  1. 批量的复制对象
    先将对象序列化到内存流,然后将流的读写指针移回到开头位置,再反序列化即可创建一个与原有对象一模一样的对象。重复这个过程可以克隆多个对象。
    image
  2. 程序退出时保存状态

posted on 2021-10-18 16:52  草叶睡蜢  阅读(118)  评论(0编辑  收藏  举报