.net - 如何在 .NET 中执行基于时间/计划的事件?

标签 .net scheduling scheduled-tasks quartz-scheduler

我需要在我们的网站上提供行动/事件的安排。一个废话类比可以是一个日历系统,一个人添加一个日历项目,当日期/时间被“命中”时,就会触发一些逻辑(例如计算报告)。

我可能有成百上千个由我的客户输入的预定事件。当客户输入要安排的内容时,我会将该信息保存到数据库中。然后我猜我会在某处添加一个事件/作业,其中将包含数据库表主键。当事件被触发时,我将从数据库中获取该信息,然后执行逻辑。完毕。

有哪些常见的解决方案来处理这个问题?

我正在使用 .NET 3.5 SP1。 DB 是 Sql Server 2008。不过 UI 将是基于 Web 的。

我不确定人们是否使用 MSMQ?还是 Sql Server 内置的东西?或者一些带有 NT 服务的开源库(例如 Quartz.NET)。服务器将是 windows 2008 标准版。

另外 - 请不要建议使用等效的 cron 作业或任何命令行脚本等。

最后,这是次要目标..我很想把它扔到 azure 上,因为嘘和咯咯笑......所以这也可能吗?这只是一个愿望 list 的想法。如果解决方案比使用 Azure 更容易,我更愿意在专用盒子上进行。

欢呼:)

编辑:需要触发事件时处理的逻辑是后台作业。不需要用户界面。

最佳答案

Quartz.NET 可能也能很好地处理这些需求。我看到的好处在于设置调度程序(CronTrigger + 日历)的各种方式,以及在可测试代码(作业)的小单元中拥有您的工作的能力。

Quartz.NET 还通过集群功能为您提供所需的分发和故障转移。一个不错的功能也是每个触发器可配置的失火处理设置,让您有机会对失火和调度程序停机时间使用react。

SQL Service Broker 似乎没有轮询的好处,我想知道这是否会成为问题,但代理的缺点是听起来有点复杂(至少从我上面读到的描述来看)。

只是我有偏见的 0.02 美元。

关于.net - 如何在 .NET 中执行基于时间/计划的事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1015945/

相关文章:

c# - C# linq 是否有类似于 SummaryStatistics 的东西?

c# - C# 编译器是否足够智能来优化此代码?

python - 以同样的便利替代 PiCloud

java - Spring Scheduled 注解中的固定速率和固定延迟有什么区别?

powershell - Powershell计划任务报告-将状态从数字更改为单词

.net - Microsoft Azure - Windows 应用程序和 Web 应用程序的相同登录名

.net - 在不使用 WindowsFormsHost 的情况下在 WPF 中查看 PDF

Spring 调度程序不起作用

python - 谷歌或工具: Employee Scheduling with availability constraint

Windows 批处理文件压缩,然后 ftp 文件