ASP.NET MVC4 async controller-Pourquoi utiliser?
j'essaie de comprendre pourquoi et quand je dois utiliser une action de contrôleur async
. Finalement, quand j'utilise await
dans ce, il attendra que l'opération complète afin de retourner la vue.
par exemple
public async Task<ActionResult> TryMe()
{
await SomeActionAsync();
return View();
}
dans ce cas , si j'utilise le async
ou si je n'utilise pas le async
, le Action prendra le même temps d'exécution.
si je n'essaie pas exécuter au moins 2 opérations lentes (qui ne dépendent pas l'une de l'autre) en parallèle, Je ne vois aucune raison d'utiliser une action de contrôleur async
.
corrigez-moi si je me trompe. Je pense que je suis absent quelque chose ici.
1 réponses
le but du mot-clé await
est de vous permettre de travailler avec opérations asynchrones sans écrire des rappels laids.
utilisant des opérations asynchrones permet d'éviter de gaspiller les threads de thread pool.
explication
ASP.Net exécute tout votre code dans les threads du pool de threads géré.
Si vous avez trop de requêtes lentes à la fois, le pool de threads complet, et les nouvelles demandes devront attendre un thread pour se libérer.
souvent, cependant, vos requêtes sont lentes, non pas parce qu'elles font du calcul (lié au calcul), mais parce qu'elles attendent autre chose, comme un disque dur, un serveur de base de données, ou un service Web externe (lié à L'IO ou au réseau).
il ne sert à rien de gaspiller un précieux filetage à filetage fileté simplement pour attendre la fin de l'opération externe.
Les opérations asynchrones vous permettent de démarrer l'opération, de retourner votre thread dans la piscine, puis de "se réveiller" sur un thread différent lorsque l'opération est terminée.
Pendant que l'opération est en cours, aucun thread n'est consommé.