在Microsoft堆栈上使用Comet/XMPP与WebSocket技术进行实时web通知和更新的选项



我正在研究一个项目的架构选项,该项目将呈现用户活动的实时更新(如Facebook)-登录、照片等。其中的两个主要UI组件是一个自动更新滚动区域,其中将列出新通知(照片等),以及一个工具栏,它将更新消息计数等内容。

这方面的竞争者是基于Jabber/Comet/XMPP和WebSocket技术。

彗星营地:

  • 扑克
  • WebSync

WebSockets阵营:

  • Kaazing
  • LightStreamer
  • SuperWebSocket
  • X插座
  • SignalR

由于现有的基础设施是一个Microsoft堆栈,所以我不想在混合中引入基于Java的服务器。这么说,它留下了(非常有吸引力的)WebSync(Comet)和SuperWebSocket(WebSockets)。然而,Pokin的DLL集成也相当无缝地集成到.Net项目中。

对于.Net,是否还有更真实的生产级WebSocket计划?现在在Microsoft堆栈上采用WebSockets还为时过早吗?我应该支持像Kazing这样的东西吗?

我仍在等待关于我们当前用户群的浏览器类型和版本的报告(检查HTML5兼容性)。我怀疑这个数字会很低(老用户群)。如果是这样的话,Comet选项将是赢家。

还有什么需要考虑的?

看看Sockets.IO和其他一些.Net计划,我认为这可能还处于起步阶段,无法应用于大规模生产系统。

我可以从使用过上面列出的任何技术和产品的人那里得到一些评论吗?

谢谢。

更新

我仍在寻找一些在生产级别上可靠的好的WebSocket服务器。在最近发现XSockets和SignalR后,我将它们添加到了Websockets阵营中。尽管如此,目前仍有两个主要竞争者。这可能只是因为他们拥有令人惊叹的优秀营销团队,为开发人员提供的好材料——API和视频。许多其他实现似乎仍处于新生阶段,其中给出了仅与少数客户端连接的示例。虽然这展示了该技术,但这些演示并没有用重要的有效载荷/负载容量数据进行备份。Kaazing和LightStreamer确实满足以下要求。

XSockets有一些很好的例子,但同样缺少一些真正的生产指标。

SignalR似乎还没有在真正的生产环境中进行测试。扩展解决方案正在开发中,但看起来还不稳定。期待看到这个项目在未来的表现。

主要要求是:

  1. 能够实现回退技术(如果HTML5/WebSockets不可用)
  2. 高并发连接数和每个第二
  3. 可扩展-能够为更大的交通需求

WebSync v4除了根据需要回退到长轮询/回调轮询之外,还使用WebSockets。WebSync中的WebSocket也都在标准HTTP端口上,所以路由器/过滤器墙等不会有任何问题。

在"正常"系统上,您应该看到大约20k并发(每个节点)和大约100k消息/秒。不过,这些都是非常的粗略数字,因为这在很大程度上取决于您的系统和您发送的消息类型等。我们已经看到(每个节点)高达5万用户,(在另一个测试中)每秒有30万条消息。

(免责声明:我在Frozen Mountain工作)

出于上述原因,我选择WebSockets。

如果你选择WebSockets,你也可以考虑Autobahn WebSockets——一种支持Windows的高性能WS服务器,它在IOCP(I/O完成端口)之上运行。

如果您想扩展到大的连接数(数十万),则后者非常重要。

免责声明:我是高速公路WebSockets的作者。基础技术是OSS。我们目前正在准备一个商业产品,一个作为虚拟设备(在VMware/sphere上运行)提供的实时消息中心。。完全集成的硬化器具。后者还允许您使用简单的旧HTTP/POST通过集线器推送通知。。它有一个REST API,允许您向通过WS连接的客户端进行调度。如果您对私有测试感兴趣,请与我联系。。

您似乎选择了最稳定的Comet实现。所有这些看起来都很稳定,每个节点可以容纳10到10万用户,甚至更多。

那么,下一步会是什么呢?例如,PokeIn将通过VisualJS.NET托管web应用程序的所有方面;视频-1、视频-2

这也展示了这个库的内置功能和你可以做的各种功能。

此外,最新版本支持客户端和服务器之间的消息Base64序列化,因此网络包上不再有裸露的JSON消息。

更新:PokeIn2.0内置WebSockets支持

与传统彗星解决方案相比,WebSockets的性能提升在多个数量级范围内;我肯定会加入WebSockets阵营。这是一个传统的comet供应商对这两种技术的比较,衡量出有利于WebSockets的因素超过了150倍(在50000个用户的情况下,700毫秒对3毫秒)。

代表Kaazing的几点注意事项:

Kaazing作为一个服务器平台在微软上得到了完全支持。此外,正如您所注意到的,Kaazing支持各种客户端库和技术,包括Microsoft堆栈:.NET和Silverlight,我们的许多客户都很乐意使用它们。

此外,Kaazing在WebSockets之上提供了丰富的业务协议,允许您直接在客户端代码中"说出"XMPP。

关于浏览器支持:Kaazing提供了非常好的WebSocket模拟,支持所有的浏览器,包括旧浏览器,一直到IE6。你可以在这篇博客文章中阅读更多关于它的信息。

关于成熟度:Kaazing WebSocket Gateway自2009年开始发货,在金融、物流、游戏和零售等多个行业拥有大量知名客户;非常成熟的平台,具有一流的支持。

SignalR获胜。

现在产品已经成熟,实施起来轻而易举。从本质上讲,它提供了那些价值数百万美元的软件包的成本,但没有足够的营销资金来展示一些非常酷的实现。

从技术角度来看,您可以使用SignalR完成相同的任务。如果你的技术人员另有建议,他们可能不知道如何在负载平衡环境中实现SignalR(甚至不知道如何单独实现)。

最新更新