并发性
当多个线程同时访问相同的资源时,将产生并发问题
wcf服务缺省会保护并发访问
通过设置并发模型
在Persession和single的时候的起到很大作用,但是在业务逻辑层和数据访问层对象还需要其他的多线程保护
3种并发性模式(ConcurrencyMode枚举在ServiceBehaviorAttribute中设置)
Single(默认)
Reentrant
Multiple
吞吐量:在单位时间内,wcf能够处理客户端请求的数量
Single并发与PerCall
对于PerCall服务,每个线程都将分配新的服务实例
不会产生并发性问题
Single模式不会对吞吐量产生影响
可以处理并发访问
Single并发与Perssion
对于PerSession服务,会保护服务实例不会受到多线程客户端的影响
Single模式对单一客户客户端的吞吐量产生影响。
说明:如果同一客户端的2个线程同时对调用服务,那么一个线程可以执行,另一个线程则处理等待状态
多个客户端可以并发访问
可以处理多个并发访问
Single并发与单件(Singleton)
对于单件服务,保护服务实例不会受到任何并发访问的影响
single模式会对单件的吞吐量产生很大影响
多线程和多客户端无法进行同时的并发访问
Reentrant并发模式可重入的单线程模式
Reentrant模式主要用于当服务发起回调到客户端时的场景
当回调操作不是one-way的操作
服务在退出时释放锁以发起回调操作
使得另一个线程能够获得锁,从回调返回的线程会进入队列
Mutiple并发模式
Mutiple并发模式比Single并发模式可以更细粒度的处理敏感代码段