【问题标题】:Poll the database from a web page? - ASP.NET从网页轮询数据库? - ASP.NET
【发布时间】:2010-01-06 23:22:33
【问题描述】:

这就是我想要做的。我有一个网站,允许用户提交在服务获取和处理的作业表中排队的请求。我在表中有一个状态列,表示请求是排队等待处理还是正在由服务处理,或者服务已完成处理请求。整个过程需要几分钟。

我有一个状态 ASP.NET 页面,我需要在其中实时显示他们请求的当前状态。我想显示某种动画并表示当前状态。我可以做到这一点的一种方法是每 x 秒刷新一次元 http 以检查请求的状态(我想这就是 Expedia、Priceline 等网站的做法?)

我想阻止可能的完整页面刷新并寻找 AJAX/JQuery 解决方案。我将如何实现这一点?轮询是正确的方法吗?

【问题讨论】:

    标签: .net asp.net ajax


    【解决方案1】:

    通过 AJAX 轮询对于您的需求来说是最简单和最简单的。如果您知道所需时间的上限和下限,那么我可能只会让动画运行这段时间,然后为特殊情况做点什么。

    其他人也这样做了:

    请参阅:http://news.ycombinator.com/item?id=946165http://www.chrisharrison.net/projects/progressbars/ProgBarHarrison.pdf

    【讨论】:

    • 您能否详细说明或指出如何实现此功能的代码示例?
    • 有关投票解决方案,请参阅:buntin.org/2008/09/23/jquery-polling-plugin 这是一个聊天应用程序,但可以轻松根据您的需要进行调整。
    【解决方案2】:

    您是否研究过对服务器的异步调用。这将允许您将调用放入服务器而不等待结果,当调用完成时,将触发一个事件,并触发客户端页面上的一个方法,这听起来像是您需要的,但您不会有要进行投票,这里有更多信息:

    http://msdn.microsoft.com/en-us/magazine/cc163725.aspx

    希望这会有所帮助。

    【讨论】:

    • 如果进程花费的时间比会话超时时间长,我会不会遇到超时?
    【解决方案3】:

    您可能想研究“长轮询”,也称为 Comet。

    这个想法是您从客户端发出异步 Ajax 请求。在服务器端,您将请求挂起,直到某些状态发生变化(以便它有新的东西要报告)。然后你释放请求,它会返回更新的信息。

    与纯轮询相比,这具有一个优势,即请求仅在发生更改时才返回。由于它主要由服务器端驱动,因此它也可能看起来更具响应性。

    【讨论】:

      【解决方案4】:

      如果您不希望网页在服务器上连续运行,轮询可能是最好的方法......

      但是,如果这不打扰您,那么您可能想看看 [similar answer] 我提出的另一个允许您动态更新页面的问题...浏览器似乎会继续“加载”页面直到完成。

      【讨论】:

        猜你喜欢
        • 2018-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-12
        • 2011-01-16
        相关资源
        最近更新 更多