Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 3103|Svare: 0

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

[Kopier lenke]
Publisert på 24.06.2023 13:05:41 | | | |
Krav: I mikrotjenestearkitekturer bruker samtaler mellom tjenester ofte HTTP-protokollen, vanligvis ved å bruke HttpClient-klassen for å gjøre HTTP-forespørsler, eller bruke denRefit.HttpClientFactory、WebApiClientCoreTredjepartsbiblioteker basert på HttpClient-innkapsling.

For mer informasjon om bruk av HttpClient, vennligst se:Innloggingen med hyperkoblingen er synlig.

HttpClient-kildekode:Innloggingen med hyperkoblingen er synlig.

I den parameterløse konstruktøren HttpClient er HttpClientHandler-objektet som standard instansiert, og HttpClientHandler arver og implementerer den abstrakte klassen HttpMessageHandler.Standardflyt: HttpClient -> HttpClientHandler -> socketsHttpHandler -> ...



Ifølge kildekodeanalyse er objektet arvet fra HttpMessageHandler en konkret implementering av HttpClient som sender HTTP-forespørsler. HttpClient vilHttpRequestMessageObjektet sendes inn og mottas deretterHttpResponseMessageObjekt returnerer innhold.

Prøv å lage en ny TestHttpHandler-klasse, arve HttpMessageHandler-abstraksjonsklassen og implementere SendAsync-metoden, og deretter instansiere den i HttpClient-konstruktøren med følgende kode:

Som vist nedenfor:



Selv om man kaller HttpClient for å sende en GET-forespørsel, sender den spesifikke implementeringen av SendAsync-metoden ikke en HTTP-forespørsel, og det finnes ingen nettverksflyt, såDu kan koble fra nettverkskabelen, og programmet vil fungere normalt

Når man bruker et HttpClient-objekt, frigjøres ikke den underliggende socketen umiddelbart, noe som kan føre til problemer med utmattelse av sokkelen. Microsoft er klar over dette problemet og anbefaler å bruke IHttpClientFactory i ASP.NET Core-prosjekter for å lage HttpClient-objekter.IHttpClientFactory samler fabrikkopprettede HttpMessageHandler-instanser i en pool for å redusere ressursforbruket. Når du oppretter en ny HttpClient-instans, kan du gjenbruke HttpMessageHandler-instansen i poolen(hvis overlevelsesperioden ikke er utløpt).

ASP.NET Core (XV) bruker HttpClient for å sende HTTP-forespørsler
https://www.itsvse.com/thread-10311-1-1.html

IHttpClientFactory for .NET:Innloggingen med hyperkoblingen er synlig.

ASP.NET Core har konseptet pipeline-mellomvare,Faktisk har HttpClient også konseptet pipeline-mellomvare med hjelp av Delegating Handler, som vist i figuren nedenfor:



Ved å bruke denne funksjonen kan vi avskjære forespørsler og svar, som å øke tokenautentisering før forespørsler, registrere tiden som kreves for forespørsler og svar, og pakke inn svardata.

Bare arv DelegatingHandler-klassen og overstyr SendAsync-metoden.



Opptak av HTTP-forespørsler tar tid, og koden er som følger:

Ring IHttpClientFactory for å opprette en HttpClient og sende en forespørsel, som vist i følgende bilde:



(Slutt)




Foregående:Ajax-hooken for webutvikling avskjærer alle XMLHttpRequest-forespørsler
Neste:.NET/C# metodeparameter NULL null
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com