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.
Réponse
Trop de publicités?
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();
}
}