.wcf服务编程ch5_数据协定和消息协定.ppt

.wcf服务编程ch5_数据协定和消息协定.ppt

ID:21402023

大小:1.04 MB

页数:23页

时间:2018-10-18

.wcf服务编程ch5_数据协定和消息协定.ppt_第1页
.wcf服务编程ch5_数据协定和消息协定.ppt_第2页
.wcf服务编程ch5_数据协定和消息协定.ppt_第3页
.wcf服务编程ch5_数据协定和消息协定.ppt_第4页
.wcf服务编程ch5_数据协定和消息协定.ppt_第5页
资源描述:

《.wcf服务编程ch5_数据协定和消息协定.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、BF-TECH4.0DNET软件开发工程师高薪就业品牌课程版权所有:北风网使用WCF搭建企业通用架构讲师:石曼迪第五章:数据协定和消息协定目录数据协定名称数据协定等效性数据协定版本管理数据协定数据协定”是在服务与客户端之间达成的正式协议,用于以抽象方式描述要交换的数据。也就是说,为了进行通信,客户端和服务不必共享相同的类型,而只需共享相同的数据协定。数据协定为每个参数或返回类型精确定义为进行交换而序列化哪些数据(将哪些数据转换为XML)。必须为所创建的新复杂类型定义数据协定才能序列化这些类型。所有.NET基元类型以及CLR支持的其他类型均默认就支持可序列化协定。数据协定正常情况

2、下可通过将DataContractAttribute属性应用到该类型来完成该任务。可以将此属性应用到类、结构和枚举。然后必须将DataMemberAttribute属性应用到数据协定类型的每个成员,以指示这些成员为数据成员,即应进行序列化。可以使用IgnoreDataMemberAttribute从序列化中剔除某些成员。还可以使用DataContractAttribute和DataMemberAttribute属性显式创建数据协定。数据协定仅当用于未标记的类型时,才接受IgnoreDataMemberAttribute属性。没有使用DataMemberAttribute的属性将

3、不会被序列化。可以将DataMemberAttribute属性(Attribute)应用于字段和属性(Property)。成员可访问性级别(internal、private、protected或public)对数据协定无任何影响。如果将DataMemberAttribute属性应用于静态成员,则将忽略该属性。在序列化期间,为属性数据成员调用property-get代码来获取要序列化的属性的值。在反序列化期间,首先创建一个未初始化的对象,而不在该类型上调用任何构造函数。然后反序列化所有数据成员。在反序列化期间,为属性数据成员调用property-set代码,将属性设置为要反序列化

4、的值。对于将要生效的数据协定,它必须能序列化其所有数据成员。有关可序列化类型的完整列表,请参见数据协定序列化程序支持的类型。泛型类型的处理方式与非泛型类型完全相同。泛型参数无特殊要求。数据协定[ServiceContract]publicinterfaceISampleInterface{[OperationContract]System.Drawing.BitmapGetPicture(System.UripictureUri);[OperationContract]boolApprovePurchaseOrder(MyTypes.PurchaseOrderpo);}[Dat

5、aContract]publicclassPurchaseOrder{privateintpoId_value;[DataMember]publicintOrderId{get;set;}[IgnoreDataMember]publicintOrderPwd{get;set;}}数据协定:其他约束泛型或者自定义复杂嵌套类型必须成员全部能够被序列化时他本身才能够被序列化[DataContract]publicclassMyGenericType2{[DataMember]TtheData;}数据协定名称有时,客户端和服务不共享相同的类型。他们仍然可以将数据传递给对方,只要数

6、据合同是双方等效。完全限定的数据协定名称由命名空间和名称组成。数据成员只有名称,而没有命名空间。处理数据协定时,WCF基础结构对于命名空间以及数据协定和数据成员的名称区分大小写。数据协定名称数据协定命名采用同意资源标识符(URI)形式默认情况下是自己的命名空间名,但是可以通过设置DataContractAttribute的Namespace属性改写给定字段或属性的默认数据成员名称是该字段或属性的名称。若要重写默认值,请将DataMemberAttribute的Name属性设置为其他值。数据协定:等效性要使数据成员等效,其名称必须相同。此外,它们还必须表示同一类型的数据,也就是说

7、,其数据协定必须等效。如果同一端(发送方或接收方)存在两种类型,而其数据协定又不等效(例如,它们的数据成员不同),则不应为它们指定相同的名称和命名空间。否则,可能会引发异常。数据协定:等效性数据成员顺序和数据协定等效性使用DataMemberAttribute类的Order属性可能会影响数据协定等效性。其成员必须以相同顺序出现,数据协定才能等效。默认顺序是按字母顺序。继承、接口和数据协定等效性确定等效性时,对于从其他数据协定继承的数据协定,将被视为一个包含所有基类型的数据成员的数据协定。数据

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。