长时间运行的任务-最佳实践-ASP.NET 4.0,C#

长时间运行的任务-最佳实践-ASP.NET 4.0,C#,c#,asp.net,ajax,web-services,C#,Asp.net,Ajax,Web Services,建议采用什么方法来处理执行时间较长的流程?我不想简单地在服务器上运行它,因为页面将超时 我浏览了网页,发现了多种方法——AJAX、线程、web服务。。。(这些我都没有经验) 处理这一问题的最佳实践方法是什么 谢谢。一种透明而可靠的方法是实现所需的任务以及作为Web服务处理队列。因此,在客户端,您可以简单地向Web服务器发送请求,并接收一些id作为回报,以便稍后检查结果 其他一切都取决于您试图实现的丰富用户体验。只需按一个按钮,用户就可以随时刷新控件或整个页面。或者实现基于ajax的控件,该控件可

建议采用什么方法来处理执行时间较长的流程?我不想简单地在服务器上运行它,因为页面将超时

我浏览了网页,发现了多种方法——AJAX、线程、web服务。。。(这些我都没有经验)

处理这一问题的最佳实践方法是什么


谢谢。

一种透明而可靠的方法是实现所需的任务以及作为Web服务处理队列。因此,在客户端,您可以简单地向Web服务器发送请求,并接收一些id作为回报,以便稍后检查结果


其他一切都取决于您试图实现的丰富用户体验。只需按一个按钮,用户就可以随时刷新控件或整个页面。或者实现基于ajax的控件,该控件可以自己发送请求并不时检查结果。

根据您的需求,您可以只设置一个Web服务(或者更准确地说,由于不推荐使用常规XML Web服务),如pukipuki所述


如果长时间运行的流程很复杂(步骤很多,非常密集,可能会转移到其他服务器),或者需要健壮(作业可能会失败,需要重试等),那么您可能需要研究使用某种形式的消息队列来控制执行长时间运行流程的服务的进出流。消息队列在某些情况下无疑是过火了,但它也是一个很好的框架,提供了消息存储、持久性和流控制,因此您不必自己构建它。是如何将MSMQ与ASP.NET结合使用的一个很好的概述(很抱歉,示例代码似乎是VB而不是C#)。

如果您只是尝试执行一项长期运行的任务,Windows服务非常适合于此。不,不是web服务,而是老式的Windows服务。当有人上传Excel时,Windows服务可以使用FileWatcher监视目录,然后自动执行导入过程。这样,您就不会将您的进程限制在ASP.NET和IIS工作进程上,这些进程可以出于各种原因进行回收。听起来你的应用程序真的需要在IIS之外。上载过程可以是一个简单的web前端,用于将文件放入Windows服务监视的目录。

谢谢您的回复。如前所述,我确实发现web服务是一种选择。我特别想知道这是否是最佳实践。一旦我知道它是,我会进一步研究它(我会使用新的Web API吗?)我的情况是,用户将上传大型excel文件到服务器,并将记录添加到数据库中。请看一下这一点: