【发布时间】:2017-05-06 12:55:27
【问题描述】:
要求: 需要一个基于 Windows 服务的 C# .NET 4.5 始终(至少长)连接的 TCP 服务器架构,具有垂直和水平扩展,并且每个服务器可以处理最大可能的连接。客户端可以是任何 IoT(物联网)。
我知道端口的限制,但仍然想知道为什么在这个技术时代有这些限制(我们总是有限制,但为什么仍然是旧的?!)。临时 tcp/http 连接也可以很好地扩展,但在这里不是必需的。
设计:
每个服务器一个线程用于异步接受新连接(服务器的生命周期)。 代码:
rawTcpClient = await tcpListener.AcceptTcpClientAsync();每个客户端连接(循环)一个线程来保持客户端连接? (见下面我的问题)
用于执行客户端操作的任务(短期、间歇性
操作)
我关于优化的问题(如果可能?):
我如何优化/管理以将所有客户端连接保存在一组线程/线程池中,而不是每个连接一个线程,因为这是可能持续很长时间的客户端生命周期?
例如:每台服务器仅分配 50 个基于线程的任务来保持连接的客户端,这样它们就不会在等待客户端数据时断开连接?
【问题讨论】:
-
也许这仍然是 WCF 的一个用例..
-
WCF 正是这样做的。
-
而且你可能不应该使用那么多线程
标签: c# windows multithreading sockets tcp