VB.NET中的对象序列
介绍
这里是一个简单的控制台应用程序,它通过使用System.Runtime.Serialization名字空间演示了VB.NET中的对象序列(Object Serialization)。
什么是对象序列(Object Serialization)?
序列化是把图式对象转换成为线性字节序列的过程。字节序列可以发送到别处,例如远程计算机,然后执行序列解码,这样就在远程主机内存中生成了原来图式对象的克隆。序列化过程在VB.NET中是十分容易使用的,而且是开放的,每个VB6的程序员都曾经自觉或不自觉地使用过序列化。当任何ActiveX dll或者ActiveX exe被创建后,都有五个属性可以设置,最后一个Persistable属性就是VB6中的序列化。VB6中序列化的过程不需要用户认知,大部分开发人员也从来不管序列化做了什么和如何运作。在VB.NET中,有着公共对象库,每个支持.NET体系的语言都可以通过System.Runtime.Serialization的名字空间来理解和使用VB.NET的序列化特征。
我们在 .NET中做序列化的时候,Runtime这个元数据“知道”每个对象在内存中的存放规划,它有对这些区域和属性的定义,这使得对象序列化自动执行,不用对序列化各区域编写代码。
序列化流可以用XML进行编码,或者压缩成二进制数据表示。具体格式决定于调用的格式化对象。可插入的格式化对象允许开发人员使用两种已提供的格式:binary 和 SOAP,或者自行创建新的格式来进行对象的序列化。
序列化可以替代任何流,象MemoryStream、NetStream等,而不仅仅是FileStream。
序列化操作使用到下面的几个类:
Formatter:负责按照指定格式将对象数据写入到输出流。
ObjectIDGenerator:负责创建对象的Ids。它跟踪已经可见的对象,当你要求这个对象的ID时,或者返回存在的ID,或者创建一个新ID。
ObjectManager:负责跟踪序列解码时的对象。
例程说明
这里的例子描述了将内存中的对象进行序列化操作保存到磁盘的过程。它将创建一个单一连接列表,填充满数据,然后序列化到磁盘的文件中。接着列表被解码,恢复成内存中的一个对象。