あなたの質問に記載されている問題は、Revaleeオープンソースプロジェクトをうまく使っているようです。
Revaleeは、ASP.NET MVCアプリケーションへのWebコールバックをスケジュールできるサービスです。 RevaleeはWindowsサービスを使用してタスクの永続性とスケジューリングを管理しますが、ASP.NET MVCアプリケーションを利用して処理の労力(つまり「仕事」)を処理します。あなたのケースでは、MVCアプリケーションを使用して、MVCアプリケーションがRevaleeによって呼び戻されたときに、ユーザーに自動化された電子メールメッセージを送信します。
以下はRevaleeとMVCアプリケーションで使用されるワークフローの概要を示しています
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サービスをインストールして設定する方法について説明してい。 Visual Studioで使用できるMVCクライアントライブラリはNuGetにありますが、&のインテグレーションはChocolateyに簡単に配備できます。 (non-MVC client librariesもあります)当然、オープンソースプロジェクトとして、Revaleeの完全なソースコードはGitHubにあります。
最後に、Revaleeサービスは外部の第三者のオンラインスケジューラーサービスではなく、自分のネットワーク上でとを完全に制御するWindowsサービスをインストールします。これは、自分のASP.NET MVCアプリケーションからのコールバック登録要求を受け取ることのできるWindowsサーバー上に存在し、実行されます。
こちらがお役に立てば幸いです。幸運を!
免責事項:私はRevaleeプロジェクトに携わった開発者の一人でした。しかし、Revaleeは無料のオープンソースソフトウェアです。ソースコードはGitHubにあります。