Создание Azure ресурсов из Net Базовое веб-приложение блокирует интерфейс - PullRequest
0 голосов
/ 30 марта 2020

Вкратце, каков наилучший способ создания Azure ресурсов (VM, ResourceGroups и т. Д. 1016 *), которые определяются программно, без блокировки интерфейса веб-приложения из-за длительного времени, которое некоторые из этих операций занимают?

Более подробно: у меня есть Net Core веб-приложение, в которое добавляются клиенты, вручную. После добавления он автоматически создает некоторые ресурсы для Azure. Однако я заметил, что мои интерфейсы «заблокированы» во время этих операций. Каков относительно простой способ отсоединения этих операций от веб-приложения? Я имел в виду отправку триггера с использованием Service Bus или Azure Relay и срабатывание Azure Function. Однако мне кажется, что все эти ресурсы возвращают что-то обратно, и мое веб-приложение ждет этого. Для этого мне нужен «метод отправки и забывания». Просто отправьте триггер для создания этих ресурсов, пока не беспокойтесь о возвращаемых значениях и продолжайте работу с приложением.

Если в моем веб-приложении также работает метод отправки и возврата, то есть также хорошо.

Любые предложения приветствуются!

1 Ответ

1 голос
/ 30 марта 2020

Вам нужно поставить в очередь работу, чтобы запустить фон, а затем немедленно вернуть действие. Самый простой способ сделать это - создать размещенный сервис. Есть несколько способов сделать это:

  1. Использовать фоновую службу в очереди и фактически ставить в очередь работу, которая будет выполнена в вашем действии.
  2. Просто напишите необходимая информация для таблицы базы данных, магазина Redis и т. д. c. и используйте синхронизированную службу для выполнения работы по расписанию.

В любом случае вы также можете рассмотреть возможность разделения на рабочую службу ( по сути, отдельное приложение, состоящее только из размещенной службы, вместо запуска его в том же экземпляре, что и ваше веб-приложение). Это позволяет вам независимо масштабировать службу, а также изолирует ваше веб-приложение от проблем, с которыми может столкнуться служба.

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

...