知识大全 WCF Data Contract Versioning
Posted 知
篇首语:一切节省,归根到底都归结为时间的节省。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 WCF Data Contract Versioning相关的知识,希望对你有一定的参考价值。
WCF中的Data Contract:WCF Data Contract Versioning 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
在系统开发过程中 通过对Data Type添加额外的字段进而对其进行扩展 是一个种很常见的场景 本部分就作中介绍Data Contract的这种变化 Service或者Client的Data Contract在本地添加一个新的Data Member会造成怎样的影响 WCF可以采用怎样的机制来解决这种单方面Data Contract版本的改变
我们同样通过Dome来说话 在这个Demo中 我使用上面介绍的Order Processing的场景 下面是整个Solution的结构(需要说明的是 本片文章提供的Code片断和Source Code都是基于VS 的)
Service端 Artech DataContractVersioning Service
Data Contract
using System;using System Collections Generic;using System Linq;using System Text;using System Runtime Serialization;
namespace Artech DataContractVersioning Service[DataContract(Namespace= )]public class Order[DataMember(Order = )]public Guid OrderIDget;set;
[DataMember(Order = )]public DateTime OrderDate get; set;
[DataMember(Order = )]public Guid SupplierID get; set;
Service Contract 和Service Implementation: Process方法简单地将Order对象返回到客户端 当Client接受到Service返回的Order对象后 可以检测和由它传递给Service的Order对象有什么不同
using System;using System Collections Generic;using System Linq;using System Text;using System ServiceModel;
namespace Artech DataContractVersioning Service[ServiceContract]public interface IOrderManager[OperationContract]Order Process(Order order);
namespace Artech DataContractVersioning Servicepublic class OrderManagerService:IOrderManagerIOrderManager Members#region IOrderManager Members
public Order Process(Order order)return order;
#endregion
Client端
Data Contract
[DataContract(Name= Order Namespace= )]public class CustomOrder[DataMember(Order = Name= OrderID )]public Guid OrderNo get; set;
[DataMember(Order = Name = SupplierID )]public Guid SupplierNo get; set;
[DataMember(Order = )]public DateTime OrderDate get; set;
Program 先创建一个Order对象 向Console打印出Order的信息 随后以此作为参数调用Service 最后将返回的Order对象的信息打印出来 看看两者之间的有何区别
namespace Artech DataContractVersioning Clientclass Programstatic void Main(string[] args)ChannelFactory
tryCustomOrder order = new CustomOrder OrderNo = Guid NewGuid()
SupplierNo = Guid NewGuid() OrderDate = DateTime Today
ShippingAddress= Room E Airport Rd # Suzhou
Jiangsu Province ;Console WriteLine( The original order: \\n order ToString());order = orderManager Process(order);Console WriteLine( \\n\\nThe order processed by service: \\n
order ToString());finally(orderManager as IDisposable) Dispose();
Console Read();
通过上面的分析 我们可以知道 尽管就CLR Type的定义来讲 Service端的Order和Client端的CustomOrder具有很大的差异 但是通过WCF Datacontract Attribute的适配 他们是相互匹配的现在我们在Client端为Custom添加一个新的成员 ShippingAddress 通过重写ToString方法
namespace Artech DataContractVersioning Client[DataContract(Name= Order Namespace= )]public class CustomOrder[DataMember(Order = Name= OrderID )]public Guid OrderNo get; set;
[DataMember(Order = Name = SupplierID )]public Guid SupplierNo get; set;
[DataMember(Order = )]public DateTime OrderDate get; set;
[DataMember(Order = )]public string ShippingAddress get; set; public override string ToString()return string Format( Order No \\t: \\nSupplier No \\t: \\nOrder Date:\\t:
\\nShipping Address: this OrderNo this SupplierNo
this OrderDate this ShippingAddress);
.NET编程免费提供,内容来源于互联网,本文归原作者所有。相关参考
知识大全 WCF Data Contract对Collection和D
WCF中的DataContract:WCFDataContract对Collection和D 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理
简介WCFDataContract的两个版本 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!中断式改
WCF中的DataContract:DataContract概览 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起
一起学WCF--wcf初识 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 最近想把有关WCF的内
WCFTips之WCF应用程序的程序集划分 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! WCF
ajax调用WCF服务 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 关于AJAX调用WCF服务
一起学WCF--数据契约 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 这一节我们来了解下WCF
浅析概括WCF自托管宿主 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 学习WCF时你可能会遇到
WCF的Web编程模型资源 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 自从WCF的Web编程
WCF通信简单示例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 今天写了一个WCFdemo给大