我想在我的网站上创建一个通知系统?(类似于 stack-overflow)
我们如何安排一个任务来每 24 小时向用户发送通知?
我们可以使用 MVC4 还是应该使用 windows 服务?
编辑:
我FluentScheduler
在 MVC4 App 中使用 3 个月的经验。
FluentScheduler
易于配置和使用,但它不会随时运行任务。有时跑有时不跑。
我认为调度的最佳方式是Windows Service
确保在特定时间运行任务。
我想在我的网站上创建一个通知系统?(类似于 stack-overflow)
我们如何安排一个任务来每 24 小时向用户发送通知?
我们可以使用 MVC4 还是应该使用 windows 服务?
编辑:
我FluentScheduler
在 MVC4 App 中使用 3 个月的经验。
FluentScheduler
易于配置和使用,但它不会随时运行任务。有时跑有时不跑。
我认为调度的最佳方式是Windows Service
确保在特定时间运行任务。
发现这是一个很棒的调度器,FluentScheduler
用法:
// Schedule an ITask to run at an interval
Schedule<MyTask>().ToRunNow().AndEvery(2).Seconds();
您需要一个 .Net 作业调度程序。这是一个很好的:http: //quartznet.sourceforge.net/
也许你想使用计划任务。在 MVC 中执行此操作是一个坏主意(混合责任),并且构建 Windows 服务对我来说似乎有点过头了(因为某些东西不需要一直运行)。
首先;
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
在TaskManager的 Application_Start 中注册该注册表类TaskManager.Initialize(new Test());
我使用windows的计划任务。
我已经构建了一个小应用程序,而不是在 bd 中输入记录,然后使用此 recordId(Guid) 作为参数访问网站。
在 mvc 中,我检查 id 是否存在,如果存在,则运行任务,然后删除数据库中的记录,如果不存在,则忽略它。
这样我就可以使用参数添加时间表。每次我需要新的计划任务时都无需更新应用程序。我只是添加了一个新任务,例如“myapp.exe /MyNewTaskName”
希望这对某人有所帮助;-)
还有一个内置选项 QueueBackgroundWorkItem。它是在 .Net 4.5.2 中添加的,这里是关于如何在 MVC 中使用它的指南。
除了前面提到的 FluentScheduler 你还有HangFire。如果您计划部署到 Azure ,则有一些不同的服务可用于此。