fyf

posts - 8, comments - 0, trackbacks - 0, articles - 0
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

公告

2009年4月17日

      wcf中客户端和服务之间的数据交换需要一定的规则,这种规则就是契约。契约是与平台无关的,独立于平台。

      契约分为四种:

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

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

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

      一般情况下,我们用接口(Interface)来定义服务契约(Service Contract)。虽然我们也可以使用 Class,但使用接口的好处更明显一些。

      • 便于契约的继承,不同根的类型可以自由实现相同的契约。 

      • 同一服务类型可以实现多个契约。

      • 和接口隔离原则相同,我们随时可以修改服务类型。

      • 便于制定版本升级策略,让新老版本的服务契约同时使用。

 

以下是相关特性参数的简单说明。
ServiceContract

      • ConfigurationName: 其设置信息在配置文件中的名称。

      • Name / Namespace:自定义该服务契约的名称和命名空间。建议设置服务契约的 Name 和 Namespace,这样生成的客户端的代理文件会使用自定义名称来命名相关代理类型,即便我们日后对服务器端的契约名称进行重构也不会影响到客户端。

      • SessionMode:设置服务契约的 Session 方式,包括 Allowe、NotAllowed、Required。SessionMode 需要相应的 Binding 支持,默认情况下会自动启用,另外我们还会和 ServiceBehaviorAttribute.InstanceContextMode 配合使用来管理服务对象的生命周期。

      • CallbackContract:设置 duplex 模式时的回调类型。

      • ProtectionLevel:指定消息保护方式,可以对消息进行加密和签名处理。

OperationContract

      • AsyncPattern:用于定义异步服务方法。

      • IsInitiating:指示服务方法能否启动一个 Session。

      • IsTerminating:指示服务方法调用完成是否结束 Session。 

 

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

      数据契约也分为两种:DataContract和DataMember.

      DataContract用于类或者结构上,指示 WCF此类或者结构能够被序列化并传输,而DataMember只能用在类或者结构的属性(Property)或者字段(Field)上,指示WCF该属性或者字段能够被序列化传输。

      以下是相关特性参数的简单说明。

DataContract

      • Name / Namespace:自定义名称和命名空间。

DataMember

      • Name:自定义名称。

      • IsRequired:指示该成员序列化前必须被赋值。

      • Order:指定序列化后的排列位置

 

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

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

 

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

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

posted @ 2009-04-17 14:25 fyf 阅读(57) 评论(0) 编辑

1.什么是wcf?     

      Windows Communication Foundation (WCF) 是一个运行库和一组 API,wcf提供服务与客户端之间发送消息的运行环境。 设计 WCF 的目的是为分布式计算提供可管理的方法,广泛的互操作性,并为服务定位提供直接的支持。在 WCF 的第一个版本(first release)中包含了许多实用功能,比如宿主(hosting)、服务实例管理(service instance management)、异步调用(asynchronous calls)、可靠性(reliability)、事务管理(transaction management)、离线队列调用(disconnected queued calls)、安全(security)等等。

2.wcf术语

       • 消息

            消息是一个独立的数据单元,它可能由几个部分组成,包括消息正文和消息头。

      • 服务

            服务是一个构造,它公开一个或多个终结点,其中每个终结点都公开一个或多个服务操作。

      • 终结点(endpoint)

             终结点是用来发送或接收消息(或执行这两种操作)的。终结点定义一个消息可以发送到的目的地的位置(地址)、一个描述消息如何发送的通信机制规范(绑定)以及对于可以在该位置发送或接收(或两者皆可)的一组消息的定义(服务协定)。

            WCF 服务作为一个终结点集合向外界公开。

3.客户端与服务

      • 服务器端:

            定义和实现服务契约。

            为服务类型构建ServiceHost 实例,暴露endpoints。

            打开通讯通道.。

      • 客户端: 

            需要服务契约的一个副本和关于endpoints的信息。

            为特定的endpoint构建通信通道并且调用操作 。

  

 

参考资料:http://msdn.microsoft.com/zh-cn/library/ms731079.aspx

              http://www.microsoft.com/china/msdn/events/webcasts/shared/webcast/Series/wcf.aspx

 

 

posted @ 2009-04-17 11:28 fyf 阅读(57) 评论(0) 编辑