2012-01-15 6 views
1

私は、誰もシステムを騙そうとしていないことを確認できるように、一定の監視が必要なサイトを構築しています。私はちょうど(私がサイトを公開すると)開始し、決して停止しないタイマーを持っていたい。そして、dbレコードを、例えばx分ごとに絶えず監視しなければならない。ユーザーインタラクションなしにASP.NETでタスクを開始するにはどうすればいいですか?

私はWebサービスが必要だと思いますが、これにアプローチする別の方法がありますか?

注:この 'サービス'に接続する 'クライアント/ s'はありません。

+1

クラスは起動しません。 –

+0

私は間違った言葉を使った脳の魔法の瞬間があったことを謝ります。 Razor code/webmatrix webアプリケーションでこれは可能ですか? – Jason

+2

サーバーを制御していると仮定すると、おそらくサーバー上で動作するWindowsサービスが必要になります。インターネット上には、構築方法を説明する豊富なリソースがあります。 –

答えて

2

ジェフ・アトウッド(StackOverflowのの共同制作者)、ここでそれを行うための興味深い手法について説明します。http://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/

基本的には定期的なスケジュールで定期的なタスクを実行するためにASP.NETのキャッシュの有効期限システムをハイジャックが含まれます。

+0

+1はキャッシュの有効期限です。あなたが期限切れになるキャッシュオブジェクトからコールバックを指定することができるので、この技法を自分で(独自に考えて)使用しています。 global.asaxアプリケーションの起動時に設定するか、AssemblyInfo PreApplicationStartup –

0

サービスは要求を処理するのではなく、基本的にバックグラウンドタスクを実行するため、Windowsサービスを選択するのが良いと思います。 起動時に自動的に起動するように設定できます。 (私はあなたがウェブサーバーを所有していると仮定します)。

3

なぜWindowsServiceを使用しないのですか?これがオプションでない場合は、別個のワーカースレッドを開始するために少なくとも1つのWebサーバーへの最初のリクエストが必要です。また

あなたは.net4とIIS7.5を使用している場合は、あなたは、アプリケーションを起動するためにasp.netオートスタート機能を使用することができますし、その最初の要求を取り除く:

http://weblogs.asp.net/scottgu/archive/2009/09/15/auto-start-asp-net-applications-vs-2010-and-net-4-0-series.aspx

+1

+1から自動スタート機能を設定します。それについて知らなかった。 –

2

どちらか//weblogs.asp.net/scottgu/archive/2009/09/15/auto-:あなたはASP.net 4.

の自動起動機能を使用する必要が双方向

1.httpがあります。 start-asp-net-applications-vs-2010-and-net-4-0-series.aspx

  1. http://msdn.microsoft.com/en-us/library/system.web.preapplicationstartmethodattribute.aspx

    いくつかの監視スレッドを開始するために必要な上記の両方。

  2. データを監視するWindowServiceを作成します。サードパーティのホスティングサービスでサイトをホストしても、監視するデータを提供するWebサービスを作成してください。

  3. スケジュールを使用http://quartznet.sourceforge.net データを監視するジョブを作成します。

ありがとう。

1

別の方法では、Global.asaxのApplication_Startメソッドを使用することができます。詳細はthis pageを参照してください。

protected void Application_Start() 
{ 
    //code your initial request to start the task 
    //use a thread to start the task in the background 
} 

次に、ワーカースレッドを一定期間スリープ状態にしてからしばらくしてから作業に戻すことができます。

+0

ああ、素晴らしい。どうもありがとうございます。このファイルからデータベースにアクセスできない理由はありますか?私が宣言を上に置いても、私はそれを間違っているのですか?単純な選択クエリです。 – Jason

+0

@ Jason正確な理由はわかりませんが、この時点からデータベースにアクセスすることはお勧めできません。クラスライブラリでそれを行い、Webプロジェクトから参照する方がよいでしょう。この方法で、Global.asaxからその機能を呼び出すことができます。私はそのようにしました。また、あなたのデータベースにアクセスする機能を含むことができるあなたのWebアプリケーションのユーティリティクラスを持つことができます。これが遅れて返信してくれたことを嬉しく思います。 – a4bike

関連する問題