在ASP MVC中运行大量重要的后台任务?

时间:2016-08-15 09:51:39

标签: c# asp.net asp.net-mvc

我正在尝试构建一个调度程序,这是我想要实现的功能:

  • 大约100多个任务,具有不同的执行时间,具体取决于时间表
  • 如果初始执行失败,任务将在5分钟后重新执行。

我不知道如何实现它,但我最初的想法是使用缓存过期回调,但我不确定它是否是一个最佳解决方案,因为我可能运行的任务对我的应用程序至关重要。我希望它健壮但我不知道从哪里开始。

任何好的图书馆/技术都可以让我实现我想要的目标吗?

2 个答案:

答案 0 :(得分:2)

ASP.NET并不是最适合此类任务的,相反,您最好使用Windows服务来执行预定的工作。

不是重新发明轮子来构建一个调度程序,或者讨厌那些几乎无法调试和使用的恼人的Windows服务项目,我建议你看看Topshelf和漂亮的{{ {3}}项目;后者专门用于安排。

Topshelf解决了构建,调试和安装Windows服务的麻烦,这是一个很好的途径来做这类事情!

关于Quartz

的注释

Quartz对于这里的调度组件来说并不是完全必要的,特别是因为它可能其他东西需要学习;根据您的日程安排要求的复杂程度,您当然可以随时在您的服务中设置一个计时器,但Quartz with Topshelf会为您处理很多事情!

答案 1 :(得分:1)

Hangfire是运行后台进程的绝佳工具之一。现在我已经在我的应用程序中使用它了,我非常喜欢它。

实施和维护非常简单。它可以轻松扩展,可以托管在任何.net应用程序类型中,它是一个托管的.net库。

更重要的是开源和免费使用。 (Pro版本也可用于附加功能)

它最引人注目的功能是开箱即用的监控仪表板,可以完全控制工作。