Я ищу лучшие практики для реализации приведенного ниже сценария - у меня уже есть некоторые решения для этого (не реализованы), но я хотел убедиться в этом, поэтому я делюсь ситуацией здесь.
Сценарий
У меня есть приложение ASP.NET Web API (netcore)
, которое должно вернуть сложную структуру данных, отформатированную в json
. Давайте назовем это WebAPI.NumberOne
. Этот внутренний API должен вызывать другую конечную точку API
, которая выполняет основную работу, то есть, вызывая внешние API 22
, используя шаблон async
await
с Task.WaitAll
, чтобы убедиться, что все external APIs
выполнили задание, а затем выполнили некоторую обработку каждого ответа, такую как анализ ответов на тип результата, и, наконец, вернули результат в WebAPI.NumberOne
. Я хочу назвать второй WebAPI.NumberTwo
.
Ограничение
В настоящее время мы не можем упростить WebAPI.NumberTwo
, и он должен выполнять всю эту тяжелую работу насвой. Кроме того, наш клиент не хочет, чтобы в проект были внедрены какие-либо новые технологии, такие как платформы очередей сообщений.
Проблема:
У меня есть эта проблемаполучение тайм-аута от WebAPI.NumberOne
, так как другому API иногда требуется около 10 минут для завершения работы. И, возможно, некоторые другие потенциальные риски, о которых я не знаю сейчас.
Мои мысли
- Я думал о реализации
Web Hook Receiver and Listener
, чтобы, когдаWebAPI.NumberTwo
завершает свою работу с POST
результатами для получателя, а с другой стороны, слушатель должен уведомить WebAPI.NumberOne
о результатах. - Я считаю, что использование концепции служебной шины и очереди сообщений также может бытьвесьма полезно для этого сценария, но поскольку наш клиент не хочет иметь новую технологию на месте, я не стал использовать механизмы очереди сообщений.
Итак, сказав выше, чтокакая-нибудь обычная лучшая практика для таких сценариев? Я более заинтересован в том, чтобы узнать о различных подходах и наилучшей практике, даже несмотря на ограничения, которые я упомянул выше. Цените свое время и помощь.