VB.NET串行技术的应用与实现
发布时间:2008/6/5 0:00:00 访问次数:425
对大多数应用程序而言,需要在非运行期间传送对象的状态或以某种方式存储有用的数据,使这些有用信息不会丢失。这些数据要么显示给用户,要么存储起来或传送给另一个应用程序。串行技术就是提供在非运行期间移动对象状态转换为字节流的技术。串行的定义就是获取一个对象并将他转换成一种可以在网络上传输或者输送到某个存储单元的格式的过程。存储单元就像是一个文件或者数据库。串行的格式包含对象的状态信息,而反串行就是使用串行的状态信息将对象从串行状态还原成原始状态的过程。
从本质上说,串行过程允许对象被串行、被远程调用并在网络上载运或者输送到某个存储单元如asp.net缓存区,为了在以后的某个时间内及时使用而进行重建。串行化技术允许存储对象在文件、数据库、或者asp会话状态中反串行。
2 串行技术
在vb.net编程平台上有2种不同的串行化机制串行化和深串行化l1)。分3种串行对象的格式:二进位、soap和xml,即浅串行化为xml格式,深串行化为soap格式或二进位格式。格式的控制是建立在使用何种对象来执行串行基础之上。xml格式可通过使用systern.xml.
serialization.xmlserializer类创建。soap和二进位格式可通过在system.runtime.seria-1izatlon.f。rmatters命名空间内使用类来创建。选择哪种串行化机制来串行化取决于使用的场合
(1)浅串行化为xml格式
xml串行化器提供了一种快捷而方便的方式来浅串行化对象的状态。xml串行化非常适合不同类型的应用程序集成和交互操作,例如web服务。使用xml串行化可以把对象数据编码为unicode,utf8等,其实质是一种基于文本的数据格式化技术。下面说明使用属性来控制xml串行,由xmlserializer执行的对象串行可用的属性如下:
①xmlattributeattribute:子句将作为xml属性串行。
②xmlelementattribute:域或者属性作为xml要素串行。
③xmllgnoreattribute:串行时忽略域或者属性。
④xmlrootattribute:代表xml文档的根要素名,只适用于类。
xml串行代码下列代码定义了一个类,他用于演示某些xml串行控制属性的使用。
测试xml串行代码 下列代码将串行上面定义的代码并存储信息在本地驱动上的文件内:
xml串行化后的代码 专用域和属性并没有包括在xml内。xmlserializer是设计用来表现这种方法的。
(2)深串行化
在深串行化中,对象的所有状态都串行化为一个流。vb提供了对深串行化为soap和二进位格式的优异支持,还可以定制这些串行化格式,甚至可以创建新的格式化器。
用soap和二进位串行 如果计划在网络上传输对象的话,那么soap和二进位串行是合适的。soap格式程序用来通过http发送对象时比较理想,由于二进位更加轻便和紧凑,所以更加理想。xml串行器不能独立为传书输准备对象,因要忽视专用子域和子属性。
xml串行样品代码 通过简单的添加[serializable]属性性到上面的定义类的开头,现在可以使用soap或者二进位格式程序来串行对象到各自的格式上。下列代码演示17如何使用soap格式程序。
soap串行化后的代码 注意soapformatter忽视了前面赋给上述类的xml属性,这一点很重要。
实现iserializable接口 只将[serializable]属性设置在类的开头是使对象成为可串行的一个简单方法。如果在串行对象时无多大改变这个方法很有用。但是当串行过程中要进行实施控制时,那么最终输入到串行的格式中的是什么呢?这就是iserializable接口的用途。
他提供了一个接口,这个接口给予串行格式中包含的项的完全灵活性。他要求跳过用来从数据的串行版本中重建对象实例(即反串行)的构造器。涉及的第二个方法为getobjectdata,他负责控制输入到对象的串行版本中的实际数据。
iserializable接口代码 下列代码改进了前面定义的代码。他现在用来实现反串行对象的附加构造器,并且可使用getobjectdata方法来控制串行过程。现在,当soap或者二进位格式程序对象用来串行对象时,他们生成了由getobjectdata方法控制的版本。
对大多数应用程序而言,需要在非运行期间传送对象的状态或以某种方式存储有用的数据,使这些有用信息不会丢失。这些数据要么显示给用户,要么存储起来或传送给另一个应用程序。串行技术就是提供在非运行期间移动对象状态转换为字节流的技术。串行的定义就是获取一个对象并将他转换成一种可以在网络上传输或者输送到某个存储单元的格式的过程。存储单元就像是一个文件或者数据库。串行的格式包含对象的状态信息,而反串行就是使用串行的状态信息将对象从串行状态还原成原始状态的过程。
从本质上说,串行过程允许对象被串行、被远程调用并在网络上载运或者输送到某个存储单元如asp.net缓存区,为了在以后的某个时间内及时使用而进行重建。串行化技术允许存储对象在文件、数据库、或者asp会话状态中反串行。
2 串行技术
在vb.net编程平台上有2种不同的串行化机制串行化和深串行化l1)。分3种串行对象的格式:二进位、soap和xml,即浅串行化为xml格式,深串行化为soap格式或二进位格式。格式的控制是建立在使用何种对象来执行串行基础之上。xml格式可通过使用systern.xml.
serialization.xmlserializer类创建。soap和二进位格式可通过在system.runtime.seria-1izatlon.f。rmatters命名空间内使用类来创建。选择哪种串行化机制来串行化取决于使用的场合
(1)浅串行化为xml格式
xml串行化器提供了一种快捷而方便的方式来浅串行化对象的状态。xml串行化非常适合不同类型的应用程序集成和交互操作,例如web服务。使用xml串行化可以把对象数据编码为unicode,utf8等,其实质是一种基于文本的数据格式化技术。下面说明使用属性来控制xml串行,由xmlserializer执行的对象串行可用的属性如下:
①xmlattributeattribute:子句将作为xml属性串行。
②xmlelementattribute:域或者属性作为xml要素串行。
③xmllgnoreattribute:串行时忽略域或者属性。
④xmlrootattribute:代表xml文档的根要素名,只适用于类。
xml串行代码下列代码定义了一个类,他用于演示某些xml串行控制属性的使用。
测试xml串行代码 下列代码将串行上面定义的代码并存储信息在本地驱动上的文件内:
xml串行化后的代码 专用域和属性并没有包括在xml内。xmlserializer是设计用来表现这种方法的。
(2)深串行化
在深串行化中,对象的所有状态都串行化为一个流。vb提供了对深串行化为soap和二进位格式的优异支持,还可以定制这些串行化格式,甚至可以创建新的格式化器。
用soap和二进位串行 如果计划在网络上传输对象的话,那么soap和二进位串行是合适的。soap格式程序用来通过http发送对象时比较理想,由于二进位更加轻便和紧凑,所以更加理想。xml串行器不能独立为传书输准备对象,因要忽视专用子域和子属性。
xml串行样品代码 通过简单的添加[serializable]属性性到上面的定义类的开头,现在可以使用soap或者二进位格式程序来串行对象到各自的格式上。下列代码演示17如何使用soap格式程序。
soap串行化后的代码 注意soapformatter忽视了前面赋给上述类的xml属性,这一点很重要。
实现iserializable接口 只将[serializable]属性设置在类的开头是使对象成为可串行的一个简单方法。如果在串行对象时无多大改变这个方法很有用。但是当串行过程中要进行实施控制时,那么最终输入到串行的格式中的是什么呢?这就是iserializable接口的用途。
他提供了一个接口,这个接口给予串行格式中包含的项的完全灵活性。他要求跳过用来从数据的串行版本中重建对象实例(即反串行)的构造器。涉及的第二个方法为getobjectdata,他负责控制输入到对象的串行版本中的实际数据。
iserializable接口代码 下列代码改进了前面定义的代码。他现在用来实现反串行对象的附加构造器,并且可使用getobjectdata方法来控制串行过程。现在,当soap或者二进位格式程序对象用来串行对象时,他们生成了由getobjectdata方法控制的版本。
上一篇:FPGA设计中的编程技巧