WCF服务端运行时架构体系详解[下篇]
作为WCF中一个核心概念,终结点在不同的语境中实际上指代不同的对象。站在服务描述的角度,我们所说的终结点实际上是指ServiceEndpoint对象。如果站在WCF服务端运行时框架来说,终结点实际上指代的是终结点分发器(EndpointDispatcher)。而ServiceEndpoint与EndpointDispatcher是一一匹配的,并且前者是创建后者的基础。而终结点分发器具有自己的运行,即分发运行时(DispatchRuntime)。
目录
一、终结点分发器(EndpointDispatcher)
二、分发运行时(DispatchRuntime)
可扩展组件
认证与授权
服务实例上下文
会话关闭通知
同步上下文
消息检验
操作与操作选择
可扩展属性
授权
审核
事务与会话
未处理操作
SOAP ValidateMustUnderstand处理
并发控制
一、终结点分发器(EndpointDispatcher)
除了之前介绍的三个辅助信道分发器向匹配的终结点分发器实施消息路由的三个属性(AddressFilter、ContractFilter和FilterPriority)之外,你还可以通过属性ContractName和ContractNamespace得到服务契约的名称和命名空间,以通过EndpointAddress属性得到相应的终结点地址。将消息路由到该终结点分发器的信道分发器可以通过属性ChannelDispatcher获得。但是对于终结点分发器来说,其重要的还是通过属性DispatchRuntime表示的分发运行时。
1: public class EndpointDispatcher
2: {
3: //其他成员
4: public string ContractName { get; }
5: public string ContractNamespace { get; }
6:
7: public MessageFilter AddressFilter { get; set; }
8: public MessageFilter ContractFilter { get; set; }
9: public int FilterPriority { get; set; }
10:
11: public ChannelDispatcher ChannelDispatcher { get; }
12: public DispatchRuntime DispatchRuntime { get; }
13: public EndpointAddress EndpointAddress { get; }
14: }
二、分发运行时(DispatchRuntime)
毫不夸张地说,终结点分发器的分发运行时是WCF整个服务端运行时架构体系的核心,同时也是对WCF服务端服务模型进行扩展重点考虑的对象。分发运行时之所以具有如此重要的地位,原因在于:终结点分发器接收到从信道分发器路由的消息的整个处理是在分发运行时中进行的。
和上面分析信道分发器一样,我们首先来看看分发运行时具有哪些可扩展的组件。终结点的分发运行时对应的类型为DispatchRuntime。下面的代码片断列出了这些扩展组件在DispatchRuntime中的对应的属性定义。
1: public sealed class DispatchRuntime
2: {
3: //其他成员
4: public ServiceAuthorizationManager ServiceAuthorizationManager { get; set; }
5: public ServiceAuthenticationManager ServiceAuthenticationManager { get; set; }
6: public RoleProvider Ro
相关新闻>>
- 发表评论
-
- 最新评论 更多>>