Le httpclient doit-il être transitoire ou singleton ?

Table des matières:

Le httpclient doit-il être transitoire ou singleton ?
Le httpclient doit-il être transitoire ou singleton ?

Vidéo: Le httpclient doit-il être transitoire ou singleton ?

Vidéo: Le httpclient doit-il être transitoire ou singleton ?
Vidéo: Let's Talk HTTP in .NET Core - Steve Gordon 2024, Décembre
Anonim

La classe HttpClient est plus appropriée comme singleton pour un seul domaine d'application. Cela signifie que le singleton doit être partagé entre plusieurs classes de conteneurs. Avec cette tactique, vous obtenez un singleton, mais cela le rend difficile à partager. La classe HttpClient implémente l'interface IDisposable.

Devons-nous créer une nouvelle instance unique de HttpClient pour toutes les requêtes ?

Bien qu'il implémente l'interface IDisposable, il s'agit en fait d'un objet partagé. Cela signifie que sous les couvertures, il est réentrant et sans fil. Au lieu de créer une nouvelle instance de HttpClient pour chaque exécution, vous devriez partager une seule instance de HttpClient pendant toute la durée de vie de l'application.

Devez-vous réutiliser HttpClient ?

HttpClient est destiné à être instancié une fois et réutilisé tout au long de la vie d'une application. L'instanciation d'une classe HttpClient pour chaque requête épuisera le nombre de sockets disponibles sous de lourdes charges. Cela entraînera des erreurs SocketException.

HttpClient n'est-il pas géré ?

Bien que HttpClient implémente indirectement l'interface IDisposable, l'utilisation standard de HttpClient est de ne pas en disposer après chaque requête. L'objet HttpClient est destiné à vivre aussi longtemps que votre application a besoin de faire des requêtes

HttpClient est-il thread-safe ?

HttpClient est entièrement thread-safe quand est utilisé avec un gestionnaire de connexion thread-safe tel que MultiThreadedHttpConnectionManager. … En même temps, l'instance HttpClient et le gestionnaire de connexions doivent être partagés entre tous les threads pour une efficacité maximale.

Conseillé: