几年前,我开发了一个服务器应用程序(C#、.NET 4.0),它有多个连接到它的客户端。我这样做的方法是为每个连接创建一个线程,并维护这些连接的列表。当我测试这个应用程序时,它处理了全国 50 个客户的连接。它运行良好(据我所见)。
我的问题是:
- 对于可扩展的解决方案,多线程是处理与不同客户端的多个连接的可行解决方案,还是应该在同一个线程上处理所有连接?
- .NET 下的线程数和线程数是否有限制?
- 在 .NET 中使用线程有缺点吗?
我知道这有点模糊,但自从我前段时间开发这个项目以来,我已经忘记了一些更复杂的细节。我有兴趣为 .NET 中的服务器应用程序开发可扩展的解决方案,并且想从一开始就知道我之前的方法是否有改进的地方。
更新 1
我没有使用实例化的线程轮询。我实际上为一个方法创建了一个线程(我们称之为方法threadLife)。
在 threadLife 中,我有一个while(true)
声明,我在其中等待来自客户端的消息。在此期间,我会等待客户端发送一条消息(所以在我收到消息之前,这段时间被阻塞)
在我的应用程序中,连接非常稳定(即客户端将长时间保持连接),因此连接一直保持活动状态直到客户端断开连接(没有在每条消息后关闭连接,我会收到非常频繁的消息让我知道客户的状态)