整个WCF框架由两个基本的层次构成,即服务模型层和信道层。对信道层的扩展主要通过针对绑定的扩展实现,具体来说就是自定义绑定元素,以及相关的信道管理器(信道监听器和信道工厂)、信道来改变对消息的处理和传输方式。

而对于服务模式型层的扩展则主要体现服务端和客户端运行时框架的定制,进而让WCF按照我们希望的方式进行运作。由于整个运行时框架由一系列的可扩展组件构成,并且大部分运行时属性也可以改写,所以针对服务模型层的扩展具体体现在:根据具体的需要定义相应的组件,并以某种情形将这些自定义的组件应用到运行时框架相应的地方,或者按照我们希望的方式定制相应的运行时属性。

而WCF为我们提供两种典型的应用自定义组件或者修改运行时属性的形式,即通过定义相应的行为(服务行为、终结点行为、契约行为和操作行为)和自定义ServiceHost,我们也把它们称为WCF的两种扩展形式。我们先来介绍WCF的四大行为。

作为最为常用的扩展方式,WCF的四大行为的使用主要体现在两个方面:其一、WCF自身提供的很多特性和功能是通过行为的方式来实现的;其二、作为使用WCF的应用,可以通过自定义的行为来实现解决具体问题的扩展。

根据应用目标的范围的不同,WCF具有四种类型的行为:服务行为、终结点行为、契约行为和操作行为,它们的名称体现了行为本身的作用范围。对于WCF的这四种行为,读者肯定不会感到陌生。因为WCF提供的很多功能和特性都是通过相应的行为来实现的。不过,为了让读者对行为的本质有一个深刻的认识,能够帮助读者能够选择正确的行为类型来实现扩展,我们对WCF的四大行为作一个系统的介绍。

对于WCF的四种类型的行为,它们均具有各自接口。除了服务行为只是应用于服务端之外,终结点行为、契约行为和操作行为都可以同时应用于服务端和客户端。所以后者具有相同的方法定义。

interface IEndpointBehavior
   2: {
void AddBindingParameters(ServiceEndpoint endpoint, BindingParameterCollection bindingParameters);
void ApplyClientBehavior(ServiceEndpoint endpoint, ClientRuntime clientRuntime);
void ApplyDispatchBehavior(ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher);
void Validate(ServiceEndpoint endpoint);
   7: }
   8:  
interface IContractBehavior
  10: {
void AddBindingParameters(ContractDescription contractDescription, ServiceEndpoint endpoint, BindingParameterCollection bindingParameters);
void ApplyClientBehavior(ContractDescription contractDescription, ServiceEndpoint endpoint, ClientRuntime clientRuntime);
void ApplyDispatchBehavior(ContractDescription contractDescription, ServiceEndpoint endpoint, DispatchRuntime dispatchRuntime);
void Validate(ContractDescription contractDescription, ServiceEndpoint endpoint);
  15: }
interface IOperationBehavior
  17: {
void AddBindingParameters(OperationDescription operationDescription, BindingParameterCollection bindingParameters);
void ApplyClientBehavior(OperationDescription operationDescription, ClientOperation clientOperation);
void ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation);
void Validate(OperationDescription operationDescription);
  22: }

相关文章:

  • 2021-11-09
  • 2021-09-23
  • 2021-05-17
  • 2022-01-28
  • 2022-01-04
  • 2021-09-03
  • 2021-06-14
猜你喜欢
  • 2021-09-22
  • 2021-11-26
相关资源
相似解决方案