对象序列化

序列化是将一个对象保存到存储介质上或者将对象进行转换使之能够在网络上传送的行为”。通俗一点的解释,序列化就是把一个对象保存到一个文件或数据库字段中去,反序列化就是从文件或者数据库中取出数据再转化成原来的对象使用。对象是稍纵即逝的,不仅程序重启、操作系统重启会造成对象的消失,就是退出函数范围等都可能造成对象的消失,序列化/反序列化就是为了保持对象的持久化。就像用DV录像(序列化)和用播放器播放(反序列化)一样。

能对一个类进行序列化的条件是:该类的任何基类可序列化;该类应用了Serializable特性

.net framework中,有三种序列化机制:二进制、XML和简单对象访问协议(Simple Object Access ProtocolSOAP它们的优缺点阐述如下:

1、二进制序列化的最大优点是,类型数据可以准确的表示出来。因为二进制序列化对象的公有和私有成员,也就是说除了标记为NonSerialized的其他所有成员都能序列化,所以在反序列化的时候可以忠诚地重建出该对象的状态。

2、XML只序列化对象的公共属性和字段。在XML序列化时,私有字段和其他实例对象就丢失了,也就是说采用xml序列化的方式只能保存public的字段和可读写的属性,对于private等类型的字段不能进行序列化

3、XML和SOAP是开发标准,具有很好的移植性。

简单对象访问协议(Simple Object Access Protocol,SOAP),是一种轻量的、简单的、基于XML的协议,它被设计成在WEB上交换结构化的和固化的信息。 SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议(HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME)。它还支持从消息系统到远程过程调用(RPC)等大量的应用程序。SOAP使用基于XML的数据结构和超文本传输协议(HTTP)的组合定义了一个标准的方法来使用Internet上各种不同操作环境中的分布式对象。

进行序列化和反序列化的代码很简单,三者对应的命名空间及对应的格式化类如下:

二进制:System.Runtime.Serialization.Formatters.Binary—BinaryFormatter

XML: System.Xml.Serialization—XmlSerializer

SOAP: System.Runtime.Serialization.Formatters.SOAP—SoapFormatter

BinaryFormatter,XmlSerializer,SoapFormatter类都有两个方法:

void Serialize(Stream stream, object obj),将对象obj序列化到stream中

object Deserialize(Stream stream),将对象从stream中反序列化,返回值为反序列化得到的对象。

不是所有对象都能序列化,只有可序列化的对象才能序列化,在类声明上添加[Serializable],对象的属性、字段的类型也必须可序列化。反序列的项目中必须有同样的类,否则不能反序列化。

序列化的应用

  1. 配置程序的加载和保存

我们可以创建一个类,它包含了应用程序的配置信息。当应用程序加载时,配置对象被反序列化到内存中的配置类;当用户在程序运行的过程中对配置文件进行修改了的时候,可以把内存的配置类序列化到硬盘。这样,方便地实现了配置文件的读写。

  1. 分布式计算

序列化的最大优势在于分布式计算。两台机器拥有相同的程序集,则可以利用序列化技术进行通信。A机器通过序列化技术向B机器发送对象的快照,B机器能快速的、正确地重建出该对象来。

转载于:https://www.cnblogs.com/xdp-gacl/p/3541080.html

.Net高级技术——对象序列化相关推荐

  1. 【第36题】JAVA高级技术-对象克隆5(几种深克隆效率比较)

    回城传送–><JAVA筑基100例> 文章目录 零.前言 一.题目描述 二.解题思路-序列化克隆 三.代码详解 原生序列化和Kryo序列化性能比较 结论 四.推荐专栏 五.示例源码下 ...

  2. 【第35题】JAVA高级技术-对象克隆4(序列化与对象克隆)

    回城传送–><JAVA筑基100例> 文章目录 零.前言 一.题目描述 二.解题思路-序列化克隆 三.代码详解 解题思路二:把对象写入内存,完成序列化 代码详解 解题思路三:引用sp ...

  3. 【第34题】JAVA高级技术-对象克隆3(深克隆)

    回城传送–><JAVA筑基100例> 文章目录 零.前言 一.题目描述 二.解题思路-深克隆 三.代码详解 多学一个知识点: 四.推荐专栏 五.示例源码下载 零.前言 ​ 今天是学习 ...

  4. Day10_07目标:对象序列化技术

    目标:对象序列化技术 对象序列化:就是把Java对象数据直接存储到文件中去. 对象 => 文件中 对象反序列化:把Java对象的文件数据恢复到Java对象中. 文件中 => 对象 字节流 ...

  5. php高级技术考试题,PHP高级技术考试题.doc

    PHP高级技术考试题 PHP方向阶段测试 一.选择题(共25分 每小题1分) 1.如何让一个对象实例调用自身的该对象的方法函数"mymethod"?A.$self=>myme ...

  6. 【六祎 - Java】对象序列化

    目标:对象序列化技术.对象序列化:就是把Java对象数据直接存储到文件中去. 对象 => 文件中对象反序列化:就是把Java对象的文件数据恢复到Java对象中. 文件中 => 对象字节流 ...

  7. Spring高级技术梳理

    Spring高级技术梳理 序言 正文 SpringData部分 Spring全家桶之SpringData--预科阶段 Spring全家桶之SpringData--Spring 整合Hibernate与 ...

  8. SAP PM技术对象的功能

    SAP PM技术对象的功能 您可以对设备主记录和功能位置执行不同的功能. 数据传输 可以将主数据从一个功能位置传输到其他功能位置或功能位置和设备之间. 使用数据传输功能,您可以在分层结构中将数据维护在 ...

  9. .Net高级技术笔记

    .Net高级技术 数组/多维数组/交叉数组 装箱&拆箱 字段私有,属性赋值(私有匿名后备字段) 引用/"指针" 数组/多维数组/交叉数组 namespace Console ...

最新文章

  1. PHP设计模式 -- 策略模式
  2. 删除临时表并且插入数据
  3. mysql把用户权限授予新用户_MySQL新建普通用户和库并授予新用户对新库的所有权限...
  4. 服务器select与gevent
  5. “强化学习说白了,是建立分布到分布之间的映射”?数学角度谈谈个人观点
  6. B+/-Tree原理(mysql索引数据结构)
  7. 九型人格:四、The TRAGIC ROMANTIC 悲情浪漫者 - 我若不是独特的,就没有人会爱我
  8. 服务器主动向android手机端推送消息
  9. 阳光房市场深度研究分析报告
  10. php注册账号绑定微信,PHP-微信公众账号中的一键绑定该怎么设计
  11. Qt+MPlayer音乐播放器开发笔记(一):ubuntu上编译MPlayer以及Demo演示
  12. Chapter 6-Blurring Things Up之Using Alpha Channel
  13. linux小米随身wifi密码,Ubuntu用小米随身WiFi
  14. NLP papers
  15. 在Mac系统中将html网页转成PDF格式
  16. JQuery Datatables Columns API 参数详细说明
  17. 完美打造跨境电商出口的七个步骤
  18. 基于java的物流信息管理系统(计算机毕业设计)
  19. iphone12mini是双卡双待吗
  20. 开源 MQTT Broker 对比

热门文章

  1. matlab读取fortran文件夹,怎样用fortran获取一个文件夹里的全部文件名?
  2. apex 查询_加速器关联好司机下载器下载的apex
  3. word表格图片自动适应表格大小_几招教你快速解决word文字、图片、表格排版问题,你肯定遇到过...
  4. 周三多管理学第七版pdf_为什么说管理学原理是企业领导的必修课?
  5. python json.load_python 读写json文件(dump, load),以及对json格式的数据处理(dumps, loads)...
  6. php网站后台无法退出,zblog“网站关闭”后进入不了后台的解决方法
  7. 为什么使用NoSql及NoSql的优点
  8. 基于matlab的能级_波函数及几率密度图形的绘制,基于MATLAB的能级波函数及几率密度图形的绘制.pdf...
  9. 华为云服务器密码修改,华为云鲲鹏云服务器安装MySQL 5.7.30
  10. php 启动手机浏览器,php实现读取手机客户端浏览器的类