序列化的基本操作

简介:      在实现反序列化的时候,上个DEMO直接将SQLconnection对象的创建写在了product的构造函数中,而在序列化时,再通过实现IDeserializationCallback接口重新创建SqlConnection对象,以此来还原对象状态。



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

 

  


 

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

 

   如图:

 


 

 

   序列化之后:

 

 


 

 

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

 

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

 

 

  方法二:

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

 

 

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


 

 


       

   类中的写法如下:

 


 

 


   调用的时候:


 

 


 

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

 


 

 

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


 


 

 

 

 

 


目录
相关文章
|
6月前
|
Java
Java集合操作示例
Java集合操作示例
63 0
|
12月前
|
存储 算法 Python
Python算法——树的序列化与反序列化
Python算法——树的序列化与反序列化
194 1
|
13天前
|
存储 缓存 NoSQL
一篇搞懂!Java对象序列化与反序列化的底层逻辑
本文介绍了Java中的序列化与反序列化,包括基本概念、应用场景、实现方式及注意事项。序列化是将对象转换为字节流,便于存储和传输;反序列化则是将字节流还原为对象。文中详细讲解了实现序列化的步骤,以及常见的反序列化失败原因和最佳实践。通过实例和代码示例,帮助读者更好地理解和应用这一重要技术。
10 0
|
5月前
|
NoSQL Java Redis
如何在 Java 中操作这些 Redis 数据结构的基本方法
如何在 Java 中操作这些 Redis 数据结构的基本方法
39 2
|
6月前
|
存储 缓存 关系型数据库
数据结构是实现数据增删改查的具体方式
数据结构是实现数据增删改查的具体方式
42 0
|
存储 编解码 算法
C++算法:二叉树的序列化与反序列化
C++算法:二叉树的序列化与反序列化
|
存储 XML 消息中间件
一文彻底搞懂序列化和反序列化
一文彻底搞懂序列化和反序列化
|
机器学习/深度学习 存储
数据结构:细讲串的定义和基本操作
什么是串?羊肉串?牛肉串?当然不是!!!串,即字符串(String)是由零个或者多个字符组成的有序列。可以是字母、数字或者其他字符。
331 0
数据结构103-插入和修改操作封装1
数据结构103-插入和修改操作封装1
76 0
数据结构103-插入和修改操作封装1
数据结构104-插入和修改操作封装2
数据结构104-插入和修改操作封装2
55 0
数据结构104-插入和修改操作封装2