有两种方式可以扩展WCF:定制行为、定制绑定。行为用来控制内部的通信方法,绑定元素用来创建控制外部通信方法的信道。具体来讲,在WCF的客户端,行为用来修改某些组件的操作,这些组件主要负责将发送的数据序列化在消息中,以及反序列化响应;在WCF的服务端,行为用来修改调度器组件(dispatcher)的功能。(以上为《WCF3.5揭秘》中的原话)
定制行为的类型包括操作选择器、参数检查器、消息格式器、消息检查器四种。操作选择器返回处理消息的操作;参数检查器可以修改调用的参数;消息格式器负责将接收的消息反序列化以及将要发送的消息序列化;消息检查器可以在消息通过终结点的时候操作和修改消息。
根据以上描述,我们可以确定如果要拦截WCF消息,可通过定制行为扩展WCF来实现,并可根据需要选择需要定制行为的类型。
定制行为的实现分三步:
1、声明(实现对应类型的接口)
2、附加(可以将行为附加到操作(实现IOperationBehavior)或终结点(实现IEndpointBehavior))
3、告知(使用代码或配置文件告知WCF)