2

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

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

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

我知道在 Ruby on Rails 中,有观察者和后台工作者,在 MVC3 中有类似的东西吗?还是有其他方法可以做到这一点?

4

4 回答 4

3

这类任务更适合从单独的进程(例如 Windows 服务)中完成。您应该避免在 Web 应用程序中使用后台任务

于 2012-05-24T06:05:37.427 回答
2

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

更多信息:带有 asp.net mvc 的作业调度程序

于 2012-05-23T21:26:00.377 回答
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的这篇精彩文章

于 2015-01-09T16:06:36.900 回答
0

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

于 2015-01-18T10:39:01.120 回答