ajax - ASP.Net Web API 中的消息队列

标签 ajax asp.net-mvc asp.net-web-api msmq polling

我正在使用 AngularJS 和 ASP.Net WebAPI 开发客户端单页应用程序 (SPA)。

SPA 的功能之一包括上传大型 CSV 文件,在服务器上对其进行处理,并将输出返回给用户。

显然,这种计算不能在线进行,因此我实现了一个 UploadController 负责接收文件,一个 PollingController 负责在计算完成时通知用户。

客户端应用程序每隔几秒钟监视一次 PollingController。

我没有消息队列方面的经验,但我的直觉告诉我,在这种情况下需要它们。

您建议如何以非阻塞、高效的方式实现此功能?

diagram

示例将受到高度赞赏

最佳答案

我过去曾为此使用过基于消息的服务总线框架。

您编写了一个应用程序(作为 Windows 服务运行),它监听通过事件总线广播的消息。

您的前端可以将这些消息发布到总线中。

.NET 中最流行的框架是 NServiceBus ,但它最近变得商业化。您也可以查看 MassTransit ,虽然这个文档很差。

您将执行的工作流程:

  • MVC 应用程序接受上传并将其放置到 Windows 服务可访问的某个目录中
  • MVC 应用程序发布“UploadReady”消息。
  • 服务接收消息、处理文件并更新轮询 Controller 的某些状态。
  • 轮询 Controller 监视此状态的变化。通常是 DB 记录等

  • 使用这样的框架的好处在于,如果您的服务出现故障,或者您重新部署它,任何处理都可以排队并恢复,因此您不会有任何停机时间。

    关于ajax - ASP.Net Web API 中的消息队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18569361/

    相关文章:

    javascript - 通过 Javavscript 将 DatePicker 值传递给 C# Controller

    asp.net - 使用 ClientId 和 ClientSecret 进行 Web API 授权

    ajax - 多个异步 jQuery AJAX POST 同时返回

    javascript - 如何加载从 Ajax 请求调用的 php 文件中的脚本?

    asp.net-mvc - 字符串模型,将值传递给 Controller ​​问题

    c# - 将安全问题推迟到应用程序开发周期的末尾是一种好方法吗?

    c# - 将二维数组发送到 Web API 服务

    jQuery 实时可拖动/实时可放置?

    javascript - 具有可变形式位置的 Ajax URL

    C# 向上/向下移动项目