生日提醒代码净MVC

本文关键字:MVC 代码 生日 | 更新日期: 2023-09-27 18:03:52

我想在MVC Asp中创建一个web应用程序。酒店客房预订和客户管理网。我在其中一个要求上遇到了麻烦。我想创建一个代码发送短信给客户在他们的生日祝福他们从酒店。我很困惑,那我应该在哪里放置代码来检查客户的出生日期与今天的日期相同,以便代码每天在中午12点触发,即使web应用程序没有启动。你能解释一下我应该在哪里插入代码吗?

生日提醒代码净MVC

有一个叫做Quarz的开源库可以帮助你。

Mike Brind有一篇关于这个库的非常好的博客文章。这个库提供了一个流畅的API,可以让你做你想做的事情。

以下代码(基于上述博客文章的示例)创建了一个每天12点调用的事件:

 IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
 scheduler.Start();
 IJobDetail job = JobBuilder.Create<BirthdayJob>().Build();
 ITrigger trigger = TriggerBuilder.Create()
    .WithDailyTimeIntervalSchedule
       (s =>
        s.WithIntervalInHours(24)
        .OnEveryDay()
        .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(12, 0))
        )
 .Build();
 scheduler.ScheduleJob(job, trigger);

它可以在网站,Windows服务甚至winforms应用程序的上下文中运行(只要用户不关闭它)

根据上下文,您需要在不同的位置调度作业。对于一个网站,将是Application_Start()-方法。对于服务,这将是OnStart()-方法。

另外,你需要一个类"BirthdayJob",它将提供应该定期执行的实际代码:

public class BirthdayJob : IJob
{
    public void Execute(IJobExecutionContext context)
    {
        // Check for birthdays...
    }
}

如果你在一个网站的上下文中调用这段代码,有一点你应该注意:

如果一段时间没有请求,IIS可能会使您的网站进入睡眠状态。在这种情况下,计划任务可能没有执行。

有一个选项来改变你的网站的超时时间:在IIS管理器中转到"应用程序池",找到用于您的网站的应用程序池,然后选择"属性"->"性能"。在这里可以设置空闲超时。还有其他几种方法可以解决这个问题。

然而,如果你的网站经常被请求,你就不会看到这个问题。

最好的方法是从windows服务中调用Quarz,即使你的网站睡着了或者喝醉了躺在桌子下面也能运行。

你可以将一个服务与你的web应用程序一起发布,它可以进行定期检查,并与站点分开运行。

此服务的另一个用途可能是站点使用的数据存储的一般维护,因此,例如,每天一次,它将存档信息,检查生日和任何其他维护或定期任务,例如发出提醒等,您的平台将发出。