运行 ASP.NET MVC 网站中的计划任务

Running a scheduled task in an ASP.NET MVC website

我正在为一个网站制定架构,我遇到了以前从未用 ASP.NET 做过的事情。我想做的是每天晚上 运行 查询数据库中的实体 table 以检查日期列并根据日期执行 X 或 Y 操作。基本上我想要一个函数每晚调用一次。我搜索过的所有内容都将我引向了几个不同的方向,这些方向对于这样一个简单的操作来说似乎非常复杂,或者更倾向于工作排队,这并不是我想要的。

欢迎任何建议,只是寻找最简单的方法。谢谢!

我可以想到三种不同的选择。

  1. 如果您所做的工作纯粹是与数据库相关的,大多数数据库平台(例如 Microsoft SQL Server、Oracle 等)都能够 schedule jobs 运行 定期。这些作业可以是 SQL 语句或存储过程。 MS SQL 服务器还可以让您从存储过程中调用 C# 代码,这很方便。

  2. 使用操作系统进行调度。 Windows 有 Windows Scheduler jobs (The AT command) and Unix has cron 个职位。您可以每晚安排一个可执行文件到 运行,这将是 运行 C# 代码或 SQL 代码。

  3. 编写您自己的调度服务。该服务将一直 运行 作为 Windows 服务,并定期执行一些代码。查看调度框架,例如 Quartz.net,它可以帮助组织一些调度细节。

我以前在一个项目中使用过 Hangfire 来做这样的事情。它绝对棒极了,并且可以将所有代码保存在一个解决方案中(不会弄乱 windows 服务),我强烈推荐。