asp.net - mvc - net core view
Controlador ASP.NET MVC4 Async: ¿por qué usarlo? (1)
Estoy tratando de entender por qué y cuándo debería usar una acción de controlador async
. Eventualmente, cuando uso await
en él, esperará a que la operación se complete para devolver la Vista.
Por ejemplo
public async Task<ActionResult> TryMe()
{
await SomeActionAsync();
return View();
}
En este caso, si utilizo la función async
o no uso la función async
, la Acción tardará el mismo tiempo en ejecutarse.
Si no estoy tratando de ejecutar al menos 2 operaciones lentas (que no son dependientes entre sí) en paralelo, no veo ninguna razón para usar una acción de controlador async
.
Por favor corrígeme si estoy equivocado. Creo que me falta algo aquí.
El objetivo de la palabra clave await
es permitirle trabajar con operaciones asincrónicas sin escribir callbacks feos.
El uso de operaciones asincrónicas ayuda a evitar el desperdicio de subprocesos del grupo de subprocesos.
Explicación
ASP.Net ejecuta todo su código en subprocesos desde el grupo de subprocesos administrados.
Si tiene demasiadas solicitudes lentas ejecutándose al mismo tiempo, el grupo de subprocesos se llenará, y las nuevas solicitudes deberán esperar a que un hilo se libere.
Con frecuencia, sin embargo, sus solicitudes son lentas no porque estén haciendo cálculos (vinculados al cálculo), sino porque están esperando algo más, como un disco duro, un servidor de base de datos o un servicio web externo (IO o red). -ligado).
No tiene sentido desperdiciar un hilo precioso de subprocesos simplemente para esperar a que finalice la operación externa.
Las operaciones asincrónicas le permiten iniciar la operación, devolver el hilo al grupo y luego "activar" en un subproceso diferente del grupo de subprocesos cuando finaliza la operación.
Mientras la operación se está ejecutando, no se consumen hilos.