如何在同步阻塞模式下重用TcpClients
本文关键字:TcpClients 模式 同步 | 更新日期: 2023-09-27 18:20:48
我有一个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();
您需要的是线程池或对象池pattern。基本上,您可以创建一个Service
对象池,然后当客户端应用程序的任何元素(函数或对象)需要访问服务时,它可以根据一些标准引用服务对象。
要使此操作成功,您必须有一个无状态的请求,这样当选择任意服务对象向某个服务器发出请求时,历史记录就不会产生问题。