Logo pl.boatexistence.com

Czy httpklient powinien być przejściowy czy pojedynczy?

Spisu treści:

Czy httpklient powinien być przejściowy czy pojedynczy?
Czy httpklient powinien być przejściowy czy pojedynczy?

Wideo: Czy httpklient powinien być przejściowy czy pojedynczy?

Wideo: Czy httpklient powinien być przejściowy czy pojedynczy?
Wideo: Stop using the HttpClient the wrong way in .NET 2024, Może
Anonim

Klasa HttpClient jest bardziej odpowiednia jako singleton dla pojedynczej domeny aplikacji. Oznacza to, że singleton powinien być współdzielony przez wiele klas kontenerów. Dzięki tej taktyce dostajesz singletona, ale to utrudnia udostępnianie. Klasa HttpClient implementuje interfejs IDisposable.

Czy powinniśmy utworzyć nową pojedynczą instancję HttpClient dla wszystkich żądań?

Chociaż implementuje interfejs IDisposable, w rzeczywistości jest obiektem udostępnionym. Oznacza to, że pod osłonami jest bezpieczny i bezpieczny dla wątków. Zamiast tworzyć nowe wystąpienie HttpClient dla każdego wykonania należy udostępnić jedno wystąpienie HttpClient przez cały okres istnienia aplikacji.

Czy powinieneś ponownie użyć

HttpClient jest przeznaczony do jednorazowego tworzenia instancji i ponownego użycia przez cały czas życia aplikacji. Utworzenie wystąpienia klasy HttpClient dla każdego żądania spowoduje wyczerpanie liczby gniazd dostępnych pod dużym obciążeniem. Spowoduje to wystąpienie błędów SocketException.

Czy HttpClient nie jest zarządzany?

Chociaż HttpClient pośrednio implementuje interfejs IDisposable, standardowym zastosowaniem HttpClient nie jest usuwanie go po każdym żądaniu. Obiekt HttpClient ma działać tak długo, jak aplikacja musi wykonywać żądania

Czy HttpClient jest bezpieczny wątkowo?

HttpClient jest w pełni bezpieczny wątkowo, gdy jest używany z menedżerem połączeń bezpiecznym wątkowo, takim jak MultiThreadedHttpConnectionManager. … Jednocześnie instancja HttpClient i menedżer połączeń powinny być współużytkowane przez wszystkie wątki, aby uzyskać maksymalną wydajność.

Zalecana: