【发布时间】:2011-02-25 22:02:06
【问题描述】:
希望WCF 可以通过Throttling 在服务端进行范围实例化和并发管理。
我的服务客户端是一个ASP.NET 应用程序。它消耗多个WCF 服务,因此我在运行时创建并参数化WCF 客户端(不使用配置文件)。
只有端点地址是动态的,所有服务(客户端使用)具有相同的方法签名(相同的合约)。
出于这个原因,我通过Visual Studio 引用了该服务,它创建了我的服务代理,所以我只在运行时处理端点地址:
class MyWcfClient
{
void DoSomething(string endpintAddress, int data)
{
// Create 'binding' and 'endpoint' ('endpoint' address is dynamic)
ServiceReference.ServiceClient serviceClient = new ServiceReference.ServiceClient(binding, endpoint);
// Parametrize 'serviceClient'
// Call WCF method (send 'data' to appropriate endpoint)
serviceClient.CLose();
}
}
由于客户端是一个asp.net应用程序,每个请求都运行在自己的工作线程上(WCF方法调用非常轻快,所以线程不会长时间阻塞)。
我的问题是关于客户端的实例化和并发。
MyWcfClient 类应该是 Singleton 和一个 serviceClient 实例,还是应该是 static 类和一个新的 serviceClient 为每个调用创建?
我应该根据端点(有 10-100 个端点)创建serviceClient(即数组或列表)吗?
请注意,我的 asp.net 线程不应长时间阻塞(即在队列中等待通过WCF 发送其相关的data)
【问题讨论】:
标签: wcf concurrency client-side