Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 3103|Vastaus: 0

[Lähde] .NET/C# HttpClient-lähdekoodin yksinkertainen analyysi

[Kopioi linkki]
Julkaistu 24.6.2023 13.05.41 | | | |
Vaatimukset: Mikropalveluarkkitehtuureissa palveluiden väliset puhelut käyttävät usein HTTP-protokollaa, yleensä HttpClient-luokkaa HTTP-pyyntöjen tekemiseen tai sen käyttöönRefit.HttpClientFactory、WebApiClientCoreKolmannen osapuolen kirjastot, jotka perustuvat HttpClient-kapselointiin.

Lisätietoja HttpClientin käytöstä löytyy osoitteesta:Hyperlinkin kirjautuminen on näkyvissä.

HttpClient-lähdekoodi:Hyperlinkin kirjautuminen on näkyvissä.

HttpClient-parametrittomassa konstruktorissa HttpClientHandler-objekti instansoidaan oletuksena, ja HttpClientHandler perii ja toteuttaa HttpMessageHandler-abstraktin luokan.Oletusvirtaus: HttpClient -> HttpClientHandler -> SocketsHttpHandler -> ...



Lähdekoodianalyysin mukaan HttpMessageHandlerista peritty objekti on konkreettinen toteutus HttpClientistä, joka lähettää HTTP-pyyntöjä. HttpClientHttpRequestMessageObjekti välitetään ja vastaanotetaanHttpResponseMessageObjekti palauttaa sisältöä.

Kokeile luoda uusi TestHttpHandler-luokka, periä HttpMessageHandler-abstraktioluokka ja toteuttaa SendAsync-metodi, ja sitten toteuttaa se HttpClient-konstruktorissa seuraavalla koodilla:

Kuten alla on esitetty:



Vaikka HttpClientia kutsutaan lähettämään GET-pyyntö, SendAsync-menetelmän erityinen toteutus ei lähetä HTTP-pyyntöä, eikä verkkovirtaa ole, jotenVoit irrottaa verkkokaapelin ja ohjelma toimii normaalisti

AtKun käytetään HttpClient-objektia, taustalla olevaa sokettia ei vapauteta välittömästi, mikä voi aiheuttaa hylsyjen uupumisongelmia. Microsoft on tietoinen tästä ongelmasta ja suosittelee IHttpClientFactoryn käyttöä ASP.NET Core -projekteissa HttpClient-objektien luomiseen.IHttpClientFactory poolaa tehtaan luomat HttpMessageHandler -instanssit pooliin resurssien kulutuksen vähentämiseksi. Kun luot uuden HttpClient-instanssin, voit käyttää HttpMessageHandler-instanssia uudelleen poolissa(jos eloonjäämisaika ei ole vielä päättynyt).

ASP.NET Core (XV) käyttää HTTP-pyyntöjen lähettämiseen HttpClientia
https://www.itsvse.com/thread-10311-1-1.html

IHttpClientFactory .NET:lle:Hyperlinkin kirjautuminen on näkyvissä.

ASP.NET Corella on pipeline middleware-konsepti,Itse asiassa HttpClientilla on myös pipeline middleware -konsepti Delegating Handlerin avulla, kuten alla olevassa kuvassa näkyy:



Tämän ominaisuuden avulla voimme siepata pyyntöjä ja vastauksia, kuten lisätä token-tunnistautumista ennen pyyntöjä, tallentaa pyyntöjen ja vastausten ajan sekä paketoida vastausdataa.

Peri vain DelegatingHandler-luokka ja ohita SendAsync-metodi.



HTTP-pyyntöjen tallentaminen vie aikaa, ja koodi on seuraava:

Soita IHttpClientFactorylle luodaksesi HttpClientin ja lähettääksesi pyynnön, kuten seuraavassa kuvassa näkyy:



(Loppu)




Edellinen:Verkkokehityksen ajax-hook sieppaa kaikki XMLHttpRequest-pyynnöt
Seuraava:.NET/C# metodiparametri NULL null
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com