Trieda HttpClient je vhodnejšia ako singleton pre doménu jednej aplikácie. To znamená, že singleton by mal byť zdieľaný medzi viacerými triedami kontajnerov. S touto taktikou síce získate singleton, ale to sťažuje zdieľanie. Trieda HttpClient implementuje rozhranie IDisposable.
Máme vytvoriť novú jedinú inštanciu HttpClient pre všetky požiadavky?
Hoci implementuje rozhranie IDisposable, v skutočnosti ide o zdieľaný objekt. To znamená, že pod prikrývkou je reentrantný a bezpečný pre vlákna. Namiesto vytvárania novej inštancie HttpClient pre každé spustenie by ste mali zdieľať jednu inštanciu HttpClient počas celej životnosti aplikácie.
Mali by ste znova použiť
HttpClient je určený na vytvorenie inštancie raz a opätovné použitie počas životnosti aplikácie. Vytvorením triedy HttpClient pre každú požiadavku sa vyčerpá počet dostupných soketov pri veľkom zaťažení. Výsledkom budú chyby SocketException.
Je HttpClient nespravovaný?
Hoci HttpClient nepriamo implementuje rozhranie IDisposable, štandardným použitím HttpClient nie je jeho likvidácia po každej požiadavke. Objekt HttpClient je určený na to, aby mohol fungovať tak dlho, ako dlho potrebuje vaša aplikácia vytvárať požiadavky
Je HttpClient bezpečný pre vlákna?
HttpClient je plne bezpečný pre vlákna, keď sa používa so správcom pripojenia bezpečným pre vlákna, ako je MultiThreadedHttpConnectionManager. … Inštancia HttpClient a správca pripojenia by mali byť zároveň zdieľané medzi všetkými vláknami, aby sa dosiahla maximálna efektivita.