Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 3103|Atsakyti: 0

[Šaltinis] .NET/C# HttpClient šaltinio kodo paprasta analizė

[Kopijuoti nuorodą]
Paskelbta 2023-06-24 13:05:41 | | | |
Reikalavimai: Mikropaslaugų architektūrose skambučiai tarp paslaugų dažnai naudoja HTTP protokolą, paprastai naudojant HttpClient klasę HTTP užklausoms pateikti arba jį naudotiRefit.HttpClientFactory、WebApiClientCoreTrečiųjų šalių bibliotekos, pagrįstos "HttpClient" inkapsuliavimu.

Daugiau informacijos apie "HttpClient" naudojimą rasite:Hipersaito prisijungimas matomas.

HttpClient šaltinio kodas:Hipersaito prisijungimas matomas.

Konstruktoriuje be parametrų HttpClientHandler objektas yra sukurtas pagal numatytuosius nustatymus, o HttpClientHandler paveldi ir įgyvendina abstrakčią klasę HttpMessageHandler.Numatytasis srautas: HttpClient -> HttpClientHandler -> SocketsHttpHandler -> ...



Remiantis šaltinio kodo analize, objektas, paveldėtas iš HttpMessageHandler, yra konkretus HttpClient, siunčiančio HTTP užklausas, įgyvendinimas. HttpClient busHttpRequestMessageObjektas perduodamas ir gaunamasHttpResponseMessageObjektas grąžina turinį.

Pabandykite sukurti naują TestHttpHandler klasę, paveldėdami HttpMessageHandler abstrakcijos klasę ir įgyvendindami SendAsync metodą, o tada sukurkite ją HttpClient konstruktoriuje naudodami šį kodą:

Kaip parodyta žemiau:



Nors skambinant HttpClient siųsti GET užklausą, konkretus SendAsync metodo įgyvendinimas nesiunčia HTTP užklausos, ir nėra tinklo srauto, todėlGalite atjungti tinklo kabelį ir programa veiks normaliai

prieNaudojant HttpClient objektą, pagrindinis lizdas neatleidžiamas iš karto, o tai gali sukelti lizdo išsekimo problemų. "Microsoft" žino apie šią problemą ir rekomenduoja naudoti "IHttpClientFactory" "ASP.NET Core" projektuose kuriant "HttpClient" objektus."IHttpClientFactory" sutelkia gamykloje sukurtus "HttpMessageHandler" egzempliorius į telkinį, kad sumažintų išteklių suvartojimą. Kurdami naują "HttpClient" egzempliorių, telkinyje galite pakartotinai naudoti "HttpMessageHandler" egzempliorių(jei išgyvenimo laikotarpis dar nepasibaigęs).

"ASP.NET Core" (XV) naudoja "HttpClient" HTTP užklausoms siųsti
https://www.itsvse.com/thread-10311-1-1.html

"IHttpClientFactory", skirta .NET:Hipersaito prisijungimas matomas.

"ASP.NET Core" turi vamzdyno tarpinės programinės įrangos koncepciją,Tiesą sakant, "HttpClient" taip pat turi dujotiekio tarpinės programinės įrangos koncepciją su "Delegating Handler" pagalba, kaip parodyta toliau pateiktame paveikslėlyje:



Naudodami šią funkciją galime perimti užklausas ir atsakymus, pvz., padidinti atpažinimo ženklo autentifikavimą prieš užklausas, įrašyti užklausoms ir atsakymams reikalingą laiką ir apvynioti atsakymo duomenis.

Tiesiog paveldėkite DelegatingHandler klasę ir nepaisykite SendAsync metodo.



HTTP užklausų įrašymas užtrunka, o kodas yra toks:

Skambinkite IHttpClientFactory, kad sukurtumėte "HttpClient" ir išsiųstumėte užklausą, kaip parodyta šiame paveikslėlyje:



(Pabaiga)




Ankstesnis:Ajax-kabliukas žiniatinklio kūrimui perima visas XMLHttpRequest užklausas
Kitą:.NET/C# metodo parametras NULL null
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com