HttpClientFactory.Create vs neue HttpClient
Ich bin neugierig, was ist der Zweck der HttpClientFactory
Klasse. Es gibt keine Beschreibung, warum es existiert auf der MSDN-Website (siehe link).
Gibt es Create
Methoden mit mehr spezialisierten Argumente, aber meist Frage ich mich, was ist der Unterschied zwischen dem Aufruf der Funktion ohne Parameter und der normale Konstruktor.
var httpClient = HttpClientFactory.Create();
VS
var httpClient = new HttpClient();
Meisten Beispiele sehe ich die Verwendung von new HttpClient()
ohne using
Aussagen, obwohl die HttpClient
Klasse stammt aus IDisposable
.
Da die HttpClient
Klasse wird von IDisposable
gibt es einige pooling oder die Zwischenspeicherung erfolgt durch die Fabrik? Gibt es performance-Vorteile, oder ist es egal?
InformationsquelleAutor der Frage Bart Verkoeijen | 2013-09-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Fabrik ist Hilfsmethode zur Unterstützung bei der Erstellung von einem client, wenn Sie mehr als eine DelegatingHandler in der pipeine. Delegieren-Handler müssen miteinander verbunden werden, bilden eine pipeline. Dieses Werk können Sie um Weitergabe der Handler als array und die Fabrik kümmern Sie zusammen verbindend.
Glaube ich, und nehmen Sie nicht mein Wort für es, dass die CreatePipeline Methode kann verwendet werden, über die auf der server-Seite zum erstellen des message-handling-pipeline für eine Web-API HttpServer.
Ich bin froh, Sie sind nicht zu sehen, viele Beispiele für die Verwendung von Blöcken um HTTPClient als ich Kämpfe gegen diese Praxis für das, was fühlt sich an wie Jahre. Obwohl HttpClient tut implementieren Einweg-es macht nur für den Umgang mit Ausnahmen Szenarien, wo es zerstört wird, während eine Anfrage läuft. HttpClient-Instanzen sollte lange gelebt. Entsorgen Sie gewaltsam schließt die zugrunde liegende TCP-Verbindung, soll gebündelt werden. HttpClient ist thread-sicher und kann sicher verwendet werden viele Male von verschiedenen threads. Das ist, wie es verwendet werden soll, nicht die einzelne Nutzung, block-Muster, die ich regelmäßig sehe.
InformationsquelleAutor der Antwort Darrel Miller
Lassen Sie mich hinzufügen @DarrelMiller Antwort:
Sollten Sie die Aufmerksamkeit auf die Lebensdauer der HttpClient-Instanzen, wenn die Skalierung keine Bedeutung für Sie. Bitte Was ist der Mehraufwand für die Erstellung eines neuen HttpClient pro Anruf in ein WebAPI-client?
InformationsquelleAutor der Antwort Dave Black