asp.netでBackgroundworkerを使用することは可能ですか? それが悪い考えだとしたら、それはなぜですか?
2 に答える
一般的に良いことも悪いこともありません。すべては使用方法に基づいています。将来予想される問題を考慮すると、この記事とその中のリンクは非常に優れていることがわかります http://www.hanselman.com/ブログ/HowToRunBackgroundTasksInASPNET.aspx
数年前、Phil Haack は、ASP.NET で繰り返されるバックグラウンド タスクの危険性について素晴らしい記事を書きました。その中で彼は、人々がバックグラウンドで仕事をしようとするときに非常によくある落とし穴をいくつか指摘しています。それを読んでください、しかしここに彼の投稿からの要約があります.
リクエストに関連付けられていないスレッドで未処理の例外が発生すると、プロセスが停止します。Web ファームでサイトを実行すると、同じタスクを同時に実行しようとするアプリの複数のインスタンスが発生する可能性があります。サイトが実行されている AppDomain は、さまざまな理由で停止し、バックグラウンド タスクを停止する可能性があります。バックグラウンド タスクを自分で作成できると思っている場合は、間違っている可能性があります。私はあなたのスキルを非難しているわけではありません。さらに、なぜあなたはしなければならないのですか?
バックグラウンドで物事を行うための優れた方法がたくさんあり、多くのライブラリと選択肢が利用可能です。
一部の ASP.NET アプリはデータ センターの IIS でホストされ、その他は Azure クラウドでホストされます。私の意見では、使用範囲はおおよそ次のとおりです。
一般: ASP.NET Web サイトでバックグラウンド タスクを記述するために使用される Hangfire (または同様のオープン ソース ライブラリ) クラウド: Azure WebJobs Web サイト外でバックグラウンド タスクの実行をオフロードし、ワークロードをスケーリングするために使用される正式な Azure 機能 高度: Azure ワーカー ロールクラウド サービスでは、Web サイトとは別にバックグラウンド処理のワークロードをスケーリングし、マシンを制御する必要があります Azure Web ジョブの使用方法に関する優れた記事やビデオ、およびスケーラブルな Azure クラウド サービスのワーカー ロールのしくみに関するドキュメントが多数ありますが、ホストされている ASP.NET アプリケーションがどのようにバックグラウンド サービスを簡単に利用できるかについては、それほど重要ではありません。ここにいくつかあります。
これを参照してください:ASP.NETでBackgroundWorkerスレッドを実行する方法