• WCF契约Contract


    在WCF中,契约分为四种,它们分别为:

    1. 用于定义服务操作的服务契约:Service Contract

      这种级别的契约又包括两种:ServiceContract和OperationContract

      ServiceContract用于类或者结构上,用于指示WCF此类或者结构能够被远程调用,而OperationContract用于类中的方法(Method)上,用于指示WCF该方法可被远程调用。

    2. 用于自定义数据结构的数据契约:Data Contract

      数据契约也分为两种:DataContract和DataMember.DataContract用于类或者结构上,指示 WCF此类或者结构能够被序列化并传输,而DataMember只能用在类或者结构的属性(Property)或者字段(Field)上,指示WCF该属性或者字段能够被序列化传输。

    3. 用于自定错误异常的异常契约:Fault Contract

      FaultContract用于自定义错误异常的处理方式,默认情况下,当服务端抛出异常的时候,客户端能接收到异常信息的描述,但这些描述往往格式统一,有时比较难以从中获取有用的信息,此时,我们可以自定义异常消息的格式,将我们关心的消息放到错误消息中传递给客户端,此时需要在方法上添加自定义一个错误消息的类,然后在要处理异常的函数上加上FaultContract,并将异常信息指示返回为自定义格式。

    4. 用于控制消息格式的消息契约:Message Contract

      简单的说,它能自定义消息格式,包括消息头,消息体,还能指示是否对消息内容进行加密和签名。

     WCF作为一种能够跨平台的体系框架,其应用肯定会有异构,异网的情况发生,那么作为通讯依据的契约能否自动适用于上述情况呢?答案是肯定的,契约是独立于平台之外的,它只约束通讯的双方应该遵守什么样的规则,而丝毫不管双方各自采用的是什么样的技术和什么样的操作系统,也只有这样,WCF才能有真正的生命力。

    如果非要拿契约和以往的技术相比较的话,契约和asp.net xml web service的声明性编程模型甚是相似,比如在web service中在类上标记WebServiceAttribute便可以将此类用于远程调用,而将方法添加WebMethondAttribute也可以将其暴露给远程客户端,这和WCF中的ServiceContract和OperationContract简直如出一辙,但不同的是,WCF中的契约要比Xml Web Service中的要详尽的多,比如ServiceContract和OperationContract可以直接使用在接口上面,而实现该接口的类就继承了这种契约声明,自动拥有契约所规范的动作和行为,这就使得程序员更方便的使用面向接口的编程方式,可以使同一服务拥有不同的实现,在新旧版本升级的同时,能够使新老版本共同运行。

    摘自:http://www.cnblogs.com/jillzhang/archive/2008/01/28/1055846.html ,再次感谢作者张玉彬。

    另不错的阅读文献:http://msdn.microsoft.com/zh-cn/library/ms734712(v=VS.100).aspx   再次强调MSDN,是个“好老师”!

     

     

  • 相关阅读:
    [io PWA] keynote: Launching a Progressive Web App on Google.com
    hdu 4491 Windmill Animation
    BNU Concentric Rings
    Android 如何去掉手机中横竖屏切换时的转屏动画?
    IOS NSString 用法详解
    MySQL有关1042 Can’t get hostname for your address的问题分析解决过程
    网站出现问题时,站长该如何解决
    [置顶] IOS用CGContextRef画各种图形(文字、圆、直线、弧线、矩形、扇形、椭圆、三角形、圆角矩形、贝塞尔曲线、图片)
    具备这5点因素,你就是一名合格的网络编辑
    IOS 新消息通知提示-声音、震动
  • 原文地址:https://www.cnblogs.com/angleSJW/p/2185207.html
Copyright © 2020-2023  润新知