黑马程序员技术交流社区

标题: c#中什么是序列化和反序列化 [打印本页]

作者: 醉红尘_碎星辰    时间: 2013-11-5 17:43
标题: c#中什么是序列化和反序列化
中什么是序列化和反序列化
作者: 张小康    时间: 2013-11-5 17:51
序列化就是将数据转化为二进制用于数据的传递
反序列化就是将接受到的二进制形式的数据转换成原来的数据类型
作者: 佟嘉豪    时间: 2013-11-5 18:19
序列化就是将数据转化为二进制用于数据的传递
反序列化就是将接受到的二进制形式的数据转换成原来的数据类型

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

本人在实际项目中 没有应用过 不知道怎么用
作者: 何俞平    时间: 2013-11-5 18:49
序列化就是将对象转化为二进制,反序列化就是将二进制形式的数据转换成原来的数据类型,序列化和反序列用于传输数据,例如网络数据的传输。
下面是一个序列化和反序列化的例子:(模拟传输数据)
//序列化:将对象转换为二进制
            //服务器端
            //假设一个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();

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

常见的序列化的方法:

  1、BinaryFormatter

  2、SoapFormatter

  3、XML序列化
优缺点比较::
      二进制序列化的优点:
  1. 所有的类成员(包括只读的)都可以被序列化;
  2. 性能非常好。
    XML序列化的优点:
  1. 互操作性好;
  2. 不需要严格的二进制依赖;
  3. 可读性强
    SoapFormatter微软淘汰了,,不能序列化泛型。
作者: 陈行    时间: 2013-11-6 17:38
楼主 问题解决了记得把问题改成已解决啊
作者: 黑飞马    时间: 2013-11-6 21:22
序列化:就是将对象的状态转化为可保持或是传输格式的过程。

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

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

实质上序列化就是利用格式化程序如二进制格式化程序BinaryFormatter的Serialize方法将类的值转换为一个一般的(即连续的)字节流,然后将这个流写到磁盘文件或其他流化目标上,最后利用格式化程序如BinaryFormattor的Deserialize方法可将对象还原成以前的状态。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2