Проблема, изложенная в вашем вопросе, звучит как хорошее использование Revalee проекта с открытым исходным кодом.
Revalee - это служба, которая позволяет планировать обратные вызовы в Интернете для приложения ASP.NET MVC. Revalee управляет сохранением и планированием задач с помощью службы Windows, но использует приложение ASP.NET MVC для обработки процесса обработки (т. Е. «Работы»). В вашем случае вы будете использовать приложение MVC для отправки автоматических сообщений электронной почты пользователю, когда приложение MVC было отозвано Revalee.
Ниже приведен обзор рабочего процесса, используемого приложением MVC с Revalee:
Revalee Workflow http://revalee.sageanalytic.com/Images/workflow.png
Когда назначена встреча, ваше приложение зарегистрирует действие обратного вызова в Revalee. Это будет включать дату и время обратного вызова приложения MVC, а также URL для вызова. Поэтому для регистрации обратного вызова в Revalee вы можете включить в приложение MVC следующий метод.
private void ScheduleAppointmentReminderEmail(int appointmentId)
{
// The DetermineAppointmentReminderTime() method is your private method
// which returns an appointment's next reminder time as a DateTimeOffset.
DateTimeOffset callbackTime = DetermineAppointmentReminderTime(appointmentId);
// The callback should at the task's end time
Uri callbackUrl = new Uri(
string.Format(
"http://mywebapp.com/Email/SendAppointmentEmail/{0}",
appointmentId
)
);
// Register the callback request with the Revalee service
RevaleeRegistrar.ScheduleCallback(callbackTime, callbackUrl);
}
Когда ваше MVC-приложение получает обратный вызов, действие SendAppointmentEmail
может выглядеть следующим образом:
[AllowAnonymous]
[CallbackAction]
public ActionResult SendAppointmentEmail(int appointmentId)
{
// TODO 1. Validate the appointmentId,
// 2. Lookup the appointment's information, &
// 3. Send the email message
// ...
return new EmptyResult();
}
На веб-сайте Revalee имеется полный справочник по API, а также инструкции по установке и настройке службы Windows. Служба доступна для простого развертывания и установки на Chocolatey , в то время как клиентские библиотеки MVC, готовые для использования в Visual Studio, доступны на NuGet . (Существуют не-MVC клиентские библиотеки .) Естественно, что в качестве проекта с открытым исходным кодом полный исходный код Revalee доступен на GitHub .
Наконец, в случае, если это не было ясно выше, Служба Revalee - это не внешняя сторонняя служба сетевого планировщика, а служба Windows, которая устанавливает и и полностью контролирует вашу собственную сеть. Он находится и работает на сервере Windows по вашему выбору, где он может получать запросы регистрации обратного вызова из вашего приложения ASP.NET MVC.
Надеюсь, это поможет. Гук удачи!
Отказ от ответственности: Я был одним из разработчиков, вовлеченных в проект Revalee. Для ясности, однако, Revalee - это бесплатное программное обеспечение с открытым исходным кодом. Исходный код доступен на GitHub .