我想在我的网站上创建一个通知系统?(类似堆栈溢出)
我们如何安排每24小时向用户发送通知的任务?
我们可以使用MVC4还是应该使用Windows服务?
修改
我在MVC4应用程序中使用FluentScheduler
3个月的经验
FluentScheduler
很容易配置和使用,但它不会随时运行任务。有时跑,有时不跑
我认为调度的最佳方式是Windows Service
,以确保在特定时间运行任务。
答案 0 :(得分:16)
发现这是一个很棒的调度程序,FluentScheduler
用法:
// Schedule an ITask to run at an interval
Schedule<MyTask>().ToRunNow().AndEvery(2).Seconds();
答案 1 :(得分:7)
您需要.Net Job Scheduler。这是一个很好的:http://quartznet.sourceforge.net/
答案 2 :(得分:3)
您可以使用ATrigger日程安排服务。 .Net library也可用于创建计划任务而无需开销。错误日志,分析,任务列表和更多好处。
免责声明:我是ATrigger团队的一员。这是一个免费软件,我没有任何商业目的。
答案 3 :(得分:2)
也许你想要使用预定的任务。在MVC中执行此操作是一个坏主意(混合责任)并且构建Windows服务对我来说看起来有点过分(因为某些事情不需要一直运行)。
答案 4 :(得分:1)
我使用Windows的预定任务。
我构建了一个小应用,而不是在bd中输入记录,然后使用此recordId(Guid)作为参数访问网站。
在mvc中我检查id是否存在,如果它存在,我运行任务然后删除db中的记录,如果不是我忽略它。
这种方式我可以用param添加日程安排。每次我需要新的计划任务时都不更新应用程序。我只是添加一个新的任务 &#34; myapp.exe / MyNewTaskName&#34;
希望这能帮到某人; - )
答案 5 :(得分:1)
首先;
Install-Package FluentScheduler
// Schedule a simple task to run at a specific time
Schedule(() => System.Diagnostics.Debug.Write("This is from service " + DateTime.Now.Second+"\n"))
.ToRunNow().AndEvery(2).Seconds();
Global.asax.cs
的Application_Start中注册该注册表类
使用TaskManager TaskManager.Initialize(new Test());
答案 6 :(得分:0)
还有一个内置选项QueueBackgroundWorkItem。它已添加到.Net 4.5.2和here is a guide on how to use it in MVC中。
除了之前提到的FluentScheduler,你还有HangFire。如果您计划部署到Azure there's a handful of different services for this。