所以问题是WCF4是否调用客户端连接池到WCF服务?例如,我们将ASP .NET应用程序作为客户端和服务(在不同的机器上)。然后在代码的某处我们有类似的东西:
ServiceClient client = new ServiceClient();
// Here some work with service goes...
假设我们在两段代码中都有另一个服务调用:
ServceClient client2 = new ServiceClient();
// Another one processing...
那么从连接池获取client2连接吗?
答案 0 :(得分:15)
“汇集”取决于使用的传输协议。对于HTTP,WCF默认使用HTTP persistent connections,它们在短时间内存在(它们是closed after 100s of inactivity)并且可以被后续请求(甚至来自不同的代理实例)重用。对于TCP和命名管道,WCF提供built-in pooling。
答案 1 :(得分:2)
你为什么这样做? WCF可以通过ConcurrencyMode.Multiple
的一个客户端接受多个请求。因此初始化两个客户端没有多大意义..
WCF ServiceContract对此行为有三个重要的属性,
<强> InstanceContextMode 强>
<强> ConcurrencyMode 强>
<强> SessionMode 强>
我大部分时间使用InstanceContextMode.PerSession
(因为客户端1无法访问客户端2服务中的变量),ConcurrencyMode.Multiple
和SessionMode.Required
。
您还可以指定可以初始化的实例数,可以进行的并发调用数以及可以使用的会话数。