21

我想在我的网站上创建一个通知系统?(类似于 stack-overflow)
我们如何安排一个任务来每 24 小时向用户发送通知?

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

编辑:
FluentScheduler在 MVC4 App 中使用 3 个月的经验。
FluentScheduler易于配置和使用,但它不会随时运行任务。有时跑有时不跑。
我认为调度的最佳方式是Windows Service确保在特定时间运行任务。

4

7 回答 7

16

发现这是一个很棒的调度器,FluentScheduler

用法:

// Schedule an ITask to run at an interval
    Schedule<MyTask>().ToRunNow().AndEvery(2).Seconds();
于 2013-01-31T07:10:45.423 回答
7

您需要一个 .Net 作业调度程序。这是一个很好的:http: //quartznet.sourceforge.net/

于 2013-01-31T07:08:22.340 回答
3

您可以使用ATrigger调度服务。.Net 库也可用于创建计划任务而无需开销。错误日志、分析、任务列表和更多好处。

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

于 2013-08-26T13:44:26.403 回答
2

也许你想使用计划任务。在 MVC 中执行此操作是一个坏主意(混合责任),并且构建 Windows 服务对我来说似乎有点过头了(因为某些东西不需要一直运行)。

于 2013-01-31T07:07:10.857 回答
1

首先;

  1. 添加 Nuget 包Install-Package FluentScheduler
  2. 添加继承 Registry 的注册表类和一些代码
// 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();
  1. Global.asax.cs 在TaskManager的 Application_Start 中注册该注册表类
TaskManager.Initialize(new Test());

GitHub

于 2016-01-05T11:05:55.460 回答
1

我使用windows的计划任务。

我已经构建了一个小应用程序,而不是在 bd 中输入记录,然后使用此 recordId(Guid) 作为参数访问网站。

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

这样我就可以使用参数添加时间表。每次我需要新的计划任务时都无需更新应用程序。我只是添加了一个新任务,例如“myapp.exe /MyNewTaskName”

希望这对某人有所帮助;-)

于 2015-09-17T12:26:16.920 回答
0

还有一个内置选项 QueueBackgroundWorkItem。它是在 .Net 4.5.2 中添加的,这里是关于如何在 MVC 中使用它的指南

除了前面提到的 FluentScheduler 你还有HangFire。如果您计划部署到 Azure ,则有一些不同的服务可用于此

于 2017-10-23T10:19:59.280 回答