我正在测试我的WCF服务,我想向我的WCF服务发送两个(虚拟)并行请求。但是,我的InstanceMode = PerSession
并且它的方式很好,我不想改变服务行为。
但是,我的问题是 - 创建两个代理客户端对象是否强制执行单独的会话?或者是否还有其他事情需要通过不同的客户端会话发送这两个请求? 我创建了一个示例C#控制台应用程序来测试它:
MyService client = new MyService();
MyService client1 = new MyService();
client.GetResultsAsync();
client1.GetResultsAsync();
答案 0 :(得分:2)
遗憾的是,您的要求禁止使用可解决此问题的主要功能 - 即InstanceMode = PerCall
。
每WCF Service Behaviors - Instance and Concurrency Management:
使用InstanceMode = PerSession
和ConcurrencyMode = ConcurrencyMode.Single
的默认设置然后“很容易得出结论,每个客户端只有在每个客户端的一个线程上执行它自己的会话。”
每Programming WCF Services - 3rd Edition页面177:
“当客户端为配置为会话服务的服务创建新代理时,客户端将获得一个独立于同一服务的所有其他实例的新专用服务实例”