Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 3103|Atbildi: 0

[Avots] .NET/C# HttpClient avota koda vienkārša analīze

[Kopēt saiti]
Publicēts 24.06.2023 13:05:41 | | | |
Prasības: Mikropakalpojumu arhitektūrās zvani starp pakalpojumiem bieži izmanto HTTP protokolu, parasti izmantojot HttpClient klasi, lai veiktu HTTP pieprasījumus vai to izmantotuRefit.HttpClientFactory、WebApiClientCoreTrešo pušu bibliotēkas, kuru pamatā ir HttpClient iekapsulēšana.

Papildinformāciju par HttpClient lietošanu, lūdzu, skatiet:Hipersaites pieteikšanās ir redzama.

HttpClient avota kods:Hipersaites pieteikšanās ir redzama.

Konstruktorā HttpClient bez parametriem objekts HttpClientHandler tiek instancēts pēc noklusējuma, un HttpClientHandler pārmanto un ievieš abstrakto klasi HttpMessageHandler.Noklusējuma plūsma: HttpClient -> HttpClientHandler -> SocketsHttpHandler -> ...



Saskaņā ar avota koda analīzi objekts, kas mantots no HttpMessageHandler, ir konkrēta HttpClient ieviešana, kas sūta HTTP pieprasījumus. HttpClient būsHttpRequestMessageObjekts tiek nodots un pēc tam saņemtsHttpResponseMessageObjekts atgriež saturu.

Mēģiniet izveidot jaunu TestHttpHandler klasi, pārmantojot HttpMessageHandler abstrakcijas klasi un ieviešot SendAsync metodi, un pēc tam instancējot to HttpClient konstruktorā ar šādu kodu:

Kā parādīts zemāk:



Lai gan HttpClient tiek aicināts nosūtīt GET pieprasījumu, konkrētā SendAsync metodes ieviešana nesūta HTTP pieprasījumu, un nav tīkla plūsmas, tāpēcJūs varat atvienot tīkla kabeli, un programma darbosies normāli

pieIzmantojot HttpClient objektu, pamatā esošā ligzda netiek atbrīvota uzreiz, kas var izraisīt kontaktligzdas izsīkuma problēmas. Microsoft apzinās šo problēmu un iesaka izmantot IHttpClientFactory ASP.NET Core projektos, lai izveidotu HttpClient objektus.IHttpClientFactory apvieno rūpnīcā izveidotās HttpMessageHandler instances pūlā, lai samazinātu resursu patēriņu. Izveidojot jaunu HttpClient instanci, varat atkārtoti izmantot HttpMessageHandler instanci pūlā(ja izdzīvošanas periods nav beidzies).

ASP.NET Core (XV) izmanto HttpClient, lai nosūtītu HTTP pieprasījumus
https://www.itsvse.com/thread-10311-1-1.html

IHttpClientFactory .NET:Hipersaites pieteikšanās ir redzama.

ASP.NET Core ir cauruļvada starpprogrammatūras jēdziens,Patiesībā HttpClient ir arī cauruļvada starpprogrammatūras jēdziens ar Deleģēšanas apstrādātāja palīdzību, kā parādīts attēlā:



Izmantojot šo funkciju, mēs varam pārtvert pieprasījumus un atbildes, piemēram, palielināt marķieru autentifikāciju pirms pieprasījumiem, reģistrēt pieprasījumiem un atbildēm nepieciešamo laiku un ietīt atbilžu datus.

Vienkārši mantojiet DelegatingHandler klasi un ignorējiet SendAsync metodi.



HTTP pieprasījumu ierakstīšana prasa laiku, un kods ir šāds:

Zvaniet IHttpClientFactory, lai izveidotu HttpClient un nosūtītu pieprasījumu, kā parādīts šajā attēlā:



(Beigas)




Iepriekšējo:Tīmekļa izstrādes ajax-āķis pārtver visus XMLHttpRequest pieprasījumus
Nākamo:.NET/C# metodes parametrs NULL null
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com