后台任务/工作/流程,在asp.net MVC 3中

时间:2012-05-23 20:13:17

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

我不知道从哪里开始或者用什么来解决这两个问题:

  1. 我有一个用户模型和一个事件模型(足球比赛,卡丁车比赛等)。我希望当用户创建新的事件发送并通过电子邮件发送给其他用户时。

  2. 我需要每隔15分钟检查一次“东西”,从数据库中删除所有已经结束的事件(例如:昨天的事件)。

  3. 我知道在Ruby on Rails中,有Observers和Background Workers,在MVC3中有类似的东西吗?或者还有其他方法可以实现吗?

4 个答案:

答案 0 :(得分:3)

这些任务更适合从单独的进程(如Windows服务)完成。您应该在网络应用程序中avoid using background tasks

答案 1 :(得分:2)

我建议使用Quartz.net作为一个强大的解决方案,因为它是一个功能齐全的开源作业调度系统,可用于从最小的应用程序到大型企业系统。

更多信息:Job Scheduler with asp.net mvc

答案 2 :(得分:0)

确实存在风险。但有时候我们必须选择这个选项,特别是当我们在紧张的时间表上实现一个作业队列时。如果您不熟悉Windows服务,则需要了解这些内容。

以下为我工作,(.NET 4.5.2)。一旦我调用InitiateLongRunningProcess控制器,它就会启动一个长时间运行过程并返回查看状态,而不必等待长时间运行。

public ActionResult InitiateLongRunningProcess(Emails emails)
{
    if (ModelState.IsValid)
    {
       HostingEnvironment.QueueBackgroundWorkItem(ct => LongRunningProcessAsync(emails.Email));
       return RedirectToAction("Index", "Home");
    }

    return View(user);
}

阅读Hanselman撰写的这篇精彩文章HowToRunBackgroundTasksInASPNET

答案 3 :(得分:0)

很晚但你应该考虑看http://hangfire.io/。它是一个了不起的图书馆,提供了一个完整的fletched UI来管理工作:)