ASP.NET MVC и длительные действия - PullRequest
2 голосов
/ 17 июня 2009

У меня есть действие контроллера, которое объединяет данные из нескольких источников: веб-службы, базы данных, поиска файлов и т. Д. И передает результаты в представление. Таким образом, для отображения страницы все задачи должны быть выполнены. В настоящее время они выполняются последовательно, но, поскольку они независимы, я думаю запустить их параллельно, поскольку это может улучшить производительность.

Итак, что будет лучшим подходом для достижения этой цели? Для каждой задачи начать новый поток и заблокировать основной поток, как все задачи завершены? Должен ли я использовать поток из пула потоков или создать новый поток вручную? Использование потоков из пула потоков ограничит возможности моего веб-сервера обслуживать новые запросы, так что это может быть не очень хорошей идеей. Создание новых потоков вручную может быть дорогостоящим, так что в конечном итоге будет ли выигрыш в производительности при параллельном выполнении этих задач или просто будет выполняться последовательно?

Ответы [ 2 ]

1 голос
/ 17 июня 2009

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

0 голосов
/ 17 июня 2009

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

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