我们大家都知道WCF支持三种模式,不知道的没有关系,相信你通过本篇文章你会了解WCF模式的。单调和单例模式体现了两种极端的远程对象激活方式,而CAO则是一种相对折中的方式:一个客户端代理对象与一个远程对象一一匹配。WCF实例上下文模式与.NET Remoting的远程对象激活方式类似,同样具有三种不同的实例上下文模式,分别与上述三种激活方式匹配。这三种实例上下文模式分别是:单调(Per- Call)模式、会话(Per-Session)模式和单例(Single)模式。
1、单调(Per-Call)模式
#T#单调(Per-Call)模式.NET Remoting的SingleCall远程对象激活方式。如果采用单调实例上下文模式,对于每一个服务调用,不论是来自相同的客户端(服务代理)还是不同的客户端,WCF模式总是创建一个全新的服务实例和实例上下文对象来处理服务调用请求。在服务操作执行完毕,实例上下文对象和被封装的服务实例被回收调。图揭示了在单调模式下实例上下文、服务实例和服务代理之间的关联。
图单调模式下服务代理与服务实例上下文之间的关联
2、会话(Per-Session)模式
会话(Session)的目的在于保持来自相同客户端(即同一个服务代理)多次服务调用之间的状态。如果从消息交互的角度来讲,通过会话可以将来自相同客户端的多个消息关联在一起。在会话实例上下文模式下,WCF为每一个服务代理对象分配一个单独的服务实例上下文对象,对于来自相同服务代理的所有服务调用请求,都将分发给相同的服务实例上下文处理。会话模式与.NET Remoting下的CAO远程对象激活WCF模式类似,图3揭示了会话模式下实例上下文、服务实例和服务代理之间的关系。
模式下服务代理与服务实例上下文之间的关联
3、单例(Single)模式
单例模式意味着WCF为每个服务维护一个并且仅维护一个服务实例上下文。不论请求来自相同的服务代理还是不同的服务代理,处理服务调用请求都是同一个服务实例上下文对象。单例模式相当于.NET Remoting下的Singleton远程对象激活方式,图4揭示了单例模式下实例上下文、服务实例和服务代理之间的关系。
会话模式下服务代理与服务实例上下文之间的关联