WCF还是比较常用的,于是我研究了一下WCF单调服务,在WCF分布式开发必备知识(2):.Net Remoting这篇文章里我已经介绍过了Net Remoting相关的概念,其中也包括Net Remoting的激活方式SingleTon模式、SingleCall模式、客户端激活方式。
#T#其实WCF服务的激活方式也与此相似。服务激活方式也是WCF借鉴Net Remoting的一个明显的例子。Net Remoting相关的概念大家可以查阅WCF分布式开发必备知识(2):.Net Remoting这篇文章。 下面我们就来详细的介绍WCF服务激活类型相关的知识点。在这里拿出来和大家分享一下,希望对大家有用,首先来介绍的是WCF单调服务,
WCF支持三种实例激活的类型:
◆单调服务(Per-Call Service):每次的客户端请求分配一个新的服务实例。类似于Net Remoting的SingleCall模式;
◆会话服务(Sessionful Service):则为每次客户端连接分配一个服务实例。类似于Net Remoting的客户端激活模式;
◆单例服务(Singleton Service):所有的客户端会为所有的连接和激活对象共享一个相同的服务实例。类似于Net Remoting的SingleTon模式。
这里的服务激活模式是由我们定义的服务的上下文模式InstanceContextMode属性来配置的,其代码如下:
- public enum InstanceContextMode
- {
- PerSession,
- PerCall,
- Single
- }
WCF单调服务Call Service)
WCF单调服务(Per-Call Service):每次的客户端请求分配一个新的服务实例。服务实例的生存周期紧紧限制于一次调用的开始与结束之间。客户端的每次请求都会产生新的服务实例来响应这个调用。类似于Net Remoting的SingleCall模式。 执行步骤如下:
◆客户端调用代理,代理将调用转发给服务。
◆WCF创建一个服务实例,然后调用服务实例的方法。
◆当方法调用返回时,如果对象实现了IDisposable接口,WCF将调用IDisposable.Dispose()方法。
◆客户端调用代理,代理将调用转发给服务。
◆WCF创建一个对象,然后调用对象的方法。
单调服务的实例化模型图: