У меня есть веб-сайт asp.net-mvc, и я использую nhibernate для своего ORM.
У меня есть текущее действие контроллера, которое выполняет базовое обновление CRUD (запрашивает элемент из базы данных, а затем обновляеткуча значений и фиксирует обратно в таблицу БД).Затем он возвращает простой ответ json клиенту, чтобы указать успех или ошибку.
public ActionResult UpdateEntity(MyEntity newEntity)
{
var existingEntity = GetFromRepository(newEntity.Id);
UpdateExistingEntity(newEntity, existingEntity);
return Json(SuccessMessage);
}
В некоторых случаях (при условии успешной фиксации и изменения определенных полей в моем объекте) я теперь хочу вызвать некоторые дополнительныедействия (например, отправка писем по электронной почте нескольким людям и запуск кода, генерирующего отчет), но я не хочу замедлять работу пользователя, который выполняет обновление.Поэтому я обеспокоен тем, что если бы я сделал это:
public ActionResult UpdateEntity(MyEntity newEntity)
{
var existingEntity = GetFromRepository(newEntity.Id);
bool keyFieldsHaveChanged = UpdateExistingEntity(newEntity, existingEntity);
if (keyFieldsHaveChanged)
{
GenerateEmails();
GenerateReports();
}
return Json(SuccessMessage);
}
, то это было бы слишком медленно для пользовательского опыта обновления.Есть ли в любом случае (asyngc?) Запуск дорогостоящей операции из-за действия контроллера, но не из-за этого замедленного действия контроллера?