ASP MVC 3:在不影响用户的情况下运行cron作业

时间:2013-02-06 08:34:52

标签: asp.net-mvc asp.net-mvc-3

对于我的网站,我需要:

  • 记录动作&渲染时间
  • 记录某个产品的访问
  • 不时聚集投票
  • 不时发送简报
  • 不时在社交网络上发帖

我的方法是创建一个全局过滤器和 OnResultExecuted 我会做检查和所需的操作。

我有一些问题:

  1. 当OnResultExecuted运行时,用户是否收到了呈现的页面,基本上没有等待其他任何内容?我阻止了吗?
  2. 在OnResultExecuted中为这个开始一个新线程是一个好主意 工作?
  3. 这种方法在ASP MVC 4中是正确的

1 个答案:

答案 0 :(得分:0)

根据MSDN,在写入响应(http://msdn.microsoft.com/en-us/library/system.web.mvc.controller.onresultexecuted(v=vs.108).aspx)后会调用此方法,因此您不会阻止响应。

除前两点(记录操作和记录访问)外,其他人可能会根据任务的大小占用大量资源。

我的建议是覆盖前两个任务的OnResultExecuted,并使用Windows服务(可以很容易地用C#编写)在后台执行其他任务。这样,您可以使用成本较低的clr线程而不是iis工作线程。

在后台运行时间/资源消耗任务将为您的Web应用程序增加可伸缩性

希望这有帮助