我有一个连接到后端系统的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();
答案 0 :(得分:1)
您需要的是 thread pool 或 Object pool 模式。基本上,您可以创建一个Service
对象池,然后当客户端应用程序的任何元素(函数或对象)需要访问服务时 - 它可以根据某些条件引用服务对象。
要使此成功,您必须具有 state-less 的请求,以便在选择任意服务对象向某个服务器发出请求时 - 历史记录不应该产生问题。