질문에 설명 된 문제는 Revalee 오픈 소스 프로젝트를 사용하는 것과 같습니다.
Revalee는 ASP.NET MVC 응용 프로그램에 웹 콜백을 예약 할 수있게 해주는 서비스입니다. Revalee는 Windows 서비스를 사용하여 작업 지속성 및 일정을 관리하지만 ASP.NET MVC 응용 프로그램을 활용하여 처리 작업 (즉 "작업")을 처리합니다. 귀하의 경우 MVC 응용 프로그램을 사용하여 Revalee가 MVC 응용 프로그램을 다시 호출 할 때 사용자에게 자동화 된 전자 메일 메시지를 보냅니다.
약속이 예약
Revalee Workflow http://revalee.sageanalytic.com/Images/workflow.png
, 응용 프로그램 Revalee와 콜백 작업을 등록 할 것입니다 :
다음은 Revalee와 함께 MVC 응용 프로그램에서 사용하는 워크 플로우의 개요를 보여줍니다. 여기에는 MVC 응용 프로그램을 다시 호출하는 데 걸리는 시간 &과 호출 할 URL이 포함됩니다. 따라서 Revalee에 콜백을 등록하려면 MVC 응용 프로그램에 다음 메소드를 포함시킬 수 있습니다.
[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 웹 사이트는 Windows 서비스를 설치하고 구성하는 방법에 대한 완전한 API 참조뿐만 아니라 지침이있다 : 당신의 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);
}
는 SendAppointmentEmail
작업이 보일 수 있습니다 . 이 서비스는 &을 Chocolatey에 쉽게 배치 할 수 있으며 Visual Studio에서 사용할 준비가 된 MVC 클라이언트 라이브러리는 NuGet에서 사용할 수 있습니다. (non-MVC client libraries도 있습니다.) 당연히 오픈 소스 프로젝트로서 Revalee의 완전한 소스 코드는 GitHub에 있습니다.
마지막으로, Revalee 서비스는 외부 타사 온라인 스케줄러 서비스가 아니라 및을 설치하는 Windows 서비스를 자체 네트워크에서 완벽하게 제어합니다. 이 프로그램은 ASP.NET MVC 응용 프로그램에서 콜백 등록 요청을받을 수있는 Windows 서버에 상주하며 실행됩니다.
이 정보가 도움이되기를 바랍니다. 행운을 빌어 요!
면책 조항 : 저는 Revalee 프로젝트에 참여한 개발자 중 한 명입니다. 그러나 Revalee는 무료 오픈 소스 소프트웨어입니다. 소스 코드는 GitHub에 있습니다.