首页 > 代码库 > 序列化的基本操作

序列化的基本操作



     在实现反序列化的时候,上个DEMO直接将SQLconnection对象的创建写在了product的构造函数中,而在序列化时,再通过实现IDeserializationCallback接口重新创建SqlConnection对象,以此来还原对象状态。在Product构造函数和OnDeserialization()方法中,都硬编码了数据库连接字符串。

 

  技术分享


 

   而更常见的情况时将SqlConnection的连接字符串保存在变量中:

 

   如图:

 

技术分享

 

 

   序列化之后:

 

 技术分享


 

 

    很多时候,数据库连接字符串属于敏感数据,我们并不希望它出现在序列化的文件中。

 

    解决这个问题的一个办法是将连接字符串也标记为[NonSerialized],不过这样反序列化后对象的状态就不完整了。

 

 

  方法二:

在序列化前将字符串进行加密,在反序列化后,对加密过的字符串进行还原。换言之,就是在序列化/反序列化的过程中注入一定的逻辑。

 

 

    .NET提供了四个序列化,反序列化的特性标记来实现这一过程:


 

 技术分享


       

   类中的写法如下:

 


 技术分享

 


   调用的时候:


 

 技术分享


 

     结果如下,序列化和反序列化一次执行方法如下:

 


 技术分享

 

   调用后的结果与实现IDeserializationCallback接口的功能,可以看出,使用序列化的基本方法,还能保证序列化过程的安全性,因为对于这些特殊字符,我们可以在序列化过程中加入加密和解密算法,来保证信息不被非法窃取。


 技术分享


 

 

 

 

 


序列化的基本操作