c#-4.0 - 在 Microsoft 堆栈上使用 Comet/XMPP 与 WebSocket 技术的实时 Web 通知和更新选项?

标签 c#-4.0 websocket comet asp.net-4.0 xmppframework

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

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

cometd 营:

  • Pokein
  • WebSync

  • WebSockets 阵营:
  • Kaazing
  • LightStreamer
  • SuperWebSocket
  • XSockets
  • SignalR

  • 由于现有的基础架构是 Microsoft 堆栈,因此我宁愿不将基于 Java 的服务器引入到组合中。说到这里,它留下了(一个非常有吸引力的)WebSync(Comet)和 SuperWebSocket(WebSockets)。然而,Pokein 的 DLL 集成也可以无缝集成到 .Net 项目中。

    .Net 是否有更多真正的生产级 WebSocket 计划?在 Microsoft 堆栈上采用 WebSockets 是否为时过早,我应该支持 Kazing 之类的东西吗?

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

    还有哪些需要考虑的事项?

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

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

    谢谢。

    更新

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

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

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

    主要要求是:
  • 能够实现回退技术(如果 HTML5/WebSockets
    不可用)
  • 高并发连接数和每条消息数
    第二个
  • 可扩展 - 能够为更大的规模添加额外的服务器/节点
    交通要求
  • 最佳答案

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

    在“正常”系统上,您应该看到~20k 并发(每个节点)和~100k 消息/秒。不过,这些数字非常粗略,因为它在很大程度上取决于您的系统和您发送的消息类型等。我们已经看到高达 50k 用户(每个节点)和(在不同的测试中)300k 消息/秒.

    (免责声明:我为冰山工作)

    关于c#-4.0 - 在 Microsoft 堆栈上使用 Comet/XMPP 与 WebSocket 技术的实时 Web 通知和更新选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9296466/

    相关文章:

    javascript - Firefox 有 WebSocket 消息限制吗?

    javascript - 如何从不支持 HTML5 的旧浏览器绑定(bind)到 Web 套接字服务器

    python - 有哪些用 Python 编写的现代 Comet 服务器?

    ajax - 定期Ajax POST调用与COMET/Websocket推送

    c# - 如何区分系统变量和自定义变量

    c#-4.0 - CultureInfo.Name 属性的最大长度

    javascript - Razor 内的脚本,无法使用 @ : 进行纠正

    c#-4.0 - C# powershell 输出读取器迭代器在管道关闭和处置时被修改

    node.js - WebSocket 握手响应 400,但仍然有效

    java - 使用 cometD 向服务器上的客户端发送消息