ChannelDispatcher根据消息进行EndpointDispatcher的选择的机制称为消息筛选(MessageFilter)。消息筛选依赖于EndpointDispatcher两个重要的对象:AddressFilter和ContractFilter,它们分别实现基于终结点地址和服务契约的消息筛选。
相关类图如下:
在默认情况下,EndpointDispatcher的AddressFilter和ContractFilter分别采用EndpointAddressMessageFilter和ActionMessageFilter。如果希望使用其它的值,可以通过自定义Behavior的形式覆盖默认的值。对于AddressFilter。最直接的方式就是通过ServiceBehaviorAttribute的AddressFilterMode属性指定所需要的MessageFilter模式。
AddressFilterMode中的3个枚举值(Exact,Prefix和Any)对应的MessageFilter分别为:EndpointAddressMessageFilter、PrefixEndpointAddressMessageFilter和MatchAllMessageFilter。