在我的Web应用程序中,有一个进程可以查询来自整个Web的数据,对其进行过滤并将其保存到数据库中.你可以想象这个过程需要一些时间.我目前的解决方案是增加页面超时并在加载时为用户提供AJAX进度条.这是一个问题有两个原因 - 1)它仍然需要很长时间,用户必须等待2)它有时仍然超时.
我已经涉足到线程化过程并且已经读过我应该异步将它发布到Web服务("Fire and forget").
我读过的一些参考文献:
- MSDN
- Fire and Forget
所以我的问题是 - 什么是最好的方法?
更新:在用户输入数据后,我想将它们重定向到结果页面,该页面随着进程在后台运行而逐步更新.
为了避免过多的架构天文学,我经常使用隐藏的iframe来调用长时间运行的进程并流回进度信息.与jsProgressBarHandler类似,您可以非常轻松地为较长的任务创建出色的带外进度指示,其中通用进度动画不会削减它.
在您的特定情况下,您可能希望每个任务使用一个LongRunningProcess.aspx调用,以避免这些页面超时.
例如,调用LongRunningProcess.aspx?taskID = 1将其启动,然后在该任务结束时,发出一个
document.location = "LongRunningProcess.aspx?taskID=2".
广告恶心.