Можно ли безопасно создавать потоки в ASP.NET MVC? - PullRequest
3 голосов
/ 15 мая 2009

У меня есть запланированное задание, которое нужно запустить, перейдя на страницу, мой веб-хост не позволяет мне использовать планировщик Windows.

Одна из задач, которую выполняет эта задача, - получить некоторые данные из множества других веб-сайтов, из-за того, насколько медленными могут быть веб-запросы. Я настроил задачу на использование потоков.

Запуск этой задачи из действия mvc, похоже, приводит к тому, что весь веб-сервер выходит из строя, из-за чего он отказывается загружать больше страниц.

Разве плохо использовать потоки из веб-приложения? Есть ли способ для меня, чтобы безопасно сделать это? Какие существуют ограничения потоков? Мне действительно нужно знать больше информации?

РЕДАКТИРОВАТЬ: ПОДРАЗДЕЛЕНИЯ

Если я использую потоки из пула потоков (который используется во время выполнения ASP.NET ( спасибо Антон ), могу ли я ограничить, сколько потоков он может использовать? Что такое пул потоков ASP.NET ограничение размера?

Было бы лучше иметь отдельный сайт, который делает это? Возможно, виртуальная папка, содержащая отдельное приложение ASP.NET? Это помешало бы мне ограничить пул потоков, верно?

Ответы [ 3 ]

3 голосов
/ 15 мая 2009

Я был бы удивлен, если бы это активно вызывало проблему, если эти потоки не пытаются ответить на запрос / ответ (который теперь может исчезнуть). Какие симптомы вы видите? Можете ли вы определить "дурацкий"?

Я обычно использую потоки для регистрации и т. Д., Без проблем.

Чтобы свести к минимуму влияние, вы можете использовать шаблон «производитель / потреблять», поэтому у вас есть только один (или несколько) рабочих потоков, обслуживающих как бы много потоков запросов / ответов ASP.NET MVC.

3 голосов
/ 15 мая 2009

При обслуживании входящих запросов среда выполнения ASP.NET получает потоки из .NET ThreadPool, емкость которой ограничена. Поэтому, если вы используете потоки из этого пула протоколов, это может повредить масштабируемости ваших приложений.

Путь к этому будет порождать обычные Thread, но их можно убить, когда ваш AppPool будет переработан.

0 голосов
/ 15 мая 2009

Я думаю, это зависит от того, как это делается. Я не очень компетентен в том, что касается потоков в ASP.NET, но я думаю, что есть риск, что вы в конечном итоге будете использовать потоки, которые в противном случае использовались бы для обслуживания запросов от клиентов.

Вот учебник по многопоточности в ASP.NET , который может помочь вам немного продвинуться вперед.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...