当前位置:编程学习 > C#/ASP.NET >>

序列化和反序列化

 请教谁能告诉我为啥要使用序列化和反序列化  在啥情况下使用 有啥好处/作用? --------------------编程问答-------------------- 序列化和反序列化的定义:把对象存储在特定介质中的一个过程
比如: 我们要把一台电脑从你家帮到我家来
1)将你家的电脑拆散
2)将拆散的电脑放进一个盒子里
3)将电脑重新组装(电脑到我家咯)
上面的这个过程称之为序列化和反序列化 
电脑是一个对象  它是存在一个盒子里(文件) 那么还有一个拆散的形为在程序里指序列化操作 反过来重新组装在程序里称之为反序列化

什么时候用呢?
比如配制文件你应该清楚吧,它是用来设置系统信息的。 它只能保存一些基本的数据。但是我现在有一个需求要将一个类保存起来,比如说在玩游戏时有一个存档的功能,要将整个游戏保存起来,你肯定是不会去保存游戏的数据吧,那么这样怎么办呢,你就可以把这个游戏类创建一个对象,然后再把这个对象先拆散(拆散成二进制流,因为是存在文件里)(就和电脑一样先折开成零件),再保存到一个文件里。这时候你就可以关电脑咯,当你第二天再来打开游戏时,你就只要进行反序列化来读取你保存的这个对象。它就和你昨天使用的那个对象是一模一样的。 --------------------编程问答-------------------- 恩,楼上说的很详细!学习了…… --------------------编程问答-------------------- 谢谢啊 果然高人的教导比自己瞎摸索要有效的多!!!例子很形象 --------------------编程问答-------------------- good
--------------------编程问答-------------------- 补充1楼的说明
1)将你家的电脑拆散 
2)将拆散的电脑放进一个盒子里  ---注意这里 应该是一个密封的盒子 旁边的人是看不见里面有什么东西的
3)将电脑重新组装(电脑到我家咯)  --------------------编程问答-------------------- 与 “文件读写” 做比较  序列化和反序  优势就在于 刚才说的第二点
因为 "读写文件" 生成出来的 文件谁都可以打开看看 里面有些什么内容  安全性很低
而 序列化和反序 就不一样勒  你可以试试 用记事本或者其他方式打开 看见里面的全部是乱码(这是为什么喃? 因为序列化 是把你写入的内容转换成勒二进制的机器码 所以看见是乱码)而 反序的作用正是把那些二进制机器码再转换成字符 --------------------编程问答-------------------- 晕。太大篇了,简单的说,你需要进行持久化保存或远程传输就要用到。 --------------------编程问答-------------------- 之前做WebService和Socket程序时,了解一些跟序列化和反序列化的概念,
没有深入,思考,
严重关注本帖... --------------------编程问答-------------------- 本地化对象要用到,比如webservice,在远程传输对象时需要先序列化成二进制数据,才能传输。 --------------------编程问答-------------------- learning --------------------编程问答-------------------- 一般情况下是为了定义的接口使用广泛。
比如接口的参数都定义成object,
这样就用到序列化和反序列化了,
这样就可以根据自己的需求去判断object了 --------------------编程问答-------------------- 我的理解是,序列化是把对象转换成便于网络传输或保存在物理介质的格式,反序列化正好相反。比如web service的序列化,是把对象转换成XML,反序列化是把XML转换成对象。 --------------------编程问答-------------------- 学到了。。。 --------------------编程问答-------------------- 简单的说,是在你需要保存数据,与你需要远程传送对象的时候需要用到· --------------------编程问答--------------------
引用 1 楼 jiedamu 的回复:
序列化和反序列化的定义:把对象存储在特定介质中的一个过程
比如: 我们要把一台电脑从你家帮到我家来
1)将你家的电脑拆散
2)将拆散的电脑放进一个盒子里
3)将电脑重新组装(电脑到我家咯)
上面的这个过程称之为序列化和反序列化
电脑是一个对象  它是存在一个盒子里(文件) 那么还有一个拆散的形为在程序里指序列化操作 反过来重新组装在程序里称之为反序列化

什么时候用呢?
比如配制文件你应该清楚吧,它是用来设置系统信息的。 它只能保存一些基本的数据。但是我现在有一个需求要将一个类保存起来,比如说在玩游戏时有一个存档的功能,要将整个游戏保存起来,你肯定是不会去保存游戏的数据吧,那么这样怎么办呢,你就可以把这个游戏类创建一个对象,然后再把这个对象先拆散(拆散成二进制流,因为是存在文件里)(就和电脑一样先折开成零件),再保存到一个文件里。这时候你就可以关电脑咯,当你第二天再来打开游戏时,你就只要进行反序列化来读取你保存的这个对象。它就和你昨天使用的那个对象是一模一样的。


--------------------编程问答-------------------- 嗯,补充一句,序列化分为二进制序列化,XML序列化,SOAP序列化
常用的为二进制序列化。
注意,xml序列化的时候,Private字段是无法序列化的
所有的序列化中,打上[NonSerialized] attribute的字段无法序列化~ --------------------编程问答-------------------- 学习了,谢谢 --------------------编程问答-------------------- 顺便再请教下 二进制序列化,XML序列化,SOAP序列化 这三种序列化使用的具体环境有哪些讲究? --------------------编程问答-------------------- 学习学习 --------------------编程问答-------------------- 二进制的效率高。
SOAP可以平台无关(一本书里的原话:The only advantage of using the SOAP formatter is that it's platform-neutral: you can provide the serialization information (via network stream or file access) to applications running on non-Windows-based platforms, and they can deserialize equivalent objects on their side or serialize their objects back to the .NET side. In general, unless cross-platform interoperabilty is required, you should always use the binary formatter.),最后一句说了,通常除非有跨平台的需要,都只要用二进制序列化就行了。
XML和SOAP类似,主要的区别在于能XML可以自定义序列化信息的结构什么什么的(XML Serialization is similar in concept to the text-based SOAP formatter. The main difference is that with XML serialization, you have granular control over the layout and structure of the serialized information.)
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,