zoukankan      html  css  js  c++  java
  • 深入剖析序列化和反序列化

    序列化”可被定义为将对象的状态存储到存储媒介中的过程。在此过程中,对象的公共字段和私有字段以及类的名称(包括包含该类的程序集)都被转换为字节流,然后写入数据流。在以后“反序列化”该对象时,创建原始对象的精确复本。
    一、为什么要选择序列化
        一个原因是将对象的状态保持在存储媒体中,以便可以在以后重新创建精确的副本;
        另一个原因是通过值将对象从一个应用程序域发送到另一个应用程序域中。
        例如,序列化可用于在 ASP.NET 中保存会话状态并将对象复制到 Windows 窗体的剪贴板中。远程处理还可以使用序列化通过值将对象从一个应用程序域传递到另一个应用程序域中。
    二、如何实现对象的序列化及反序列化
        要实现对象的序列化,首先要保证该对象可以序列化。而且,序列化只是将对象的属性进行有效的保存,对于对象的一些方法则无法实现序列化的。
    实现一个类可序列化的最简便的方法就是增加Serializable属性标记类。如:
    Code
    要将该类的实例序列化为到文件中?.NET FrameWork提供了两种方法:
        1、XML序列化
            使用 XmLSerializer 类,可将下列项序列化。
    • 公共类的公共读/写属性和字段
    • 实现 ICollection 或 IEnumerable 的类。(注意只有集合会被序列化,而公共属性却不会。)
    • XmlElement 对象。
    • XmlNode 对象。
    • DataSet 对象。
             要实现上述类的实例的序列化,可参照如下例子:
    Code
    2、二进制序列化
            与XML序列化不同的是,二进制序列化可以将类的实例中所有字段(包括私有和公有)都进行序列化操作。这就更方便、更准确的还原了对象的副本。
            要实现上述类的实例的序列化,可参照如下例子:
    Code
  • 相关阅读:
    valgrind内存检测
    uosdeepin商店下载的软件deb包位置
    jmeter中获取到token,又因为现在都是JWT的所以需要添加Bearer 和获取到的token进行拼接
    jmeter json提取器
    jmeter命令行启动
    linux 中把文件内容变成空,不删除文件
    94--分布式事务五-Seata AT模式-Spring Cloud微服务案例(添加AT事务)
    94--Docker(概念/镜像操作/数据管理/网络/互联/构建镜像)
    93--分布式事务四-Seata AT模式-Spring Cloud微服务案例(无事务)
    93--分布式事务二-Seata AT 模式
  • 原文地址:https://www.cnblogs.com/engine1984/p/1268755.html
Copyright © 2011-2022 走看看