Как вы уже описали, это потенциальная проблема масштабируемости.
ASP.NET имеет пул потоков, который (в прошлый раз, когда я проверял, был 250, но мог увеличиться до 1000 - настраивается, но более 1000 не рекомендуется), обслуживает запросы. HTTP-запросы в ASP.NET имеют thread-affinity , поэтому между этими потоками и запросами существует однозначное отношение.
Когда вы вызываете внешние службы, поток запросов продолжает зависать, а если у вас заканчиваются потоки, ваш клиент получит ошибку 503.
Решение для масштабирования этой службы обычно включает запрос клиента на запуск операции и затем клиент будет непрерывно опрашивать службу, чтобы проверить, если закончил Если вы внедряете эти сервисы как легкие и эффективные, вы теряете немного производительности, но получаете большую масштабируемость .
Вам также нужно подумать о:
- Сохранение результата, чтобы клиент мог его получить.
- Отбрасывание результата, если клиент не возвращается на сервер за результатом.