A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 醉红尘_碎星辰 初级黑马   /  2013-11-5 17:43  /  2548 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

中什么是序列化和反序列化

评分

参与人数 1技术分 +1 收起 理由
陈行 + 1

查看全部评分

6 个回复

倒序浏览
序列化就是将数据转化为二进制用于数据的传递
反序列化就是将接受到的二进制形式的数据转换成原来的数据类型
回复 使用道具 举报
序列化就是将数据转化为二进制用于数据的传递
反序列化就是将接受到的二进制形式的数据转换成原来的数据类型

如果一个类需要序列化,在定义类的上面加【serilizeable 】
之后在main中,对类实例化出来的对象  通过binaryfomate 将其序列化成2进制
反序列化,通过Inbinaryformate 将2进制反序列化成对象

本人在实际项目中 没有应用过 不知道怎么用

评分

参与人数 1技术分 +1 收起 理由
陈行 + 1

查看全部评分

回复 使用道具 举报
序列化就是将对象转化为二进制,反序列化就是将二进制形式的数据转换成原来的数据类型,序列化和反序列用于传输数据,例如网络数据的传输。
下面是一个序列化和反序列化的例子:(模拟传输数据)
//序列化:将对象转换为二进制
            //服务器端
            //假设一个Person类,有Name,Age,Gender属性
            Person per = new Person();
            per.Name = "张三";
            per.Age = 10;
            per.Gender = '男';
            using (FileStream fsWrite = new FileStream(@"C:\Users\Administrator\Desktop\序列化.txt", FileMode.OpenOrCreate, FileAccess.Write))
            {
            //    //创建序列化对象
                BinaryFormatter bf = new BinaryFormatter();
                bf.Serialize(fsWrite, per);
            }
            Console.WriteLine("序列化成功");
            Console.ReadKey();


            //接收端
            ////反序列化:将二进制转换为对象
            Person per;
            using (FileStream fsRead = new FileStream(@"C:\Users\Administrator\Desktop\序列化.txt", FileMode.Open, FileAccess.Read))
            {
                BinaryFormatter bf = new BinaryFormatter();
                per = (Person)bf.Deserialize(fsRead);
            }
            Console.WriteLine(per.Name);
            Console.WriteLine(per.Gender);
            Console.WriteLine(per.Age);
            Console.ReadKey();

评分

参与人数 1技术分 +1 收起 理由
陈行 + 1

查看全部评分

回复 使用道具 举报
      序列化就是把一个对象保存到一个文件或数据库字段中或内存中去,反序列化就是在适当的时候把这个文件再转化成原来的对象使用。
 当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为对象。
  把对象转换为字节序列的过程称为对象的序列化。
  把字节序列恢复为对象的过程称为对象的反序列化。
对象的序列化主要有两种用途:
  1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;
      2) 在网络上传送对象的字节序列。
序列化和反序列化的主要作用有:
  1、在进程下次启动时读取上次保存的对象的信息
  2、在不同的AppDomain或进程之间传递数据
  3、在分布式应用系统中传递数据
         .............

常见的序列化的方法:

  1、BinaryFormatter

  2、SoapFormatter

  3、XML序列化
优缺点比较::
      二进制序列化的优点:
  1. 所有的类成员(包括只读的)都可以被序列化;
  2. 性能非常好。
    XML序列化的优点:
  1. 互操作性好;
  2. 不需要严格的二进制依赖;
  3. 可读性强
    SoapFormatter微软淘汰了,,不能序列化泛型。

评分

参与人数 1技术分 +1 收起 理由
陈行 + 1

查看全部评分

回复 使用道具 举报
楼主 问题解决了记得把问题改成已解决啊
回复 使用道具 举报
序列化:就是将对象的状态转化为可保持或是传输格式的过程。

反序列化:它是与序列化相反的过程,它是将流转化为对象。

可以使用Serializable属性将类标记为可序列化,在序列化的类中用NonSerialized属性标记成员变量,来防止这些成员变量被序列化。

实质上序列化就是利用格式化程序如二进制格式化程序BinaryFormatter的Serialize方法将类的值转换为一个一般的(即连续的)字节流,然后将这个流写到磁盘文件或其他流化目标上,最后利用格式化程序如BinaryFormattor的Deserialize方法可将对象还原成以前的状态。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马