WCF数据契约特性剖析
创始人
2024-06-23 07:20:14
0

WCF在开发领域中占据着一个比较重要的地位,我们可以通过本文介绍的关于对WCF数据契约的相关内容来详细了解一下这方面的相关知识。那么如何才能正确的应用这方面的知识来帮助我们实现功能需求呢?#t#

WCF数据契约就是采用一种厂商中立、平台无关的形式(XSD)定义了数据的结构,而WCF通过DataContractAttribute和DataMemberAttribute旨在给相应的类型加上一些元数据,帮助DataContractSerializer将相应类型的对象序列化成具有我们希望结构的XML。在客户端,WCF的服务调用并不完全依赖于某个具体的类型,客户端如果具有与服务端完全相同的数据契约类型定义,固然***。如果客户端现有的数据契约类型与发布出来数据契约具有一些差异,我们仍然可以通过DataContractAttribute和DataMemberAttribute这两个特性使该数据契约与之等效。

简言之,如果承载相同数据的两个不同数据契约类型对象最终能够序列化出相同的XML,那么这两个数据契约就可以看成是等效的数据契约。等效的数据契约具有相同的契约名称、命名空间和数据成员,同时要求数据成员出现的先后次序一致。比如,下面两种形式的WCF数据契约定义,虽然它们的类型和成员命名不一样,甚至对应成员在各自类型中定义的次序都不一样,但是由于合理使用了DataContractAttribute和DataMemberAttribute这两个特性,确保了它们的对象最终序列化后具有相同的XML结构,所以它们是两个等效的数据契约。

  1. [DataContract(Namespace = "http://www.artech.com/")]  
  2. public class Customer   
  3. {   
  4. [DataMember(Order=1)]   
  5. public string FirstName   
  6. {get;set;}   
  7. [DataMember(Order = 2)]   
  8. public string LastName   
  9. { get; set; }   
  10. [DataMember(Order = 3)]   
  11. public string Gender   
  12. { get; set; }   
  13. }   
  14. [DataContract(Name = "Customer", Namespace = "http://www.artech.com/")]   
  15. public class Contact   
  16. {   
  17. [DataMember(Name = "LastName", Order = 2)]   
  18. public string Surname   
  19. { get; set; }   
  20. [DataMember(Name = "FirstName", Order = 1)]   
  21. public string Name   
  22. { get; set; }   
  23. [DataMember(Name = "Gender", Order = 3)]   
  24. public string Sex   
  25. { get; set; }   

WCF数据契约版本的差异最主要的表现形式是数据成员的添加和删除。如何保证在数据契约中添加一个新的数据成员,或者是从数据契约中删除一个现有的数据成员的情况下,还能保证现有客户端的正常服务调用(对于服务提供者),或者对现有服务的正常调用(针对服务消费者),这是数据契约版本控制需要解决的问题。

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
范例解读VB.NET获取环境变... VB.NET编程语言的使用范围非常广泛,可以帮助开发人员处理各种程序中的需求,而且还能对移动设备进行...
规避非法攻击 用好路由器远程管... 单位在市区不同位置设立了科技服务点,每一个服务点的员工都通过宽带路由器进行共享上网,和单位网络保持联...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...