在日常的程序开发中,用到了很多次的序列化的数据,可是一直不清楚为什么要将数据序列化,经过一段时间的学习与验证,有了一些个人看法,在这里做个总结,权当抛砖引玉了。
为什么要将数据序列化?个人认为,可以从两个方面来解释,一方面是为了方便数据存储,另一方面是为了方便数据的传递。
通常我们的数据会存放到数据库中,但是,数据库存储数据也是有限制的,我们也不能将所有数据都存放到数据库中吧。假如说程序中有这么一种数据,在整个程序运行过程中,这些数据能且只能使用一次,使用过后就会改变或者无效,并且,数据量比较大,且数据不重复,那么,我们应该如何设计数据库呢?首先,数据不重复,也就不存在将这些数据存放到一张表中,可是,我们有不能为每个中间数据单独的建立一张数据表,这样太浪费了,那么序列化便应运而生。
首先,我们将所有需要存储的中间数据序列化,然后将序列化后的数据保存到数据库的一个字段中,然后为这个表设置一个主键即可。是不是很方便呢?且看数据库保存形式。
我们可以看到,XML形式的数据其实可以当作链接,点击后,即可在数据库中查看相应内容,查询的时候,直接使用主键查询,然后将查询结果反序列化即可。
第二个方面是数据传递,程序之间的数据传递,窗体之间的数据传递等,我这里主要以前后台之间的数据传递为例,说明序列化的好处。
现在,我们要将一个实体从后台传递到前台进行逻辑计算,或者将前台的实体数据传递到后台,我们应该怎么做呢?
比较明智的办法就是将数据绑定到隐藏域控件上,然后在控件上取值,假如我们的实体包括很多字段怎么办呢?总不至于每个字段对应一个隐藏域吧,于是,序列化又有大展拳脚了。我们可以将实体序列化,然后在赋值到隐藏域,获取数据后,反序列化即可。
序列化以前的后台数据
后台数据序列化以后:
前台获取数据形式,通过对象监控,获取控件返回值。
可见,获取到底额数据还是序列化以后的格式,然后进行反序列化即可得到原来的实体数据。监控可知:
数据又还原到了实体格式,这样是不是很方便呢?
综上所述,序列化好处:
1 方便数据传递,减少了数据丢失率,增强了程序安全性。
2 有利于数据存储,减少了不必要的内存浪费,节约了资源。
3 简化了数据库结构,增强了程序的可维护性。
原文:http://blog.csdn.net/u010942465/article/details/46278609