3 votes

Utilisation de HttpClient statique par rapport à un HttpClient différent pour chaque ensemble de points de terminaison

Alors mon application implique beaucoup d'appels réseau (probablement vers 10 serveurs différents) et la récupération de données. Selon quelques articles que j'ai lus, il est recommandé de réutiliser une instance HTTPClient car cela évite le gaspillage de ressources (sockets et autres). Mais je trouve un peu difficile de concevoir un module autour d'un HTTPClient statique qui soit extensible et robuste. Toutes mes connexions serveur ont besoin de différents ensembles d'en-têtes, de paramètres de requête, etc. Est-ce que je serais mieux en utilisant un modèle un HTTPClient par serveur/point de terminaison.

1voto

Pedro Fernandes Points 296

Il est plus facile si vous créez une instance HttpClient pour chaque serveur.

Vous pouvez créer une classe singleton, en tant qu'enveloppe pour static httpClient et les passer avec votre mécanisme d'injection de dépendance :

public class ServerAClient {
  private HttpClient _client;
  private static object _locker = new object();

  public static HttpClient GetInstance() {
    if (_client == null) {
      lock (_locker) {
        // créez votre httpclient ici
        _client = instance;
      }
    }

    return _client;
  }
}

public class MyController : Controller {
  private readonly ServerAClient _aclient;
  public MyController(ServerAClient Aclient) {
    _aclient = Aclient;
  }

  public IHttpAction Index() {
    ...
   _aclient.DoSomething();
  }
}

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