高レベルのアーキテクチャに関する質問があります。次の関連タスクを実行する必要がある MVC アプリケーションを構築しています。
- 特定の基準が満たされたときにアラートを送信する
- 受信データにビジネス ルールを実装する
たとえば、ユーザーは自分に割り当てられたタスクを入力し、3 時間後に期限を設定することができます。ビジネス ルールに基づいて、期限の 1 時間以内にステータスが「保留中」から「緊急」に変更されます。
これは、期間 N ごとに 1 回、保留中のすべてのタスクの時間をチェックして、「緊急」のしきい値に達したかどうかを確認する必要があることを意味します。この時点まで、私は Windows タスク スケジューラを使用してこのようなタスクを実行しただけです。(バッチ ファイルまたは EXE を作成し、15 分ごとに 1 回実行します。) 私はプロがどのようにそれを行うかを調べようとしています。
好ましい解決策は、ビジネス ルールを実装するサービスを実行することであるという印象を受けました。ここで私が理解できないのは、タスク スケジューラのようなユーティリティを使用していない場合、基本的に、サービスをクエリするアプリケーションの 1 つのスレッドで無限ループを実行しているだけでしょうか?
do
{
myObject = myService.query();
if (myObject.dueDate < Now() + 1 hour)
{
myObject.status = urgent
//Update db
//update view
myService.fireAlert(myObject);
}
Thread.Sleep(60000);
}
これは幅広い学問的な問題かもしれません。より具体的に言うと、私は Windows サービスの知識がない状態でこの問題に取り組んでいます。コードの実行をスケジュールする別の方法を実際に見たことがないので、それが私が進むべき方向だと思います。他の可能性はありますか?
SignalR について知っている人は、ここに当てはまりますか?