在WCF中,有很多比较重要的基础知识,是需要我们初学者在学习的过程中加重注意的。今天,我们为大家介绍的就是其中一个比较重要的知识点,WCF并发模型的一些应用特点等。希望可以给大家带来以下帮助。#t#
公司主营业务:成都网站设计、成都网站建设、外贸网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联公司推出博湖免费做网站回馈大家。
ServiceBehavior.ConcurrencyMode 用于控制具体服务对象的并发行为。有三种模型:
Single: 默认方式。服务实例是 single-threaded,不接受重入调用(reentrant calls)。也就是说对于同一个服务实例的多个调用必须排队,直到上一次调用完成后才能继续。
Reentrant: 和 Single 一样,也是 single-threaded,但能接受重入调用,至于针对同一服务对象的多个调用依然需要排队。在 Single 模式下,当方法调用另外一个服务(Callback是客户端提供的服务)时,方法会阻塞,直到所调用的服务完成。如果方法不能重入,那么因无法接受所调用服务的返回消息(reply message),无法解除阻塞状态而陷入死锁(deadlock)。Reentrant 模式就是为了解决 Single 的这种不足,允许方法重入以完成处理过程。
Multiple: 和 Single、Reentrant 不同,Multiple 允许多个客户端同时调用服务方法。不再有锁的问题,同样也不再提供同步保障(synchronization guarantees)。使用此模式时,我们必须自行使用多线程同步机制(如使用 lock 关键字) 来保证数据成员的读写安全。
使用方式如下:
- [ServiceBehavior(InstanceContextModeInstanceContextMode =
InstanceContextMode.PerSession,ConcurrencyModeConcurrencyMode=
ConcurrencyMode.Single)]- public class SessionModeService : ISessionModeAllowed
- {
- .......
- }
我们可以看出,WCF并发模型和实例模型(Instance Context Mode)是配合使用的。下面简要的分析:
1、对实例模型为PerCall,任何并发模式都一样的效果,因为每次客户端的调用都是一个新的实例。
2、对实例模型为PerSession,由于服务端会保存客户端的会话状态,如果并发模型为Single,通信方式为双向通信(Duplex),服务端无法接受重入调用,就会产生死锁。所以在实例模式为PerSession,通信方式为双向通信(Duplex)下不能选择WCF并发模型为Single。
3、对实例模型为Single,由于服务端有且仅有一个服务实例,通信方式为双向通信(Duplex),同样会产生死锁。
网站题目:WCF并发模型应用特点简要评比
URL地址:http://www.csdahua.cn/qtweb/news11/517011.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网