【发布时间】:2012-01-17 20:36:09
【问题描述】:
我有一个 tcpclient 连接到发送 xml 查询和接收 xml 响应的后端系统。
后端要求客户端登录并设置一些环境设置,然后才能进行任何查询。这是一项代价高昂的操作,因此创建 tcpclient 并将其保持打开以进行重复查询是有意义的。
我被告知的后端已针对处理许多连接进行了优化,出于性能原因,我希望有许多 tcpclient 连接。
查询采用包含数千个项目的列表形式。
我的问题是如何最好地创建一组可重用的连接 tcpclients,这样我就可以从列表中执行多个同时请求(比如一次 10 个),哪种模式适合这种情况,有没有我可以学习的示例最佳实践?
目前它只是使用封装了连接和登录过程的单个服务一个一个地执行它们。
QueryService service = new QueryService(server, port, user, pass, params, app);
foreach(var item in queries)
{
service.ExecuteRequest(item);
}
service.Disconnect();
【问题讨论】:
-
您是否尝试过在并行 foreach 循环中使用 tcp 客户端的异步方法?
-
如标题所述,tcpclient处于同步阻塞模式。每个查询必须在后端发送响应之前发送一个结束序列。我不确定是否可以在底层套接字上进行异步读写?
标签: c# multithreading design-patterns task tcpclient