知识大全 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 channelFactory = new ChannelFactory ( orderManager );IOrderManager orderManager = channelFactory CreateChannel();

  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)小编为大家搜集整理

知识大全 简介WCF Data Contract的两个版本

简介WCFDataContract的两个版本  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!中断式改

知识大全 Data Contract概览

WCF中的DataContract:DataContract概览  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起

知识大全 一起学WCF--wcf初识

一起学WCF--wcf初识  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  最近想把有关WCF的内

知识大全 WCF Tips之WCF应用程序的程序集划分

WCFTips之WCF应用程序的程序集划分  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  WCF

知识大全 ajax调用WCF服务

ajax调用WCF服务  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  关于AJAX调用WCF服务

知识大全 一起学WCF--数据契约

一起学WCF--数据契约  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  这一节我们来了解下WCF

知识大全 浅析概括WCF自托管宿主

浅析概括WCF自托管宿主  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  学习WCF时你可能会遇到

知识大全 WCF的Web编程模型资源

WCF的Web编程模型资源  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  自从WCF的Web编程

知识大全 WCF通信简单示例

WCF通信简单示例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  今天写了一个WCFdemo给大