0

私は最近新しい会社で働き始め、現在は Web アプリケーション (asp.net) に取り組んでいます。このアプリケーションは Global.asax を使用して、特定の間隔でさまざまなことを行うタイマーを開始します (電子メールの送信、データベースへのさまざまな値の設定など)。

彼らが今求めているのは、サード パーティの Web サービスを呼び出してデータを取得し、データベースを更新することです。通常、上記のすべてを Windows サービスで行います。しかし、彼らはglobal.asaxにこの種のものがあることを喜んでいるようです

新しいプロジェクトを作成し、この新しい機能を Windows サービスとして開発するつもりですが、面倒でしょうか? たぶん、これをglobal.asaxに追加する必要がありますか?

私の質問は、上記のシナリオに最も適した/最良のアプローチは何ですか?

4

1 に答える 1

2

外部サービスの使用が最良の選択です。

  1. リクエストに関連付けられていないスレッドで未処理の例外が発生すると、プロセスが停止します。これは、Application_Error メソッドを使用してハンドラーをセットアップしている場合でも発生します。

  2. Web ファームでサイトを実行すると、同じタスクを同時に実行しようとするアプリの複数のインスタンスが発生する可能性があります。最初のアイテムよりも対処するのが少し難しいですが、それでも難しくありません。典型的なアプローチの 1 つは、タスクを調整するための同期メカニズムとして、データベースなどのすべてのサーバーに共通のリソースを使用することです。

  3. サイトが実行されている AppDomain は、さまざまな理由で停止し、バックグラウンド タスクを停止する可能性があります。コードの実行中にこれが発生すると、データが破損する可能性があります。

詳細については:

于 2012-07-16T09:06:35.800 に答える