34 votes

Contrôleur ASP.NET MVC4 Async - Pourquoi utiliser?

Je suis en train d'essayer de comprendre pourquoi et quand dois-je utiliser un contrôleur async action. Finalement, quand je vais utilise "en attente", il va attendre la fin de l'opération afin de retourner à la Vue.

Par exemple

public async Task<ActionResult> TryMe()
{
   await SomeActionAsync();
   return View();
}

Dans ce cas, si j'utilise la async ou non à l'aide de l'asynchrone, l'Action prendra le même temps à s'exécuter.

Si je n'essaie pas de courir au moins 2 opérations lentes (qui ne sont pas dépendants les uns des autres) en parallèle, je ne vois pas de raison d'utiliser un contrôleur async action.

S'il vous plaît corrigez-moi si je me trompe. Je pense que je suis absent quelque chose ici.

50voto

SLaks Points 391154

Le point de l' await mot d'ordre est de vous permettre de travailler avec les opérations asynchrones sans écrire laid rappels.

À l'aide d'opérations asynchrones permet d'éviter de perdre du pool de threads.

Explication

ASP.Net exécute tous de votre code dans les fils de la gestion de pool de threads.
Si vous avez trop lent demandes fonctionnant à la fois, le pool de threads obtiendrez le plein, et les nouvelles demandes devront attendre un thread pour se libérer.

Souvent, cependant, vos demandes sont lents, non pas parce qu'ils font le calcul (compute-lié), mais parce qu'ils sont en attente de quelque chose d'autre, comme un disque dur, un serveur de base de données ou un webservice (IO - ou liées au réseau).

Il est inutile de gaspiller un précieux pool de threads thread simplement attendre pour l'externe de l'opération à la fin.

Les opérations asynchrones vous permettent de démarrer l'opération, le retour de votre fil à la piscine, puis "wake up" sur un autre thread du pool lorsque l'opération est terminée.
Alors que l'opération est en cours d'exécution, pas de threads sont consommés.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X