Logo ro.boatexistence.com

Ar trebui ca httpclientul să fie tranzitoriu sau singleton?

Cuprins:

Ar trebui ca httpclientul să fie tranzitoriu sau singleton?
Ar trebui ca httpclientul să fie tranzitoriu sau singleton?

Video: Ar trebui ca httpclientul să fie tranzitoriu sau singleton?

Video: Ar trebui ca httpclientul să fie tranzitoriu sau singleton?
Video: Stop using the HttpClient the wrong way in .NET 2024, Mai
Anonim

Clasa HttpClient este mai potrivită ca singleton pentru un singur domeniu de aplicație. Aceasta înseamnă că singleton-ul ar trebui să fie partajat în mai multe clase de containere. Cu această tactică, obțineți un singleton, dar acest lucru face dificilă împărțirea. Clasa HttpClient implementează interfața IDdisposable.

Ar trebui să creăm o nouă instanță unică a HttpClient pentru toate solicitările?

Deși implementează interfața IDdisposable, este de fapt un obiect partajat. Aceasta înseamnă că sub huse este reintrant și sigur. În loc să creați o nouă instanță de HttpClient pentru fiecare execuție, ar trebui să partajați o singură instanță de HttpClient pe toată durata de viață a aplicației.

Ar trebui să refolosiți

HttpClient este intențiat să fie instanțiat o dată și reutilizat pe toată durata de viață a unei aplicații. Instanțiarea unei clase HttpClient pentru fiecare cerere va epuiza numărul de socket-uri disponibile la sarcini mari. Acest lucru va duce la erori SocketException.

Este HttpClient negestionat?

Deși HttpClient implementează indirect interfața IDdisposable, utilizarea standard a HttpClient este să nu o elimine după fiecare solicitare. Obiectul HttpClient este destinat să trăiască atâta timp cât aplicația dvs. trebuie să facă solicitări

Este HttpClient sigur pentru fire?

HttpClient este complet sigur pentru fire atunci cândeste utilizat cu un manager de conexiune sigur, cum ar fi MultiThreadedHttpConnectionManager. … În același timp, instanța HttpClient și managerul de conexiuni ar trebui să fie partajate între toate firele de execuție pentru o eficiență maximă.

Recomandat: