如何在同步阻止模式下重用TcpClients?

时间:2012-01-17 20:36:10

标签: c# multithreading design-patterns task tcpclient

我有一个连接到后端系统的tcpclient,它发送xml查询并接收xml响应。

后端要求客户端在进行任何查询之前登录并设置一些环境设置。这是一项昂贵的操作,因此创建tcpclient并保持打开以进行重复查询是有意义的。

后端我被告知已针对处理多个连接进行了优化,出于性能原因,我希望连接多个tcpclient。

查询采用包含数千项的列表形式。

我的问题是如何最好地创建一组可重用的连接tcpclient,这样我就可以从列表中执行多个同时发出的请求(比如一次10个),这种情况适合哪种模式,是否有任何我可以学习的例子最佳实践来自?

目前,它只是使用一个封装连接和登录过程的服务逐个执行它们。

QueryService service = new QueryService(server, port, user, pass, params, app);

foreach(var item in queries)
{
    service.ExecuteRequest(item);
}

service.Disconnect();

1 个答案:

答案 0 :(得分:1)

您需要的是 thread pool Object pool 模式。基本上,您可以创建一个Service对象池,然后当客户端应用程序的任何元素(函数或对象)需要访问服务时 - 它可以根据某些条件引用服务对象。

要使此成功,您必须具有 state-less 的请求,以便在选择任意服务对象向某个服务器发出请求时 - 历史记录不应该产生问题。