WCF 之 序列化(Serialization)

       在我们现在的DT时代,大部分的系统都是以数据为中心的,功能的实现表现在对相关数据的正确处理方面。而数据本身,也是一种有效信息的载体,在不同的环境具有不同的表示。一个分布式的互联系统关注与数据的交换,而数据正常交换的根本前提是参与数据交换的双方对于数据结构的一致性理解。这就为数据的表现提出了要求,为了保证处于不同平台、不同厂商的应用能够正常地进行数据交换,交换的数据必须采用一种大家都能够理解的展现方式。在这方面,XML无疑是最好的选择。所以WCF下的序列化解决的就是如何将数据从对象的表现形式转变成XML表现形式,以确保数据的正常交换。


       对于一个托管应用程序,在运行时,数据是通过基于某种类型的对象承载的。存在于内存中的托管对象隶属于它所在的应用程序域,是不能直接跨域传递的,更不用说是基于跨机器、甚至是跨网络的传递了。要实现这种跨应用程序域、跨机器甚至是跨网络的数据传递,序列化是必须的。


序列化 (Serialization)
       将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。


持久化与序列化
    如果按照存储介质和生命周期的长短划分,所有的数据都以两种形式存在,其中一种是保持与内存中运行时对象,另一种则是存储与持久化物理介质中的文件,比如数据库文件等。数据的持久化关注与相同的数据在不同形态数据之间的转化,解决的是如何将内存对象持久化存储,以及从物理介质中加载数据并创建内存对象。
    数据的持久化是序列化的一个典型的应用,对象只有在序列化之后才能进行持久化存储,从持久化存储介质加载数据通过反序列化转变成运行时对象。


数据结构与序列化
       序列化关注与如何将运行时对象转换成另一种能够被跨域传递或持久化存储的形态,比如基于纯文本的XML或二进制码等,所以序列化(或反序列化)的本质是解决数据在不同形态之间转换的问题。
       不同表现形式的数据,都具有相应的数据结构描述方式。我们知道,程序集的元数据表描述了组成程序集的物理与逻辑结构,记录了定义在当前程序中的所有类型和类型的成员。在托管的世界里,每一个托管对象都对应一个确定的类型,组成对象的所有数据成员的结构,都通过类型进行描述。所以,无论是序列化还是反序列化,都必须预先确定被序列化对象或反序列化生成对象的类型。


       WCF的序列化和反序列化解决的是托管对象与XML之间的转换,以实现与厂商无关、跨平台的数据交换。之所以基于XML的数据表示能够实现跨平台的数据交换,在于XML是一种被不同的厂商普遍接受和抑郁理解的数据表示。WCF以XML的形式进行数据交换,乙方传输的XML能够被另一方正确理解,同样需要交换双方就传递的XML结构达成一致的理解。在WCF中,数据契约通过XSD实现对数据的描述。






评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值