Barcelonista Naser Ответов: 2

Как мне реализовать следующий сценарий на практике?


SO. Я разрабатываю приложение, в котором мне нужно выполнять длительные действия, которые, как оказалось, занимают более 30 тысяч МС на запрос, когда я его тестировал. Он выполняет некоторые вызовы API на сторонние серверы и возвращает данные в форматах Json и изображений.
Во время поиска вопросов SO и многих других сообщений в блоге, касающихся этой проблемы, я обнаружил, что у меня есть только два варианта.
1-й. Чтобы действие возвращало частичный вид и отображало его на главном виде, показывая некоторые причудливые загрузочные GIF-файлы до тех пор, пока ход выполнения действия не будет завершен.
2-й. Приходится писать API-контроллеры и делать там фоновую работу.

Каков наилучший выбор между этими двумя решениями и есть ли какая-то другая техника, которую я пропустил и лучше справился с ситуацией?
Спасибо

Что я уже пробовал:

Я просто читаю блоги о веб-API и связанных с ними вещах

2 Ответов

Рейтинг:
2

SteveHolle

Вы можете попробовать использовать поток BackgroundWorker для выполнения длительного процесса и использовать ReportProgress для отправки прогресса обратно в ваш основной поток. Фоновый поток отправит обратный вызов, когда он будет завершен. Тогда ваш основной поток будет в первую очередь отвечать за запуск "причудливых загрузочных GIF-файлов" и графического интерфейса.


Рейтинг:
10

F-ES Sitecore

Любое решение, которое вы реализуете, использующее IIS, будет зависеть от того, что IIS выключит ваше приложение, если оно использует слишком много памяти и т. д. Вы можете передать эту работу службе Windows, возможно, используя MSMQ для отправки запросов в службу, при этом служба выполняет всю фактическую работу и предоставляет механизм, с помощью которого внешний интерфейс может быть проинформирован о ходе выполнения.