Есть клиент который что-то запрашивает у api (метод http get). Api же отправляет тяжелую задачу в очередь, и по завершении задачи нужно оповестить клиента о результате. Каким образом получить отложенный ответ от web api для каждого клиента?
Первый вызов апи это загрузка файла и отдача идентификатора задания. Сервер запускает задачу в фоне и пишет какие то результаты, допустим сколько фреймов отрендерил и сколько времени осталось и статус задачи
Ваш клиент раз в 10 секунд опрашивает адрес с запросом ну что там? Получает эти 3 метрики.
Когда получает статус готово делает запрос на апи с результатами или на контроллер ошибки
Владимир Коротенко, на стороне клиента 2 события, завершения задачи и ошибки и никаких таймеров на запрос состояния задачи и запрос результатов или ошибок, на стороне сервера отправка ошибки или результата сразу по завершении, без всякого хранения промежуточного или окончательного результата, кучи дополнительных методов webapi. Более простая архитектура гораздо больший профит, особенно по сравнению с целыми 20 мегабайтами, которые на фоне standalone сборки вообще невидимыми будут.
Владимир Коротенко, оба решения имеют право на жизнь. Я привел плюсы, которые, для меня, перевешивают минусы, да и автор говорил про тяжелую задачу, например, минут на 10. А если ещё несколько задач, несколько десятков, например, то один лишний сокет будет мелочью на фоне кол-ва запросов. Оба варианта имеют смысл, каждый решает, что ему важнее.