Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 3103|Răspunde: 0

[Sursă] Analiză simplă a codului sursă .NET/C# HttpClient

[Copiază linkul]
Postat pe 24.06.2023 13:05:41 | | | |
Cerințe: În arhitecturile microserviciilor, apelurile între servicii folosesc adesea protocolul HTTP, de obicei clasa HttpClient pentru a face cereri HTTP sau pentru a o folosiRefit.HttpClientFactory、WebApiClientCoreBiblioteci terțe bazate pe încapsularea HttpClient.

Pentru mai multe informații despre utilizarea HttpClient, vă rugăm să consultați:Autentificarea cu hyperlink este vizibilă.

Cod sursă HttpClient:Autentificarea cu hyperlink este vizibilă.

În constructorul fără parametri HttpClient, obiectul HttpClientHandler este instanțiat implicit, iar HttpClientHandler moștenește și implementează clasa abstractă HttpMessageHandler.Flux implicit: HttpClient -> HttpClientHandler -> SocketsHttpHandler -> ...



Conform analizei codului sursă, obiectul moștenit de la HttpMessageHandler este o implementare concretă a HttpClientului care trimite cereri HTTP. HttpClient vaHttpRequestMessageObiectul este transmis și apoi primitHttpResponseMessageObiectul returnează conținutul.

Încearcă să creezi o nouă clasă TestHttpHandler, să moștenești clasa de abstracție HttpMessageHandler și să implementezi metoda SendAsync, apoi să o instanțiezi în constructorul HttpClient, cu următorul cod:

Așa cum se arată mai jos:



Deși apelează HttpClient pentru a trimite o cerere GET, implementarea specifică a metodei SendAsync nu trimite o cerere HTTP și nu există flux de rețea, deciPoți deconecta cablul de rețea și programul va funcționa normal

laCând se folosește un obiect HttpClient, socket-ul de bază nu este eliberat imediat, ceea ce poate cauza probleme de epuizare a soclului. Microsoft este conștient de această problemă și recomandă utilizarea IHttpClientFactory în proiectele ASP.NET Core pentru a crea obiecte HttpClient.IHttpClientFactory grupează instanțele HttpMessageHandler create în fabrică într-un pool pentru a reduce consumul de resurse. Când creezi o nouă instanță HttpClient, poți reutiliza instanța HttpMessageHandler din pool(dacă perioada de supraviețuire nu a expirat).

ASP.NET Core (XV) folosește HttpClient pentru a trimite cereri HTTP
https://www.itsvse.com/thread-10311-1-1.html

IHttpClientFactory pentru .NET:Autentificarea cu hyperlink este vizibilă.

ASP.NET Core are conceptul de middleware pipeline,De fapt, HttpClient are și conceptul de middleware pipeline cu ajutorul Delegating Handler, așa cum se arată în figura de mai jos:



Folosind această funcție, putem intercepta cererile și răspunsurile, cum ar fi creșterea autentificării tokenului înainte de cereri, înregistrarea timpului necesar pentru cereri și răspunsuri și înfășurarea datelor de răspuns.

Pur și simplu moștenește clasa DelegatingHandler și suprascrie metoda SendAsync.



Înregistrarea cererilor HTTP necesită timp, iar codul este următorul:

Sunați la IHttpClientFactory pentru a crea un HttpClient și a trimite o cerere, așa cum este prezentat în imaginea următoare:



(Sfârșit)




Precedent:Hook-ul ajax pentru dezvoltarea web interceptează toate cererile XMLHttpRequest
Următor:Parametrul metodei .NET/C# NULL
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com