在WCF中,有很多比较重要的知识内容,对于初学者来说要想全部掌握这些内容,还是需要先从基础知识开始学起。接下来我们先为大家介绍一下有关WCF单调服务的基本内容,以方便大家了解。#t#
【1.1】WCF单调服务基本概念
单调服务(Per-Call Service):每次的客户端请求分配一个新的服务实例。服务实例的生存周期紧紧限制于一次调用的开始与结束之间。客户端的每次请求都会产生新的服务实例来响应这个调用。类似于Net Remoting的SingleCall模式。 执行步骤如下:
1. 客户端调用代理,代理将调用转发给服务。
2. WCF创建一个服务实例,然后调用服务实例的方法。
3. 当方法调用返回时,如果对象实现了IDisposable接口,WCF将调用IDisposable.Dispose()方法。
4. 客户端调用代理,代理将调用转发给服务。
5. WCF创建一个对象,然后调用对象的方法。
【1.2】WCF单调服务开发配置:
单调服务开发配置十分简单,我们使用[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]配置服务属性完成。这样的WCF服务模式为单调模式,WCF框架对自动更具设置的属性来决定具体的服务激活类型。代码如下所示:
- [ServiceBehavior(InstanceContextModeInstanceContextMode=
InstanceContextMode.PerCall)]- public class WCFServicePerCall : IWCFService,IDisposable
- {
- }
【1.3】WCF单调服务在使用中需要注意:
(1)[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]特性只能应用到类上。
(2) 如果使用了昂贵的资源,如数据库连接等非托管资源,继承IDisposable接口, //实现接口定义的方法Dispose()方法显示释放资源。但是也有弊端,频繁地创建与销毁实例,仍然会对性能造成一定的影响。
(3)对于WCF服务而言,单调服务可以算是***的实例激活模式。 单调服务的一个最重要优势在于它能够节省资源,支持系统的可伸缩性。另外在事务编程与队列服务中优势更为明显,在事务编程中新建服务实例,减少实例状态的同步;而消息队列,单调服务能够建立服务实例与队列消息之间的简单映射。详细信息会在后续文章中介绍。