我需要实现一个客户端服务器架构,其中服务器通过互联网向许多客户端发送相同的消息。我需要大约每 5 分钟发送一条消息。消息不会超过 5KB。我需要将解决方案扩展到连接的大量客户端(50.000-100.000)
我考虑了一堆解决方案:
TCP 套接字
UDP组播
WCF http 双工服务(彗星)
我认为我必须放弃 UDP 解决方案,因为它仅适用于同一网络上的客户端,并且无法在 Internet 上运行。我在某处读到,如果我连接了许多客户端,WCF 多播会导致瓶颈,但我找不到任何显示性能统计信息的文档。Tcp 套接字在我看来是选择的解决方案。你有什么想法?我对么?
当我说 UDP 在互联网上不起作用时,我肯定是错的……我之所以这么想是因为我读了一些文章,指出您需要在网络中正确配置路由器以支持多播……我读到了 udp 端口多播范围,并认为它是本地的。相反,可以通过 Internet 访问范围 224.0.0.1 - 239.255.255.255(D 类地址组)
考虑到在我的情况下可靠性不是关键点,udp 多播是一个不错的选择。.net 框架提供了非常有用的类来实现这一点。我可以轻松地启动 UdpClient 并使用两行代码开始在多播地址上发送数据。在客户端,这真的很容易。有一个 UdpSingleSourceMulticastClient 类正是我需要的。对于可靠性和安全性,.net 框架有一种智能且简单的方法来处理 DoS 攻击、DNS 重新绑定攻击和 Revers 隧道攻击,如下所述:http: //msdn.microsoft.com/en-us/library/ee707325 (v=vs.95).aspx