У меня есть сайт asp.net-mvc, и я использую nhibernate для своего ORM.
У меня есть текущее действие контроллера, которое выполняет базовое обновление CRUD (запрашивает элемент из базы данных, а затем обновляет кучу значений и возвращает обратно в таблицу db). Затем он возвращает простой ответ 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?), Чтобы получить дорогостоящую операцию, вызванную действием контроллера, но не из-за этого замедлить действие контроллера?