使用线程管理连接池的最佳方法是什么?

时间:2009-09-25 22:45:08

标签: c# wcf multithreading

我做了大量的搜索,但找不到有关此主题的任何内容。

我们有一个进行数据处理的telnet服务器。登录telnet有开销(时间),所以我想做的是有一个服务(WCF),它产生n个连接并充当应用程序/请求和服务器之间的代理。

所有这些连接都已成功登录到服务器并准备发送命令。应用程序可以将命令发送到此服务以发送到服务器,然后从此服务接收数据。如果请求数多于连接数,则这些请求将排队。

我知道如何使用线程和事件,但我如何知道将数据返回到哪个请求? LEt说有9个活动请求正在运行,我怎么知道返回的数据属于哪个请求?

我很感激任何可以引导我走向正确方向的指针。

我正在使用C#编程

2 个答案:

答案 0 :(得分:1)

我不是简单地编写WCF服务,而是考虑为内部处理池的Telnet编写WCF绑定。编写绑定来处理传输和通道级别的东西,例如连接池,是解决WCF问题的适当方法。您将以这种方式获得更大的灵活性,特别是能够编写重用您的telnet绑定的多个服务。

我可以进入很多细节,但这可能会产生一个非常大的答案。相反,我将提供以下链接,并通过电子邮件提供您需要的任何其他帮助。当WCF被误用时,它可能会变得毛茸茸而复杂,但是当它被正确使用时,它可以是一个非常优雅和强大的通信工具。

答案 1 :(得分:0)

如果您对Enterprise Services没有厌恶,则可以创建一个组件来处理与您可以配置为使用Enterprise Services对象池的telnet服务器的通信。

这将处理池对象的最小和最大数量以及对象创建超时,并且还将为您排队请求。唯一“棘手”的部分是确保您的telnet连接在您的池化对象中仍然有效。

或者,如果您希望与WCF保持更紧密的对齐,那么您可以实现自己的WCF池,如this Pooling Sample中所示。