アプリケーションから定期的にメールを送信します。
ASP.NET MVCアプリケーションにEmailControllerがあり、通知/電子メールの種類ごとに1つずつアクションメソッドがあり、週のさまざまな時間に呼び出す必要があります。
質問:Windowsスケジューラ(Server 2008ボックスで実行)は、SQL Serverジョブを介してこれをスケジュールするよりも良いですか悪いですか?なぜ?
ありがとう
アプリケーションから定期的にメールを送信します。
ASP.NET MVCアプリケーションにEmailControllerがあり、通知/電子メールの種類ごとに1つずつアクションメソッドがあり、週のさまざまな時間に呼び出す必要があります。
質問:Windowsスケジューラ(Server 2008ボックスで実行)は、SQL Serverジョブを介してこれをスケジュールするよりも良いですか悪いですか?なぜ?
ありがとう
私は、SQL サーバー ジョブで電子メールを送信することを好みます。すでに SQL サーバーで複数のジョブを実行していたので、この 1 つのアプローチに固執することは理にかなっています。スケジュールされたタスク ルートをたどると、2 つの異なるタスク スケジューリング システムが必要になり、不必要な複雑さが増します。スケジュールされたすべてのタスクが 1 つのシステムで発生するため、追跡と保守が簡単です。
私見は、スケジューラーがコントローラーを呼び出し、アクションメソッドを実行して通知を発生させるのが最もうまくいきました。私のプロセス(良くも悪くも)は次のとおりです。
コントローラー/アクションを呼び出すコードを .vbs ファイルに入れます。アクション メソッドには、web.config の値と一致する必要がある「セキュリティ コード」が必要です。一致しない場合は実行されません (私の考えでは、これにより、ブラウザでアクション メソッドを実行して送信通知を実行する可能性が低くなります)。実行すべきではないコード)。
スケジューラでスケジュールされたタスクを作成して、そのファイルを定期的に呼び出します。
私のデータベースでは、すべての通知の実行をログに記録し、さまざまな種類の通知を送信する頻度を定義する属性を含めます。これもまた、誰かが通知を送信すべきではないときに通知を送信する可能性を減らすためです。
とにかく、これは機能します。私が抱えていた唯一の問題は、httpsにアクセスすることでした。タスクがいくつかの資格情報を提供するように要求されていると思われるため、それは機能しませんでした (プログラムで実行されていたため、資格情報を提供できませんでした)。それを http に変更すると機能し、imo はいかなる種類のセキュリティ リスクも生み出しません。
考え?これを実装するより良い方法は?誰かが提供しなければならないことは何でも聞きたいです。
ありがとう