ASP.NET中的任务调度
本文关键字:任务调度 NET ASP | 更新日期: 2023-09-27 18:25:40
我对ASP.NET的整个概念很陌生,所以请耐心等待。我的要求是创建一个调度组件,它将执行存储在数据库中的一些任务。实现这一点最常见的方法是什么。我的想法是将间隔存储为TimeSpan,并以某种方式在很短的间隔内轮询我的数据库。
我建议将任务执行器实现为Windows服务。
以下是一些方法:
-
该服务可以周期性地轮询数据库并执行任务。
-
使用MSMQ。它允许使用系统范围的队列:一个进程(ASP.NET web应用程序)可以生成队列项,另一个进程可以使用它们(服务)。如何使用ASP.NET、MSMQ和Windows服务为长时间运行的进程进行异步编程。
对于更高级的调度场景,Quartz.net是一个非常有用的工具-http://quartznet.sourceforge.net/-从Java移植而来(我认为)。
正如其他人所指出的,ASP.Net的生命周期不太适合常规的计划任务。然而,我看到了一些网络应用程序和网络应用程序框架(例如,我认为DotNetNuke和YetAnotherForum),它们在网络点击量得到服务后,偶尔会借用线程池线程来执行计划任务。这在共享托管模型中非常有用,因为在共享托管模式中,您通常可以在服务器上安装的内容受到限制。
如果您查看的是短间隔,通常会使用Timer类-框架中有几个类,例如System.Timers.Timer和System.Threading.Timer。您将间隔设置为毫秒数(使用TimeSpan静态方法,如FromSeconds或FromMinutes,以便于阅读)
查看System.Timers.Timer与System.Threading.Timer以比较两个计时器