Asp.net mvc 4 如何在MVC中安排任务?

Asp.net mvc 4 如何在MVC中安排任务?,asp.net-mvc-4,scheduling,Asp.net Mvc 4,Scheduling,我想在我的网站上创建一个通知系统?(类似于堆栈溢出) 我们如何安排每24小时为用户发送通知的任务? 我们可以使用MVC4还是应该使用windows服务 编辑: 我在MVC4应用程序中3个月内使用FluentScheduler的经验。 FluentScheduler易于配置和使用,但它不会在任何时候运行任务。有时跑,有时不跑。 我认为安排时间的最佳方法是Windows服务,以确保在特定时间运行任务。也许您想使用计划任务。在MVC中执行此操作是一个坏主意(混合责任),而构建windows服务对我来说

我想在我的网站上创建一个通知系统?(类似于堆栈溢出)
我们如何安排每24小时为用户发送通知的任务?

我们可以使用MVC4还是应该使用windows服务

编辑:
我在MVC4应用程序中3个月内使用
FluentScheduler
的经验。
FluentScheduler
易于配置和使用,但它不会在任何时候运行任务。有时跑,有时不跑。

我认为安排时间的最佳方法是
Windows服务
,以确保在特定时间运行任务。

也许您想使用计划任务。在MVC中执行此操作是一个坏主意(混合责任),而构建windows服务对我来说似乎是一项过火的工作(因为它不需要一直运行)。

您需要一个.Net作业调度程序。这里有一个很好的例子:

发现这是一个很棒的调度程序

用法:

// Schedule an ITask to run at an interval
    Schedule<MyTask>().ToRunNow().AndEvery(2).Seconds();
//计划以一定间隔运行ITask
时间表().ToRunNow().AndEvery(2.Seconds();
您可以使用调度服务。A还可用于创建无开销的计划任务。错误日志、分析、任务列表和更多好处


免责声明:我是ATrigger团队中的一员。这是一个免费软件,我没有任何商业用途。

我使用windows的预定任务

我构建了一个小应用程序,在bd中输入一条记录,然后用这个记录ID(Guid)作为参数访问网站

在mvc中,我检查id是否存在,如果存在,我运行任务,然后删除数据库中的记录,如果不存在,我忽略它

通过这种方式,我可以添加带有参数的时间表。每次需要新的计划任务时都不更新应用程序。我只是添加了一个新任务,如 “myapp.exe/MyNewTaskName”

希望这能帮助别人;-)

首先

  • 添加Nuget软件包
    安装软件包FluentScheduler
  • 添加您的注册表类继承注册表和一些代码
  • //计划在特定时间运行简单任务
    计划(()=>System.Diagnostics.Debug.Write(“这是来自服务”+DateTime.Now.Second+“\n”))
    .torunow().AndEvery(2.Seconds();
    
  • Global.asax.cs
    与TaskManager
  • TaskManager.Initialize(newtest());
    

    还有一个内置选项,QueueBackgroundWorkItem。它被添加到.NET4.5.2和


    除了前面提到的FluentScheduler之外,您还有。如果您计划部署到Azure。

    请您描述一下为什么将我的问题评级为-1。这只是个问题。不是吗?那个dll看起来棒极了。我将深入研究它。我指的是语法,而不是功能。
    Schedule(runNow:true,runEvery:TimeSpan.FromSeconds(2))有什么问题?此外,如果你看一下实现,由于糟糕的流畅语法,它充满了竞争条件和可能无意的副作用。@马克,谢谢你的澄清。我不同意我的看法,我认为(撇开实现不谈)这是一种更流畅的语法。在很大程度上,它是“人类”可读的安排一项任务立即运行,每2秒运行一次”。你的建议没有错,但我认为一个经过深思熟虑的流利语法是非常有用的。如果一个流利的语法使计时器无法正确、安全地启动,它会有帮助吗?“它并不总是有效,但至少代码看起来很漂亮……”这会让你被解雇(当你做我所做的事情时,会有人死亡)@Mohammad,如果它不适合你的情况。请看构建windows服务。