5、消息请求和消息分发。

  信道分发器(ChannelDispatcher)和信道监听器(ChannelListener)以及终结点分发器(EndpointDispatcher)一起组成了WCF服务端的整个运行时框架体系。

1)、连接请求的监听:

  对于服务端来说,一个服务中可以有几个终结点,不用终结点可以共享相同的监听地址,WCF服务端是根据所有终结点的监听地址创建相同数量的信道分发器(ChannelDispatcher)对象,每个信道分发器拥有自己的信道监听器,分别监听对应终结点的监听地址,终结点分发器,是和终结点的数量匹配的,也就是说,比如服务端,可以创建2个信道分发器,3个终结点分发器,具体信道分发器接收到信息以后,如何去选择与之匹配的终结点分发器,这个叫做消息筛选(Message Filter)。

2)、消息分发:

  信道分发器进行消息的请求监听和消息接收,终结点分发器完成对消息的处理,信道分发器通过消息筛选找到对应的终结点分发器,消息筛选是借助于消息筛选器完成的,终结点分发器有两个消息筛选器,一个是地址筛选器另一个叫契约筛选器,分别对应着EndpointDispatcher的AddressFilter和ContractFilter属性,信道分发器接收到信息以后,会遍历自己的所有EndpointDispatcher列表,根据他们的地址筛选器和契约筛选器找对正确匹配的终结点分发器,两个筛选器里面通过Match方法进行匹配的。还有一个筛选优先级的属性FilterPriority属性,用于两个以上终结点分发器都匹配成功是,优先级高的终结点分发器会选用,如果都相同了,就会报异常。

posted on 2013-06-29 15:11  Kelly_HanShuai  阅读(124)  评论(0)    收藏  举报