Je suis tombé sur un problème ( https://github.com/HTBox/allReady/issues/1313 ) sur GitHub où ils ont discuté de la ConfigureAwait(false)
suppression du code, affirmant que, dans ASP.NET Core
l'appel à
ConfigureAwait(false)
est redondant et ne fait rien
Le mieux que je puisse trouver ici est une «note d'accompagnement» dans une réponse (de Stephen Cleary, https://stackoverflow.com/a/40220190/2805831 ) disant que
ASP.NET Core n'a plus de «contexte»
Donc, est-ce ConfigureAwait(false)
vraiment inutile dans ASP.NET Core (même si vous utilisez .Net Framework complet)? At-il un réel gain de performances dans certains cas ou une différence de résultat / sémantique?
EDIT: Est-ce différent dans cet aspect si je l'héberge en tant qu'application console ou dans IIS?
la source
ConfigureAwait(false)
, car la bibliothèque peut être consommée par différentes applications (ASP.NET Core, WPF, UWP, Console, etc.)ConfigureAwait(false)
, bien que pertinent dans ASP.NET classique, n'est en aucun cas nécessaire . C'est un compromis: cela atténue en quelque sorte certains blocages de synchronisation sur asynchrone (qui sont de toute façon des défauts de conception - ils n'existent pas à moins que quelqu'un ne fasse quelque chose de stupide) et augmente parfois les performances de ~ microseconde en ne rechargeant pas le contexte. Au prix de ne pas pouvoir dépendre du contexte, et d'avoirConfigureAwait
tout à travers votre code. stackoverflow.com/questions/28221508/…Réponses:
ConfigureAwait
a uniquement des effets sur le code exécuté dans le contexte d'unSynchronizationContext
dont ASP.NET Core n'a pas (ASP.NET "Legacy" le fait).Le code à usage général doit toujours l'utiliser car il peut être exécuté avec un fichier
SynchronizationContext
.SynchronizationContext ASP.NET Core
la source
Et ça?
En ce moment (février-2020), les développeurs sur MS Blog recommandent d'utiliser ConfigureAwait (false) afin d'améliorer les performances, d'éviter les blocages. https://devblogs.microsoft.com/dotnet/configureawait-faq/
la source