谈谈序列化,关于.net中的二进制序列化和xml序列化

序列化技术,就是将对象持久存储。 可以这样理解:序列化就是将对象占用的内存的数据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里面也有较详细的示例代码。

分享文章:谈谈序列化,关于.net中的二进制序列化和xml序列化
文章地址:http://www.shufengxianlan.com/qtweb/news8/351058.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联