multithreading - asp.net mvc 3应用程序需要写一行,然后等待该行被更新,然后再更新UI

标签 multithreading asp.net-mvc-3 asynchronous

我正在研究MVC 3 Web应用程序(.NET Framework 4,IIS7),该应用程序充当基于某些传统技术构建的自定义ID打印机的前端。无需深入探讨细节,单击“打印”时,Web应用程序会将带有卡信息的行写入数据库并返回。然后,后端的服务人员将接起该行并处理卡的实际打印。后端服务完成后,它将使用指示成功或失败的状态列更新该行。

现在,应用程序通过jQuery ajax POST数据,并且一旦将行写入数据库, Controller 就会返回成功并显示给用户。由于我已经描述了设置,因此这可能会或可能不会实际反射(reflect)现实,因为服务或证卡打印机可能会出现问题。

我们有一个新要求,即根据服务对行的更新,使UI“等待”更新成功或失败。它已经通过jquery ajax调用以异步方式在客户端设置,并且我不担心在前端处理它。我已经看过SignalR之类的东西,并且涵盖了这部分。

我正在寻找的是有关如何在Web服务器端正确处理的信息(链接和文章,而不是解决方案)。我不想阻止从早期请求中定期轮询数据库时要打印的传入请求。从高层次上讲,我想知道最好的方法是设置 Controller 和必要的后台进程,这将:

  • 接受请求并将行写入数据库
  • 设置后台轮询过程,然后将控制权返回给ASP.net
  • 如此频繁地轮询数据库,直到更新行(或达到超时)为止
  • 向客户端返回答案

  • 我不是线程专家,但是如果做得不正确,我足够知道我处于危险境地。任何帮助是极大的赞赏。

    最佳答案

    我会发表评论,但是我没有足够的代表。

    为什么将重点放在将服务器推送到UI上?您说表单将行写到数据库中,然后在屏幕上显示“成功”,这可能不是真实状态。在打印过程中的任何时候,您都可以查询数据库并找到最新状态吗?

    有什么阻止您让UI每X秒用最新状态更新页面的一部分吗?让UI提取信息,而不是由服务器将其推出。

    我有一个页面,显示来自数据库的日志记录。每天都有一个过程开始,它将更多的记录写入日志,并且具有自动刷新功能来监视该过程非常有用。
    在该页面上,我有一个Ajax表单,该表单向 Controller 发出请求,该 Controller 在局部 View 中输出一个新表。该局部 View 被放入Ajax表单的UpdateTargetId中。对于自动刷新,我利用javascript setInterval()函数每X秒提交一次Ajax表单。还可以指定其他回调,例如OnSuccess,您可以在其中检查特定的返回条件。

    AjaxOptions class for Ajax.BeginForm

    Example form

    setInterval() from w3schools

    关于multithreading - asp.net mvc 3应用程序需要写一行,然后等待该行被更新,然后再更新UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14530301/

    相关文章:

    java - 使用信号量的监控程序在java中无法按预期工作

    c++ - 函数静态变量析构函数和线程

    java - 如何限制创建的线程数并等待主线程直到任何一个线程找到答案?

    asp.net-mvc - RedirectToAction 后 ViewBag 为 NULL(+ ViewBag 重新初始化)

    c# - SendToAsync 内存泄漏?

    java - 从 SurfaceView 创建类时出错,该类将作为线程运行

    asp.net-mvc - 使用 FluentValidation 根据类型更改验证

    mysql - 在 ASP.NET MVC 3 中使用 MySQL 数据库的 Linq,将 DateTime 存储到变量中

    java - vertxexecute阻止不同的行为

    java - 使用 EJB 异步方法的正确方法