Asp.net mvc 用于发送每小时状态电子邮件的任何现有项目/软件

Asp.net mvc 用于发送每小时状态电子邮件的任何现有项目/软件,asp.net-mvc,windows-server-2008,Asp.net Mvc,Windows Server 2008,检查系统状态和通知用户的经典要求。具体来说,我将每隔x时间访问数据库,获取一些数据,然后根据结果发送电子邮件通知。见鬼,这个服务甚至可能不发送电子邮件,而是在数据库中创建一个通知记录 似乎有了IOC和配置,就有了一个通用的windows服务,可以以一种简单的方式管理所有这些以及度量和管理 过去,我通过以下方式发送电子邮件通知: 1) 将脚本作为cron(在Windows上)作业运行 2) 作为cron/at作业运行自定义可执行文件 3) 使用类似SQLServer的DatabaseMail。 4

检查系统状态和通知用户的经典要求。具体来说,我将每隔x时间访问数据库,获取一些数据,然后根据结果发送电子邮件通知。见鬼,这个服务甚至可能不发送电子邮件,而是在数据库中创建一个通知记录

似乎有了IOC和配置,就有了一个通用的windows服务,可以以一种简单的方式管理所有这些以及度量和管理

过去,我通过以下方式发送电子邮件通知: 1) 将脚本作为cron(在Windows上)作业运行 2) 作为cron/at作业运行自定义可执行文件 3) 使用类似SQLServer的DatabaseMail。 4) 自定义NT服务,可随时运行并监视内容

是否有任何开源项目可以管理这一点?这是我在各种平台上多次编写的代码类型,但我现在不想花几天的时间来编写

到目前为止,我唯一发现的是


谢谢

我刚刚创建了一个Windows服务,并使用反应式扩展来安排任务。如果您不需要像cron提供的那样多的灵活性,那么这很好。下面是一个抽象的每小时任务运行程序。(使用log4net)


然后,在您的启动方法中,您可以解析所有
iwanttorunatstart
实例,并对它们调用
Run()

IOC和配置是什么意思?一种高度可配置的服务,其中我将所需接口的实现注入到调度程序中,例如JobItemToRun…接受这一答案。我想我必须咬紧牙关,为此写一个服务。
public abstract class HourlyTask : IWantToRunAtStartup
{
    protected readonly ILog Log = LogManager.GetLogger(typeof (HourlyTask).FullName);
    private IDisposable _Subscription;

    private void ExecuteWithLog()
    {
        Log.Debug("Triggering " + GetType());
        try
        {
            Execute();
        }
        catch (Exception exception)
        {
            Log.Error("Hourly execution failed", exception);
        }
    }

    public abstract void Execute();

    public void Run()
    {
        _Subscription = Observable
            .Interval(TimeSpan.FromMinutes(1))
            .Select(x => DateTime.Now.Hour)
            .DistinctUntilChanged()
            .Subscribe(i => ExecuteWithLog());
    }

    public void Stop()
    {
        if (_Subscription == null)
        {
            return;
        }
        _Subscription.Dispose();
    }
}