Asp.net mvc 用于发送每小时状态电子邮件的任何现有项目/软件
检查系统状态和通知用户的经典要求。具体来说,我将每隔x时间访问数据库,获取一些数据,然后根据结果发送电子邮件通知。见鬼,这个服务甚至可能不发送电子邮件,而是在数据库中创建一个通知记录 似乎有了IOC和配置,就有了一个通用的windows服务,可以以一种简单的方式管理所有这些以及度量和管理 过去,我通过以下方式发送电子邮件通知: 1) 将脚本作为cron(在Windows上)作业运行 2) 作为cron/at作业运行自定义可执行文件 3) 使用类似SQLServer的DatabaseMail。 4) 自定义NT服务,可随时运行并监视内容 是否有任何开源项目可以管理这一点?这是我在各种平台上多次编写的代码类型,但我现在不想花几天的时间来编写 到目前为止,我唯一发现的是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
谢谢我刚刚创建了一个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();
}
}