2012-03-14 13 views
3

正確には:私は.NET Webフォームシステムを持っています。これらの値に応じて、いくつかの値をチェックしてタスクを実行する方法が必要です。私の顧客のクレジットカードがまだ有効かどうかを毎月確認する必要があります。短期間でいくつかのタスク/チェックがあります。定期的な作業のためのWebアプリケーション内のサブシステム

件名に最適なアプローチは何ですか。私はWindowsサービスについて考えましたが、私はWCFについて読んでいます。この課題を解決するための現代的で良い方法は何かをお伝えください。私は.NET 4.0について考えています。

+0

重要な点は、定期タスクでユーザーとのインターフェイスが必要なのか、完全に自立できるのかという点です。 –

+0

タイトルに「.NET」などの接頭辞を付けないでください。それがタグのためのものです。 –

+0

単純なアプローチは、単に遅いタイマーやアプリケーションの起動時に定期的なタスクをチェックすることです。 – kenny

答えて

4

WCFは、WindowsサービスまたはIISのどちらでも実行できるインターフェイスです。このWCFインターフェイスを使用して、いくつかの同期アクションまたは非同期アクションをトリガします。

あなたのケースは、タイマーのWindowsサービスでデータベースまたはファイルに格納されたデータの検証を実行するように思えます。

オンデマンドでプロセスを開始したい場合は、WCFエンドポイントを追加すると便利です。タイマーのアプローチが十分であれば、WCFを気にする必要はありません。あなたが推測きたように、Windowsのプロセス

3

でWCFをホストするための

参考資料、Windowsサービスは、この問題に対する良いアプローチです。

同様に、コンソールアプリケーションを作成し、Windowsでスケジュールされたタスクを実行することもできます。

これは、バックエンドの仕組みと実際に最もよく慣れ親しんだものによって異なります。

コンソールアプリケーションの作成は非常に簡単ですが、スケジュールされたタスクを実行できるようにユーザーがログオンしていることを確認する必要はありません。

サービスは実装するのが少し複雑ですが、OSに適切に組み込まれているという利点があります。

MSDNには、C#でサービスを書き込む良いガイドを持って、あなたは必ずしもWCFは必要ありません。 http://msdn.microsoft.com/en-us/library/aa984464(v=vs.71).aspx

1

あなたはquartz.netのようなものを使用することができます。

ます。また、タスクをトリガするために、Webページを使用することができます - あなたは、追加のコンポーネントを必要としないこの方法を:あなたは、サーバーの制御が限られている場合はhttp://quartznet.sourceforge.net/

+0

可能性の問題は、現在、.NET 4をサポートするバージョンが開発中であるということです。あなたは*必要が*あなたのタスクは2週間ごとを実行する場合 –

1

(許可すなわちのみ通常のHTTPページ) - リンクを参照してください。サーバーにインストールされています。タスクをトリガーするページへの定期的なリクエストを他のマシンが設定するよりも、タスクが再起動可能で、十分に短いことを確認してください。通常のページリクエストでそれぞれを完了することができます。ページは「次のタスクを実行する」データで応答することができるので、クライアントのページは、操作全体が完了するまでサーバーにpingを続けることができます。

注:Webサービスプロセス内で長時間実行されるタスクを実行しようとすると、アプリケーションプール/アプリドメインのリサイクルによって信頼性が低下します。

+1

また、このアプローチは、あなたがそれを必要とするときの周りの誰かがウェブサイトにアクセスしていることを保証しません。アレクセイが言ったように。サーバーにアクセスできない場合は、これが目標を達成する方法の1つです。しかし、他の状況ではお勧めしません! –

関連する問題