.Net Remoting的激活方式也有三种:SingleTon模式、SingleCall模式、客户端激活方式,WCF服务实例激活类型包括三种方式:单调服务(Call Service),会话服务(Sessionful Service),单例服务(Singleton Service).他们之间有什么联系。WCF服务激活类型的优势和缺点,以及如何在项目里编程开发和设置服务实例。全文分为5个部分,首先一次介绍单调服务(Call Service),会话服务(Sessionful Service),单例服务(Singleton Service)的相关概念,优势和缺点,其次是示例代码分析和讲解部分,最后是全文的总结部分。结构如下:【1】单调服务(Call Service)【2】会话服务(Sessionful Service)【3】单例服务(Singleton Service)【4】示例代码分析【5】总结。最后会上传本文的代码。
【引言】:
在WCF分布式开发必备知识(2):.Net Remoting这篇文章里我已经介绍过了Net Remoting相关的概念,其中也包括Net Remoting的激活方式:SingleTon模式、SingleCall模式、客户端激活方式。其实WCF服务的激活方式也与此相似。服务激活方式也是WCF借鉴Net Remoting的一个明显的例子。Net Remoting相关的概念大家可以查阅WCF分布式开发必备知识(2):.Net Remoting这篇文章。 下面我们就来详细的介绍WCF服务激活类型相关的知识点。首先来介绍的是单调服务。
WCF支持三种实例激活的类型:
1>.单调服务(Per-Call Service):每次的客户端请求分配一个新的服务实例。类似于Net Remoting的SingleCall模式;
2>.会话服务(Sessionful Service):则为每次客户端连接分配一个服务实例。类似于Net Remoting的客户端激活模式;
3>.单例服务(Singleton Service):所有的客户端会为所有的连接和激活对象共享一个相同的服务实例。类似于Net Remoting的SingleTon模式。
这里的服务激活模式是由我们定义的服务的上下文模式InstanceContextMode
属性来配置的,其代码如下:
public enum InstanceContextMode
{
PerSession,
PerCall,
Single
}
【1】单调服务(Call Service):
【1.1】基本概念
单调服务(Per-Call Service):每次的客户端请求分配一个新的服务实例。服务实例的生存周期紧紧限制于一次调用的开始与结束之间。客户端的每次请求都会产生新的服务实例来响应这个调用。类似于Net Remoting的SingleCall模式。 执行步骤如下:
1.客户端调用代理,代理将调用转发给服务。
2.WCF创建一个服务实例,然后调用服务实例的方法。
3.当方法调用返回时,如果对象实现了IDisposable接口,WCF将调用IDisposable.Dispose()方法。
4.客户端调用代理,代理将调用转发给服务。
5.WCF创建一个对象,然后调用对象的方法。
单调服务的实例化模型图: