谈谈序列化,关于.net中的二进制序列化和xml序列化
创始人
2024-07-30 18:30:25
0

序列化技术,就是将对象持久存储。 可以这样理解:序列化就是将对象占用的内存的数据copy到持久存储设备,比如硬盘。序列化有什么用呢?

两点作用:

1、持久的存储对象状态;

2、分布式运算中传递数据的底层实现。

.Net框架封装的序列化技术包含两种,即 二进制序列化 和 xml序列化

(以下代码都要求被序列化的对象的类型使用Serializable特征类)

二进制序列化的实现 (using System.Runtime.Serialization.Formatters.Binary;)

序列化代码:

  1. //打开文件流  
  2. FileStream fs = new FileStream(保存序列化数据的文件路径, FileMode.OpenOrCreate);  
  3. //创建二进制序列化对象  
  4. BinaryFormatter bf = new BinaryFormatter();  
  5. //调用二进制序列化对象的序列化方法执行序列化操作  
  6. bf.Serialize(fs, 被序列化的对象);  
  7. //关闭文件流  
  8. fs.Close(); 

反序列化代码:

  1. //打开文件流  
  2. FileStream fs = new FileStream(保存序列化数据的文件路径, FileMode.OpenOrCreate);  
  3. //创建二进制序列化对象  
  4. BinaryFormatter bf = new BinaryFormatter();  
  5. //调用二进制序列化对象的反序列化方法执行反序列化操作  
  6. 从文件中反序列化得到的对象 = bf.Deserialize(fs) as 被序列化对象的类型;  
  7. //关闭文件流  
  8. fs.Close(); 

XML序列化的实现(using System.Xml.Serialization;)

序列化代码:

  1. //打开文件流  
  2. FileStream fs = new FileStream(保存序列化数据的文件路径, FileMode.OpenOrCreate);  
  3. //创建XML序列化对象  
  4. XmlSerializer xs = new XmlSerializer(typeof(被序列化对象的类型));  
  5. //调用XML序列化对象的序列化方法执行序列化操作  
  6. xs.Serialize(fs, 被序列化的对象);  
  7. //关闭文件流  
  8. fs.Close(); 

反序列化代码:

  1. //打开文件流  
  2. FileStream fs = new FileStream(保存序列化数据的文件路径, FileMode.OpenOrCreate);  
  3. //创建XML序列化对象  
  4. XmlSerializer xs = new XmlSerializer(typeof(被序列化对象的类型));  
  5. //调用XML序列化对象的反序列化方法执行反序列化操作  
  6. 从文件中反序列化得到的对象 = xs.Deserialize(fs) as 被序列化对象的类型;  
  7. //关闭文件流  
  8. fs.Close(); 

当然这里所提供的是序列化和反序列化的默认实现,能应付大多数运用。 特殊情况可以还需要重写序列化的默认实现。MSDN里面也有较详细的示例代码。

【编辑推荐】

  1. .NET入门教程 学习.NET的几个基本步骤
  2. 使用ASP.NET操作IIS7中使用应用程序
  3. 解析.NET中容易混淆的委托与接口
  4. VB.NET和ASP.NET编码规范
  5. 回顾.NET Remoting分布式开发

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...