HttpClientFactory.Créer vs new HttpClient
Je suis curieux de savoir quel est le but de la HttpClientFactory
de la classe. Il n'y a pas de description de pourquoi il existe sur le site web MSDN (voir lien).
Il y a Créer
méthodes avec plus spécialisés arguments, mais surtout, je me demande quelle est la différence entre l'appel sans paramètres et le constructeur normal.
var httpClient = HttpClientFactory.Create();
VS
var httpClient = new HttpClient();
Dans la plupart des exemples que j'voir l'utilisation de new HttpClient()
, sans using
états, même si le HttpClient
de la classe dérive de IDisposable
.
Depuis le HttpClient
classe dérive de IDisposable
, est-il une mise en commun ou la mise en cache de fait par l'usine? Existe-il des avantages de performance, ou n'est-il pas d'importance?
Vous devez vous connecter pour publier un commentaire.
Usine est la méthode d'aide à la création d'un client, lorsque vous avez plus d'un DelegatingHandler dans le pipeine. Déléguer les gestionnaires doivent être connectées ensemble pour former un pipeline. Cette usine permet de transmettre les maîtres-chiens dans un tableau et l'usine va prendre soin de les relier ensemble.
Je crois, et ne prenez pas mon mot pour cela, que le CreatePipeline méthode peut être utilisée sur le côté serveur pour générer le message de la manipulation de pipeline pour une API Web HttpServer.
Je suis heureux que vous ne voyez pas beaucoup d'exemples de l'aide de blocs autour de HTTPClient comme je l'ai été la lutte contre cette pratique pour ce qui semble être des années. Bien que HttpClient ne mettre en œuvre jetable, il ne prend-il pour gérer les exceptions les scénarios où il est détruit pendant qu'une demande est en cours. HttpClient instances doit être de longue durée. Jeter de force à la ferme la connexion TCP sous-jacente qui est censé être mis en commun. HttpClient est thread-safe et peut être utilisé en toute sécurité à de nombreuses reprises par différents threads. C'est à quoi il est destiné à être utilisé, et non pas le fait d'utiliser, à l'aide de modèle de bloc que je vois régulièrement.
HttpClient
s à plusieurs reprises.Permettez-moi d'ajouter à @DarrelMiller réponse:
Vous devez faire attention à la durée de vie de votre HttpClient instances en cas de mise à l'échelle est de toute importance pour vous. Veuillez vous référer à Qu'est-ce que la surcharge de la création d'un nouveau HttpClient par appel dans un WebAPI client?