范群松 2009-11-05
到目前为止,对WCF了解的人越来越多,我也不是个例外,对它的体系结构我也是很了解的,下面的内容就是讲解WCF架构的。WCF为可靠性、事务、安全和实例激活等提供了极其宝贵的支持,所有这些都依赖于WCF基于拦截的架构。让客户端与代理交互意味着,WCF总是介于服务和客户端之间来拦截调用并且执行预调用和调用后处理。当代理把调用堆栈帧串行化为一条消息并且沿着一个通道链发送消息时,该解释即开始。
每一个客户端通道都要做消息的预调用处理。这个链的正确结构和组成在很大程度上依赖于绑定。例如,其中一个通道负责编码该消息(二进制,文本或MTOM),一个通道负责传递安全调用上下文,一个通道负责传播客户端事务,一个通道负责管理可靠的会话,一个通道负责加密消息正文(如果这样配置的话),等等。客户端的最后一个通道是传输通道,它负责把消息由经配置的传输传送到宿主。在宿主端,该消息也经过一个通道链,从而实现宿主端消息的预调用处理。在宿主端的第一个通道是传输通道,它接收来自传输的消息。随后的通道执行各种任务,例如解密消息正文、译解消息、把传播的事务设置到执行线程、设置安全主管、管理会话和激活服务实例。最后一个通道在宿主端把该消息传递到调度器。由调度器把该消息值的转换成一个堆栈帧并且调用服务实例。图描述了这一顺序。
图:WCF架构看上去的样子。