Logo boatexistence.com

Soll httpclient transient oder singleton sein?

Inhaltsverzeichnis:

Soll httpclient transient oder singleton sein?
Soll httpclient transient oder singleton sein?

Video: Soll httpclient transient oder singleton sein?

Video: Soll httpclient transient oder singleton sein?
Video: Dependency Injection in .NET 6 2024, Kann
Anonim

Die HttpClient-Klasse ist besser als Singleton für eine einzelne App-Domain geeignet. Dies bedeutet, dass der Singleton von mehreren Containerklassen gemeinsam genutzt werden sollte. Mit dieser Taktik erh alten Sie zwar einen Singleton, aber das macht es schwierig, ihn zu teilen. Die HttpClient-Klasse implementiert die IDisposable-Schnittstelle.

Sollen wir eine neue einzelne Instanz von HttpClient für alle Anfragen erstellen?

Obwohl es die IDisposable-Schnittstelle implementiert, ist es tatsächlich ein gemeinsames Objekt. Das bedeutet, dass es unter der Decke reentrant und threadsicher ist. Anstatt für jede Ausführung eine neue Instanz von HttpClient zu erstellen, sollten Sie eine einzelne Instanz von HttpClient für die gesamte Lebensdauer der Anwendung gemeinsam nutzen.

Sollten Sie HttpClient wiederverwenden?

HttpClient ist dazu bestimmt, einmal instanziiert zu werden und während der gesamten Lebensdauer einer Anwendung wiederverwendet zu werden. Durch das Instanziieren einer HttpClient-Klasse für jede Anforderung wird die Anzahl der verfügbaren Sockets bei hoher Auslastung erschöpft. Dies führt zu SocketException-Fehlern.

Ist HttpClient nicht verw altet?

Obwohl HttpClient die IDisposable-Schnittstelle indirekt implementiert, ist die Standardnutzung von HttpClient, sie nicht nach jeder Anfrage zu löschen. Das HttpClient-Objekt soll so lange bestehen bleiben, wie Ihre Anwendung HTTP-Anfragen stellen muss.

Ist HttpClient Thread-sicher?

HttpClient ist vollständig Thread-sicher, wenn mit einem Thread-sicheren Verbindungsmanager wie MultiThreadedHttpConnectionManager verwendet wird. … Gleichzeitig sollten die HttpClient-Instanz und der Verbindungsmanager für maximale Effizienz von allen Threads gemeinsam genutzt werden.

Empfohlen: