Pool de fils de fils
J’ai toujours voulu réécrire le projet en asynchrone, mais ASP.NETMVC3 est trop encombrant à écrire, .NET 4.5 et ASP.NET code MVC sont relativement simples, Microsoft semble toujours avoir aimé faire cela, chaque chose mature, il doit évoluer plusieurs versions pour tendre à standardiser. ASP.NET pourquoi faut-il utiliser l’asynchrone dans MVC, IIS dispose d’un pool de threads pour traiter les requêtes des utilisateurs ; lorsqu’une nouvelle requête arrive, les threads du pool sont programmés pour traiter la requête, mais lorsque la concurrence est élevée, les threads du pool ne peuvent plus répondre à un nombre important de requêtes, et chaque thread du pool est occupé lors du traitement de la requête, le thread traitant la requête sera bloqué, et le thread ne peut pas fournir de services à une autre requête, si la file de requêtes est pleine, le web Le serveur rejette la requête et se retrouve en état HTTP 503 occupé. Si vous faites face à une latence élevée, comme des opérations réseau, la plupart de ces threads attendent simplement l’état et ne font rien la plupart du temps, ces threads peuvent utiliser une programmation asynchrone pour mieux en tirer parti.
Traitement asynchrone
Par exemple, si une requête génère un appel réseau qui prend deux secondes à être complété, la requête est effectuéeIl faut deux secondes pour s’exécuter à la fois de façon synchrone et asynchrone。 MaisLors d’un appel asynchrone, le serveur ne bloque pas la réponse aux autres requêtes en attendant que la première requête soit complétée。 Ainsi, lorsqu’il y a de nombreuses requêtes appelant des opérations de longue durée, les requêtes asynchrones peuvent empêcher la mise en file d’attente. Dans .NET 4.5, le pool de threads maximum est de 5000, et les mots-clés await et async ont également été ajoutés dans .NET 4.5 pour simplifier la programmation asynchrone.
Synchrone ou asynchrone (extrait du MSDN)
- Typiquement, les pipelines de synchronisation sont utilisés lorsque les conditions suivantes sont remplies :
- Fonctionnement simple ou temps d’exécution court.
- La simplicité est plus importante que l’efficacité.
- Cette opération concerne principalement des opérations CPU plutôt que des opérations impliquant une grande surcharge disque ou réseau. Utiliser une méthode d’opération asynchrone pour les opérations liées au CPU n’apporte aucun avantage et entraîne également plus de surcharge.
En général, les pipelines asynchrones sont utilisés lorsque les conditions suivantes sont remplies :
- Les opérations sont liées au réseau ou aux E/S plutôt qu’au CPU.
- Des tests ont montré que les opérations de blocage constituent un goulot d’étranglement pour la performance du site, et qu’en utilisant des méthodes asynchrones pour ces appels de blocage, l’IIS peut traiter davantage de requêtes.
- Le parallélisme est plus important que la simplicité du code.
- Vous souhaitez fournir un mécanisme permettant aux utilisateurs d’annuler des requêtes de longue date.
ASP.NET utilisent des contrôleurs asynchrones dans MVC
|