广播或发布/订阅以更新数千名用户

时间:2011-06-16 09:44:23

标签: c# architecture client-server

我有一个客户端/服务器应用程序,需要使用一组状态信息使每个用户的应用程序保持最新。

通常会有多达1,000个并发用户,但未来可能会扩展到5,000或更高。

大约每10秒钟需要提供一次更新,以便用户对应用程序的查看永远不会过时。

哪种方法最好(这是一个.Net C#)应用程序?

  • “广播”机制,其中每个客户端“侦听”更新消息
  • 发布/订阅机制,其中每个连接的客户端告诉服务器每10秒向其发送一条消息
  • 客户端请求 - 每10秒钟,每个客户端请求当前数据

我继承的系统使用最后一种方法 - 并且不会扩展到所需的范围。

由于

3 个答案:

答案 0 :(得分:1)

我建议使用一种架构来实现NodeJS或.NET领域的某些东西,比如SignalR(还有其他的弹出,看看这里的项目

https://github.com/SignalR

和演示

http://chatapp.apphb.com

答案 1 :(得分:0)

查看observer pattern

这样 - 只有感兴趣的客户才能收听,发布商不会“DDoS”。

答案 2 :(得分:0)

专注于方法,我建议多播。在启动时,客户端必须为多播组注册自己,然后服务器将数据包发送到该多播组。通过这种方式,您可以减少因广播而产生的开销。其次,您可能会认真考虑在您的场景中进行线程化。使用单个线程处理数千个客户端不是一个明智的解决方案

您可以将此代码项目的article作为多播的示例