Web アプリ (asp.net mvc3、.net 4) があり、電子メール通知サービスを実装しようとしています。
基本的に、日時/コンテンツとメールを送信するユーザーを含むテーブルがあり、テーブルでその日時に到達したら、通知メールを送信したいと考えています。
これをどのように実装する必要があるのか わかりません.データベースを常にチェックするバックグラウンドスレッドが必要ですか? これでは効率が悪いと感じます。
これを行う方法をいくつか提案できますか?
Web アプリ (asp.net mvc3、.net 4) があり、電子メール通知サービスを実装しようとしています。
基本的に、日時/コンテンツとメールを送信するユーザーを含むテーブルがあり、テーブルでその日時に到達したら、通知メールを送信したいと考えています。
これをどのように実装する必要があるのか わかりません.データベースを常にチェックするバックグラウンドスレッドが必要ですか? これでは効率が悪いと感じます。
これを行う方法をいくつか提案できますか?
どこかのシステムで実行されるサービスまたはスケジュールされたジョブが必要になります (私は以前にこれを実行しました。ホスティングを共有し、自宅のコンピューターで定期的に実行するようにスケジュールした小さなアプリを作成しました)。このプロセスで通知を行うか、コントローラーでアクションを実行して、通知の送信をトリガーすることができます。
サービスがデータベースにクエリを実行し、通知を送信することが最も直接的な方法のようです。ただし、データベースまたは SMTP サーバーへのリモート アクセスがないなど、MVC アプリケーションでのアクションがより適切である理由がいくつかあります。
Windows タスク スケジューラなどを使用して、アプリケーション (コンソール アプリや CURL など) を実行するジョブをスケジュールできます。または、Quartz.netなどを使用して、ジョブを実行する独自のサービスを作成することもできます。
それは正しいアプローチではありません。コンソール アプリケーションを作成し、組み込みのスケジューラ タスクを使用して定期的に実行する必要があります。
追加の参考資料として、Ayende Rahienのこの投稿をご覧ください。