Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 3103|Svar: 0

[Kilde] .NET/C# HttpClient kildekode simpel analyse

[Kopier link]
Opslået på 24/06/2023 13.05.41 | | | |
Krav: I mikroservicearkitekturer bruger opkald mellem tjenester ofte HTTP-protokollen, som regel ved brug af HttpClient-klassen til at lave HTTP-forespørgsler eller bruge denRefit.HttpClientFactory、WebApiClientCoreTredjepartsbiblioteker baseret på HttpClient-indkapsling.

For mere information om brugen af HttpClient, henvises til:Hyperlink-login er synlig.

HttpClient-kildekode:Hyperlink-login er synlig.

I HttpClient-parameterløse konstruktøren er HttpClientHandler-objektet som standard instansieret, og HttpClientHandler arver og implementerer den abstrakte HttpMessageHandler-klasse.Standardflow: HttpClient -> HttpClientHandler -> SocketsHttpHandler -> ...



Ifølge kildekodeanalyse er objektet, der arves fra HttpMessageHandler, en konkret implementering af HttpClient, der sender HTTP-anmodninger. HttpClient vilHttpRequestMessageObjektet sendes ind og modtages derefterHttpResponseMessageObjekt returnerer indhold.

Prøv at oprette en ny TestHttpHandler-klasse, arve HttpMessageHandler-abstraktionsklassen og implementere SendAsync-metoden, og instansier den derefter i HttpClient-konstruktøren med følgende kode:

Som vist nedenfor:



Selvom man kalder HttpClient for at sende en GET-anmodning, sender den specifikke implementering af SendAsync-metoden ikke en HTTP-forespørgsel, og der er ikke noget netværksflow, såDu kan trække netværkskablet ud, og programmet vil fungere normalt

vedNår man bruger et HttpClient-objekt, frigives den underliggende socket ikke straks, hvilket kan give problemer med udtømning af sokkel. Microsoft er opmærksom på dette problem og anbefaler at bruge IHttpClientFactory i ASP.NET Core-projekter til at oprette HttpClient-objekter.IHttpClientFactory samler fabriksoprettede HttpMessageHandler-instanser i en pulje for at reducere ressourceforbruget. Når du opretter en ny HttpClient-instans, kan du genbruge HttpMessageHandler-instansen i poolen(hvis overlevelsesperioden ikke er udløbet).

ASP.NET Core (XV) bruger HttpClient til at sende HTTP-forespørgsler
https://www.itsvse.com/thread-10311-1-1.html

IHttpClientFactory for .NET:Hyperlink-login er synlig.

ASP.NET Core har konceptet pipeline middleware,Faktisk har HttpClient også konceptet pipeline-middleware med hjælp fra Delegating Handler, som vist i figuren nedenfor:



Ved at bruge denne funktion kan vi opsnappe forespørgsler og svar, såsom at øge tokenautentificeringen før anmodninger, registrere den tid, der kræves for anmodninger og svar, samt indpakke svardata.

Arv bare DelegatingHandler-klassen og overskriv SendAsync-metoden.



Registrering af HTTP-forespørgsler tager tid, og koden er som følger:

Kald IHttpClientFactory for at oprette en HttpClient og send en anmodning, som vist på følgende billede:



(Slut)




Tidligere:Ajax-hooken til webudvikling opfanger alle XMLHttpRequest-forespørgsler
Næste:.NET/C# metodeparameter NULL null
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com