I asked this question около 5 лет назад о том, как «разгружать» дорогостоящие операции, когда пользователям не нужно ждать (например, auditng и т. Д.), Чтобы быстрее получить ответ на лицевой стороне.В asp.net-mvc, каков правильный способ делать дорогостоящие операции без влияния на других пользователей?
У меня есть связанный, но другой вопрос. На моем asp.net-mvc я создал несколько отчетов, где вы можете генерировать отчеты excel (i am using EPPlus) и отчеты о Powerpoint (i am using aspose.slides). Вот пример действие контроллера:
public ActionResult GenerateExcelReport(FilterParams args)
{
byte[] results = GenerateLargeExcelReportThatTake30Seconds(args);
return File(results, @"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml", "MyReport.xlsx");
}
Функциональность работает прекрасно, но я пытаюсь выяснить, если эти дорогостоящие операции (некоторые отчеты могут занять до 30 секунд, чтобы вернуться) оказывает воздействие других пользователей. В предыдущем вопросе у меня была дорогостоящая операция, которую пользователь DIDN «T должен ждать, но в этом случае ему придется ждать в качестве своего синхронного действия (нажмите« Создать отчет »и ожидайте, что пользователи получат отчет, когда его законченный)
в этом случае, я не забочусь о том, что основной пользователь должен подождать 30 секунд, но я просто хочу, чтобы убедиться, что я не негативно влияют другие пользователи из-за этой дорогостоящей операции, создания файлов и т.д.
Есть ли какая-либо лучшая практика здесь, в asp.net-mvc для этого случая использования?
Асинхронные методы и действительно хорошие, попробуйте эту статью https://www.asp.net/mvc/overview/performance/using-asynchronous-methods-in-aspnet-mvc-4 – Emil