zoukankan      html  css  js  c++  java
  • 序列化和初始化

    序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。反之,反序列化根据流重新构造对象。此外还可以将对象序列化后保存到本地,再次运行的时候可以从本地文件中“恢复”对象到序列化之前的状态。

     

    序列化是指一个对象的实例可以被保存,保存成一个二进制串,当然,一旦被保存成二进制串,那么也可以保存成文本串了。
    比如,一个计数器,数值为2,我们可以用字符串“2”表示。
    如果有个对象,叫做connter,当前值为2,那么可以序列化成“2”,反向的,也可以从“2”得到值为2的计数器实例。
    这样,关机时序列化它,开机时反序列化它,每次开机都是延续的。不会都是从头开始。

    序列化概念的提出和实现,可以使我们的应用程序的设置信息保存和读取更加方便。

    序列化有很多好处,比如,在一台机器上产生一个实例,初始化完毕,然后可以序列化,通过网络传送到另一台机器,然后反序列化,得到对象实例,之后再执行某些业务逻辑,得到结果,再序列化,返回第一台机器,第一台机器得到对象实例,得到结果。
    这个例子是目前比较先进的“智能代理”的原理。

    当前比较热火的web services使用soap协议,soap协议也是以对象的可序列化为基础的。

     

    using System.Runtime.Serialization.Formatters.Binary;
    public class SerializationUnit
    {        
        /// <summary>
        /// 把对象序列化为字节数组
        /// </summary>
        public static byte[] SerializeObject(object obj)
        {
            if (obj == null)
                return null;
            MemoryStream ms = new MemoryStream();
            BinaryFormatter formatter = new BinaryFormatter();
            formatter.Serialize(ms, obj);
            ms.Position = 0;
            byte[] bytes = new byte[ms.Length];
            ms.Read(bytes, 0, bytes.Length);
            ms.Close();
            return bytes;
        }

        /// <summary>
        /// 把字节数组反序列化成对象
        /// </summary>
        public static object DeserializeObject(byte[] bytes)
        {
            object obj = null;
            if (bytes == null)
                return obj;
            MemoryStream ms = new MemoryStream(bytes);
            ms.Position = 0;
            BinaryFormatter formatter = new BinaryFormatter();
            obj = formatter.Deserialize(ms);
            ms.Close();
            return obj;
        }
    }

  • 相关阅读:
    ES6 promise的用法
    elementUI el-dialog 解决embed标签无法实时更新预览PDF文件
    elementUI upload 上传 传参
    elementUI form表单验证
    Ajax 原理过程 同步与异步区别 优缺点
    《深入理解mybatis原理(十二)》 mybatis深入理解之#与$区别
    截取字符串,含有汉字和字母,不能截半个汉字
    输出一个纯英文字符串中出现次数最左的单词和次数,如果有几个次数最多的单词,全部输出
    极简主义生活方式
    MySQL中创建表指定存储引擎
  • 原文地址:https://www.cnblogs.com/uoar/p/7226195.html
Copyright © 2011-2022 走看看