【WCF--初入江湖】08 并发与实例模式
08 并发与实例模式
1. 实例上下文模式
一个服务代理:servicePoxy
ChannelFactory<IService1> factoryservicel = new ChannelFactory<IService1>("BasicHttpBinding_Service"); IService1 servicePoxy = factoryservice.CreateChannel();
调用N次方法:
servicePoxy.GetData(3);
单调模式PerCall :IService1的实现类生成N个
会话(PerSession):IService1的实现类生成1个
单例(Single) :IService1的实现类生成1个
进一步测试说明:
单调模式PerCall :IService1的实现类生成个数=所有方法被调用的次数的综合
会话(PerSession):IService1的实现类生成个数=服务代理类实例对象个数
单例(Single) :IService1的实现类生成个数=永远是1个
1.1 实例上下文模式--单调模式PerCall
由于WCF的并发是针对某个封装了服务实例的InstanceContext而言的,
但是对单调的实例上下文模式,WCF服务端运行时总是创建一个全新的InstanceContext来处理每一个请求,
不管该请求是否来自相同的客户端。
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)] public class ServiceClass : IService1 { }
1.2 实例上下文模式--会话(PerSession)
在基于会话的实例上下文提供机制下,被创建出来封装服务实例的InstanceContext与会话(客户端或者服务代理)绑定在一起。
也就是说,InstanceContext和服务代理是具有一一对应的关系。
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)] public class ServiceClass : IService1 { }
1.3 实例上下文模式--单例(Single)
单例上下文实例模式,是指所有的客户端共享同一个服务实例的InstanceContext。
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)] public class ServiceClass : IService1 { }
2. 实例上下文模式--实例演示