序列化的基本操作

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



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

 

  


 

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

 

   如图:

 


 

 

   序列化之后:

 

 


 

 

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

 

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

 

 

  方法二:

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

 

 

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


 

 


       

   类中的写法如下:

 


 

 


   调用的时候:


 

 


 

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

 


 

 

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


 


 

 

 

 

 


目录
相关文章
|
8月前
|
NoSQL API Redis
数据对象的底层实现方式你都了解吗?
上一小节我们提到的五种数据类型其实就是 Redis 的数据对象,我们先来看看数据对象的类型:Redis 的 key 都是 string 类型的,以上各类型说的其实都是 value 的类型,以下是对象的几个优点:
62 0
数据对象的底层实现方式你都了解吗?
|
存储 算法 Python
Python算法——树的序列化与反序列化
Python算法——树的序列化与反序列化
207 1
|
存储 Java
Java对象数据结构介绍
Java对象是一种复杂的数据结构,它允许我们在内存中存储一系列属性和方法。这些属性和方法可以在程序运行期间被访问和修改,以实现特定的功能和操作。
222 0
|
2月前
|
存储 缓存 NoSQL
一篇搞懂!Java对象序列化与反序列化的底层逻辑
本文介绍了Java中的序列化与反序列化,包括基本概念、应用场景、实现方式及注意事项。序列化是将对象转换为字节流,便于存储和传输;反序列化则是将字节流还原为对象。文中详细讲解了实现序列化的步骤,以及常见的反序列化失败原因和最佳实践。通过实例和代码示例,帮助读者更好地理解和应用这一重要技术。
53 0
|
8月前
|
存储 Java
Java对象是一种复杂的数据结构
【4月更文挑战第28天】Java对象是基于类的实例,包含属性和方法。类是对象的蓝图,实例化过程在堆内存中分配空间。对象属性存储各种数据,通过点号运算符访问,方法执行操作。Java提供内置对象如String、Integer,也可自定义对象以实现特定功能,如学生管理系统或电商网站。
21 1
|
存储 编解码 算法
C++算法:二叉树的序列化与反序列化
C++算法:二叉树的序列化与反序列化
|
存储 Java
【数据结构趣味多】顺序表基本操作实现(Java)
【数据结构趣味多】顺序表基本操作实现(Java)
|
机器学习/深度学习 存储
数据结构:细讲串的定义和基本操作
什么是串?羊肉串?牛肉串?当然不是!!!串,即字符串(String)是由零个或者多个字符组成的有序列。可以是字母、数字或者其他字符。
360 0
|
存储 XML JSON
序列化和反序列化的底层实现原理是什么?
序列化和反序列化的底层实现原理是什么?
185 0
二叉树的序列化和反序列化
二叉树的序列化和反序列化
113 0