net experts.asp.net mvc, IIS, потоки и т. Д.
Существует вопрос, что я и мои коллеги не могут найти ответ, который удовлетворит всех нас.
На веб-сайте, который всегда имеет большую нагрузку, нам нужно выполнить несколько длительных задач асинхронно (обработка изображений, построение кеша, ...). Первоначальная реализация использовала объект Thread
для каждого такого запроса. Я думал, что использование может быть излишним, и это также может произойти в ситуации, когда больше нитей не может быть создано. Я использовал подход «Task.Run» для всех таких запросов, которые за сценой используют ThreadPool.
Мне сказали, что это плохо, потому что IIS Application Pool
использует сам по себе ThreadPool
, и может возникнуть ситуация, когда эти фоновые задачи блокируются для обслуживания обычного HTTP-запроса, что также верно.
Какой подход лучше всего использовать здесь: Threads
или Task
?
Я знаю, что лучше всего извлечь все это в службу Windows и какую-то очередь, но на данный момент мы не можем этого сделать.
Любое другое мнение приветствуется.
спасибо.
Перемещение любых длинных вещей из ASP.NET для разделения службы Windows или роли работника Azure, и вы сэкономите массу усилий. –