WCF behavior不同级别及类型总结

开发 开发工具
WCF behavior可以被看做是内部的附加操作。我们今天将会通过对其不同类型级别的介绍来详细分析一下这一操作的本质内容。

对于大多数开发人员来说,掌握一个开发工具的应用是一件非常重要的事情。那么WCF的出现,对开发人员来说又多了一个不错的选择。在这里我们先来为大家介绍一下WCF behavior的相关内容。WCF behavior,说白了,就是内部的附加操作。在效果上,有点像ASP.NET中的HttpModule和HttpHandle(实现原理当然不一样了)。#t#

在上面的例子中,我们为Service添加了附加的操作,就是在调用契约方法之前,把从Client传来的参数+1。我们还可以在Client端也添加类似的行为,我会在下一章中给出这个例子。

 

behavior在Service和Client分别有不同的类型:

在Service中,这些类型都存放在System.ServiceModel.Dispatcher命名空间下。

在Client中,这些类型都存放在System.ServiceModel.Channels命名空间下。
 

 

此外,可以在3个级别定义WCF behavior:

1.Contract级别,顾名思义,把行为加诸于接口(契约)之上,如下所示,也就是MyContractBehavior这个Attribute:

 

  1. [MyContractBehavior]  
  2. [ServiceContract]  
  3. public interface ISimple  
  4. {  
  5. [OperationContract(IsOneWay=true)]  
  6. void AcceptRequest(string someRequest);  

2.Endpoint级别,把行为加在终结点上,还记得上一篇文章的MyParameterInspector么,下面是code形式的添加(另一种是在配置文件中添加,稍后讨论):

 

  1. host.Description.Endpoints[0].Contract.Operations[0].
    Behaviors.Add(new MyParameterInspector()); 

3.Operation级别,把行为加在操作(契约的方法)上。这个级别是***的。如下所示,IdentityValidate和IdentityCache都是自定义行为。

 

  1. [ServiceContract]   
  2. public interface IIdentityService  
  3. {  
  4. [IdentityValidate]  
  5. [IdentityCache]   
  6. [OperationContract]  
  7. int GetIDByName(string name);  
  8. }  

根据我们的需要,在不同级别定义WCF behavior,它们的作用域不同,像Operation级别只影响一个方法,而Endpoint级别影响到这个终结点的所有操作,Contract级别则影响调用该契约的所有操作。
 

有5种类型的WCF behavior:

ParameterInspection

MessageFormatting

OperationInvoker

MessageInspection

OperationSelector
 

责任编辑:曹凯 来源: 博客园
相关推荐

2009-12-21 18:19:19

WCF地址类型

2009-04-21 13:47:34

2010-03-01 17:35:29

WCF协定

2010-08-27 09:29:40

CSSbehavior

2010-02-25 10:29:17

WCF Transac

2009-12-22 18:29:10

WCF适配器

2010-02-25 14:26:48

WCF特点

2010-02-24 12:49:39

WCF枚举

2009-11-05 10:37:58

WCF Address

2009-11-09 09:34:07

WCF集合

2010-02-22 16:09:33

WCF宿主

2010-02-23 14:24:50

WCF状态保存

2010-02-25 14:39:03

WCF术语

2009-11-09 10:43:51

WCF Web编程模型

2009-12-21 10:27:52

WCF基本概念

2009-11-05 14:13:33

WCF自承载

2010-08-04 17:33:39

DB2数据库

2010-02-23 13:46:37

WCF数据契约

2010-03-01 15:08:05

WCF单向操作

2010-02-26 13:34:50

WCF编码机制
点赞
收藏

51CTO技术栈公众号