2011-11-10 17 views
2

は、私が今書いていることは、「定期的なイベント」を持つことになっているWebアプリケーションを持っています。たとえば、深夜になると、Webアプリケーションはすべてのユーザーの「スコア」を計算する必要があります。私はこれを1日に1回だけしたい。 私はこれを自動化する方法があるので、真夜中(または私が選択した時間)に自動的に実行されますか?C#MVC Webアプリケーションで定期的なイベントを持つ方法は?

計算アプリのビジネスロジックの多くに依存するであろうと、私は、これを行うには別のスクリプト(VBS)を作成する考えを好きではありません。私はそれを別のクラスライブラリに入れることを考えていたので、Webアプリケーションロジック(クラスライブラリにもあります)を使用することができますが、これは最善の方法ですか? また、Global.asaxでSession_Start()イベントを使用して時間を手動でチェックしてイベントをトリガーする考え方は嫌いです。いくつかの簡単な方法が必要です。特に、私は多くの定期的なイベントがあると予想しています。たとえば、15分ごとにトリガーする必要がある場合などです...

ありがとうございます私に与えることができます。

+0

あなたは、サーバー上のアプリケーション他(の種類)をインストールしてもらえますか?最も単純なのは、スケジュールされたタスクの.exeです。 –

+0

インフラストラクチャは何ですか?スケジュールされたタスクは、そのような作業の良い方法です。タスク内で実行される同じDLLを使用して簡単に.exeを作成することができます。また、あなたのプロバイダは何ですか?彼らは通常、仕事のための素敵なツールを持っています。 – boulaycote

答えて

3

は、Webアプリ自体でこれを行うべきではありません。ビジネスロジックを別のライブラリに配置するのは間違いありません。これを実行したら、どこからでもビジネスロジックを使用できます。そのため、夜間のジョブを実行するコンソールアプリケーションを作成し、Windowsタスクスケジューラからコンソールアプリケーションを呼び出すことをお勧めします。 IISは定期的なイベントのホストとしては適していません。

0

これは、Windowsサービスまたはスケジュールされたタスクのための仕事です。 WebアプリケーションはHTTP要求に応答します。本質的にサービスの仕事は目を覚まし、適切な計算を実行してデータベースに書き戻すことです。データベースに入ると、Webアプリケーションは新しく計算された値を使用できます。ここで

は、Windowsサービスのいくつかの情報です:http://msdn.microsoft.com/en-us/library/d56de412.aspx

1

私はあなたが懸念の分離のポイントを逃していると思います。何を求めているのかは、サービスの仕事です。あなたはすべてのあなたの計算を行いますと、どうなる任意のスケジューラにもWindowsタスクスケジューラによってトリガーされるようにWindowsなど別のアプリケーションサービスを開発する必要があります。これは基本的に大規模アプリケーションで行われています。

関連する問題