关于序列化和反序列化

简单来说,序列化,就是将数据转换成可储存可传输的数据格式的一个过程;而反序列化,则是将该数据格式重新组合成一个完整的数据对象的过程。

那么,我们为什么要序列化呢?

我认为有以下几个原因:

1、便于数据的存储和传输

打个比方,现在我们有一个树形的结构,想要把它从网络的这一端传输到另外一端,我们需要通过网络通道进行传输,但是由于树形的结构过于不规范,“枝叶繁茂”,网络的管道大小有限,“不够粗”,这样子,为了防止树被卡主了,我们就将这棵树按照一定的序列把它的枝叶“砍下来”,和躯干等组成一个有序的字节流,从而轻便的通过网络通道到达另一端,再进行组合成我们完整的树。

当然,这个例子可能并不是那么的恰当,只要能理解序列化能帮我们进行更有效的数据传输就好大笑


2、以某种形式将自定义的对象持久化

从某种意义上来说,我们在自定义自己的对象的时候,可以说她是虚拟的,不管她被我们定义的多么好,当程序关闭的时候,她就会消失,下次再见到她的时候,就不一定是那个她了。如果我们将对象序列化,那么,在保存对象时,系统会把其状态保存为一组有顺序的字节,当我们以后需要用到的时候,就可以按这个顺序读取并还原出原来的对象(也就是,反序列化)。必须注意地是,对象序列化保存的是对象的"状态",即它的成员变量。由此可知,对象序列化不会关注类中的静态变量


* 二进制序列化保持类型保真度,这对于在应用程序的不同调用之间保留对象的状态很有用。例如,通过将对象序列化到剪贴板,可在不同的应用程序之间共享对象。您可以将对象序列化到流、磁盘、内存和网络等等。

* XML 序列化仅序列化公共属性和字段,且不保持类型保真度。当您要提供或使用数据而不限制使用该数据的应用程序时,这一点是很有用的。由于 XML 是一个开放式标准,因此,对于通过 Web 共享数据而言,这是一个很好的选择。SOAP 同样是一个开放式标准,这使它也成为一个颇具吸引力的选择。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值