HttpClienta été conçu pour être réutilisé pour plusieurs appels . Même sur plusieurs threads. Le HttpClientHandlera des informations d'identification et des cookies qui sont destinés à être réutilisés lors d'appels. Avoir une nouvelle HttpClientinstance nécessite de reconfigurer tout cela. En outre, la DefaultRequestHeaderspropriété contient des propriétés destinées à plusieurs appels. Le fait de devoir réinitialiser ces valeurs à chaque demande annule le point.
Un autre avantage majeur de HttpClientest la possibilité d'ajouter HttpMessageHandlersdans le pipeline de demandes / réponses pour appliquer des préoccupations transversales. Il peut s'agir de la journalisation, de l'audit, de la limitation, de la gestion des redirections, de la gestion hors ligne, de la capture de métriques. Toutes sortes de choses différentes. Si un nouveau HttpClient est créé à chaque demande, tous ces gestionnaires de messages doivent être configurés à chaque demande et, d'une manière ou d'une autre, tout état au niveau de l'application qui est partagé entre les demandes de ces gestionnaires doit également être fourni.  
Plus vous utilisez les fonctionnalités de HttpClient, plus vous verrez que la réutilisation d'une instance existante a du sens.
Cependant, le plus gros problème, à mon avis, est que lorsqu'une HttpClientclasse est supprimée, elle dispose HttpClientHandler, ce qui ferme ensuite de force la TCP/IPconnexion dans le pool de connexions géré par ServicePointManager. Cela signifie que chaque demande avec un nouveau HttpClientnécessite le rétablissement d'une nouvelle TCP/IPconnexion.
D'après mes tests, en utilisant HTTP simple sur un réseau local, le succès des performances est assez négligeable. Je soupçonne que c'est parce qu'il existe un keepalive TCP sous-jacent qui maintient la connexion ouverte même lorsque vous HttpClientHandleressayez de la fermer.  
Sur les demandes qui vont sur Internet, j'ai vu une histoire différente. J'ai vu une baisse de performance de 40% en raison de la nécessité de rouvrir la demande à chaque fois.
Je soupçonne que le coup sur une HTTPSconnexion serait encore pire.
Mon conseil est de conserver une instance de HttpClient pour la durée de vie de votre application pour chaque API distincte à laquelle vous vous connectez.  
               
              
Stopwatchclasse pour la comparer. Mon estimation serait qu'il serait plus logique d'en avoir un seulHttpClient, en supposant que toutes ces instances sont utilisées dans le même contexte.