如何在c# MVC web应用程序中拥有周期性事件



我有一个web应用程序,我现在正在写,应该有"定期事件"。例如,在午夜,网络应用程序应该计算所有用户的"分数"。我希望每天只做一次。有没有一种方法可以让它自动运行,让它在午夜(或者我选择的任何时间)自动运行?

我不喜欢创建一个单独的脚本(VBS)来做这件事的想法,因为计算将取决于应用程序的很多业务逻辑。我想把它放在一个单独的类库,所以它可以使用web应用程序逻辑(这也是在一个类库),但这是最好的方式去做吗?我也不喜欢在全局中使用Session_Start()事件的想法。Asax通过手动检查小时来触发事件。一定有一些更简单的方法——特别是因为我预计以后会有更多的周期性事件——有些可能必须每十五分钟触发一次,例如……

非常感谢你给我的帮助

你不应该在web应用程序本身这样做。将业务逻辑放在单独的库中是正确的。一旦您这样做了,您就可以在任何地方使用业务逻辑,因此,一个好的解决方案是创建一个控制台应用程序来执行夜间作业,并从Windows Task Scheduler调用控制台应用程序。IIS不适合作为周期性事件的主机。

我想你错过了关注点分离的要点。无论您要求的是服务的作业。您需要开发一个单独的应用程序,如Windows Service,它将完成您的所有计算并由任何调度器触发,甚至Windows任务调度器也可以。

是的…"改变你的架构和托管环境,这样我的回答就可以相关了"。

按照您的要求去做其实很容易,看看这篇文章:http://www.codeproject.com/Articles/12117/Simulate-a-Windows-Service-using-ASP-NET-to-run-sc

这是一个windows服务或计划任务的作业。web应用程序响应HTTP请求。从本质上讲,服务的工作将是唤醒,运行适当的计算并写回数据库。一旦进入数据库,您的web应用程序就可以使用新计算的值。

这里是一些关于windows服务的信息:http://msdn.microsoft.com/en-us/library/d56de412.aspx

最新更新