0

ASP.WEB Web Api コントローラーを使用して、遅いコードを起動して忘れる必要があります。それを行う良い方法は何ですか?つまり、遅いコードがどこかで実行され続けている間、コントローラーがブラウザーに HTML 応答を返すようにしたいということです。

トレッド プールからワーカー スレッドを取得し、コントローラーによって作成された複雑なオブジェクトを渡すことは良い考えですか? それとも、作業を行うために別の Windows サービスを作成する必要がありますか?

4

1 に答える 1

2

ソリューションは、詳細または状況とワークロードによって異なります。リクエストを受け取ったら、新しいタスクFactory.StartNewを確実に開始できます。これは技術的には何の問題もありません。ただし、次のことを考慮する必要があります。

  1. データを顧客に返却する必要がありますか?
  2. このタスクは Web サーバーのリソースを使い果たすため、これらのタスクに非常に長い時間がかかり、大量のトラフィックが発生した場合、顧客が列に並んで処理を開始するのを待っている状況に陥る可能性があります。この状況では、Windows Service を備えたバックエンド サーバーの方がはるかに優れていると思います。
  3. 上記のすべてのタスクは、IIS リセットの対象となります。バックグラウンド タスクの処理中に強制終了される可能性があります。
于 2013-10-17T13:14:18.753 に答える