我应该如何在ASP.NET 4中执行长时间运行的任务?

我正在使用.NET 4构建一个网站.有很多MSDN文章的历史可以追溯到2003, about using Thread objects2007, using Asynchronous Pages in .NET 2,但这些都非常陈旧.我知道.NET 4给我们带来了Task classsome people vaguely cautioning against its use for this purpose.

所以我问你,在ASP.NET 4中的IIS下运行后台/异步工作的大约2011年的“首选”方法是什么?关于直接使用Thread / Task有什么警告? Async = true还在流行吗?

编辑:好的,好的,从答案中可以清楚地看到,如果可以,我应该提供服务.但是在webapp中执行它的优势非常明显,尤其是更容易部署/重新部署.假设这个过程是安全崩溃的,那么,如果我在IIS中做这个,那么最好的方法是什么?

最佳答案
优选地,避免在这样的环境中执行长任务.

通过互操作性将长时间运行的任务委派给稳定的系统服务,使Web应用程序保持响应,并且仅对直接用户请求提出要求.

Web应用程序从来没有(现在仍然没有)被认为是可靠的系统 – 任何使用过浏览器的人都会遇到(至少)超时的问题;这种不便(对双方而言)不仅限于这种情况.当然,任何系统都可能崩溃,但是在一个系统内置这种事件的情况应该是完全特殊的.

Windows服务旨在长期运行,如果出现问题,您通常会比您的个人服务更担心.

转载注明原文:我应该如何在ASP.NET 4中执行长时间运行的任务? - 代码日志