У меня возник вопрос о том, как наилучшим образом подойти к процессу в рамках существующей веб-службы DotNet2, которую я унаследовал.Лучший дизайн для длительного процесса в веб-сервисе
На высоком уровне этот процесс в настоящее время является следующим
Client
- Пользователь запускает новый запрос через веб-службы вызова из приложения клиент/сервер
- запроса и задачи, созданные и сохраненные в база данных.
- Создана новая тема, которая начинает обработку запроса
- Идентификатор запроса, возвращенный клиенту (опросы клиентов с использованием идентификатора).
Thread
- Грузы до запроса деталей и несколько задач
- Для каждой задачи он запрашивает XML через другую службу (примерно 2 сек ожидания)
- Передает XML в другую службу для обработки (около 3 секунд ожидания)
- Повторите попытку до завершения всех заданий
- Запрашиваемая метка завершена (клиент будет знать свое завершение)
В целом это занимает приблизительно 30 секунд для запроса 6 задач. Поскольку каждая задача выполняется последовательно, она явно неэффективна.
Было бы лучше разбить каждую задачу снова на отдельном потоке, а затем, когда все они будут полностью отмечены, запрос будет завершен?
Мое предложение состоит в том, что я немедленно дублирую количество потоков на 6-10 (количество задач) и обеспокоен тем, как это повлияет на IIS. По моим оценкам, я мог бы сократить нормальный 30-секундный звонок до 5 секунд, если бы у меня была обработка каждой задачи одновременно, но под нагрузкой этот дизайн страдал?
Текущий дизайн работает хорошо, и пользователи не имеют проблем со временем, затраченным на обработку, но я бы предпочел, чтобы он работал быстрее, если это возможно.
Это просто плохой дизайн, и если есть лучший подход? В настоящее время я ограничен текущей версией DotNet.
Благодаря
Не выполняя подробный анализ системы, такие проектные определения такого рода (с любой степенью уверенности) невозможны. – Kevin
Привет, Кевин, какие дополнительные детали вам понадобятся? –
Я имел в виду только то, что при взгляде на дизайн/архитектуру одного компонента в отдельности общие рекомендации, хотя, возможно, идеально подходят для этой части в изоляции, могут быть совершенно разными, чем советы, которые вы получили бы при рассмотрении системы в целом , – Kevin