На клиенте, который в вашем случае является контроллером MVC, создайте явный объект Command, который имеет идентификатор (скорее всего, GUID).Затем отправьте одностороннее сообщение, создав новый поток или через ServiceBus для вашего внутреннего процесса, и верните идентификатор команд обратно в представление.
Пока ваш серверный процесс работает, ваш View может опросить (используя JavaScript) наличие URI.например, http://www.mysite.com/asyncresults/GUID.js
Тогда ваш бэкэнд-процесс может создать GUID.js в файловой системе с объектами JSON, которые предоставляют вам достаточно информации для визуализации обновлений прогресса.
Когда клиент опрашивает файл, он получает 404 до тех пор, пока файл не существует.Когда вы получаете 200, вы можете использовать JSON, содержащийся для визуализации вашего интерфейса.
Это решение является масштабируемым и простым в реализации.