У меня есть требование создать экран отчета для разных финансовых периодов. Поскольку это довольно большой набор данных с множеством правил, процесс может занять много времени (более часа для возврата некоторых отчетов).
Каков наилучший способ обработки этого сценария внутри MVC?
Меня беспокоит:
Это действительно действительные проблемы.
Как уже отмечали некоторые из комментаторов: если отчеты не зависят от ввода от пользователя, то вы можете генерировать отчеты заранее, скажем, на ночной основе.
С другой стороны, если отчеты зависят от ввода от пользователя, вы можете обойти свои проблемы несколькими способами, но вы должны по крайней мере разделить операцию на несколько этапов:
В зависимости от того, как вы это реализуете, пользователь может закрыть браузер, выпить глоток кофе и вернуться к завершенному отчету.
Если ваше приложение работает на Windows Server с IIS, ваш код ASP.Net может создать запись в таблице db, что будет означать, что отчет должен быть создан.
Затем вы можете использовать Windows Service или консольное приложение, которое может работать на одном сервере и постоянно проверять наличие новых полей в таблице. Эта служба создаст отчет, и во время создания он должен обновить поле таблицы, чтобы указать прогресс. На странице ASP.net может отображаться индикатор выполнения, получение индикатора прогресса из db с помощью ajax-запросов или просто обновление страницы каждые несколько секунд.
Если вы работаете в облаке Windows Azure, вы можете использовать WebWorker вместо Windows Service
Для блокировки экрана на вашей странице вы можете использовать jQuery Block-UI library