Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 3103|Válasz: 0

[Forrás] .NET/C# HttpClient source code simple analysis

[Linket másol]
Közzétéve 2023. 06. 24. 13:05:41 | | | |
Követelmények: A mikroszolgáltatási architektúrákban a szolgáltatások közötti hívások gyakran használják a HTTP protokollt, általában a HttpClient osztályt használják HTTP kérések létrehozásához vagy annak használatáraRefit.HttpClientFactory、WebApiClientCoreHarmadik féltől származó könyvtárak, amelyek HttpClient kapszuláción alapulnak.

További információért a HttpClient használatáról kérjük, látogasson el a következő oldalakra:A hiperlink bejelentkezés látható.

HttpClient forráskód:A hiperlink bejelentkezés látható.

A HttpClient paraméter nélküli konstruktorban a HttpClientHandler objektum alapértelmezetten megvalósítható, és a HttpClientHandler örökli és megvalósítja a HttpMessageHandler absztrakt osztályt.Alapértelmezett folyamat: HttpClient -> HttpClientHandler -> SocketsHttpHandler -> ...



A forráskód-elemzés szerint a HttpMessageHandler-től örökölt objektum a HttpClient HTTP kéréseket küldő konkrét megvalósítása. A HttpClientHttpRequestMessageA tárgyat átadják, majd átveszikHttpResponseMessageAz objektum tartalmat ad vissza.

Próbáld meg létrehozni egy új TestHttpHandler osztályt, örökölni a HttpMessageHandler absztrakciós osztályt, és megvalósítani a SendAsync metódust, majd ezt a HttpClient konstruktorban a következő kóddal megvalósítani:

Ahogy az alábbiakban látható:



Bár a HttpClientet GET kérés küldésére hívják, a SendAsync módszer konkrét megvalósítása nem küld HTTP kérést, és nincs hálózati folyamat, ígyKihúzhatod a hálózati kábelt, és a program normálisan fog működni

nélHttpClient objektum használata esetén az alatta lévő socket nem szabadul fel azonnal, ami a foglalat kimerülési problémáit okozhatja. A Microsoft tisztában van ezzel a problémával, és azt javasolja, hogy az IHttpClientFactory használata ASP.NET Core projektekben HttpClient objektumok létrehozására.Az IHttpClientFactory gyárilag létrehozott HttpMessageHandler példányokat egy poolba gyűjt az erőforrás-fogyasztás csökkentése érdekében. Amikor új HttpClient példányt hozol létre, előfordulhat, hogy újrahasznosíthatod a HttpMessageHandler példányt a poolban(ha a túlélési idő még nem járt le).

ASP.NET Core (XV) a HttpClient-t használja HTTP kérések küldésére
https://www.itsvse.com/thread-10311-1-1.html

IHttpClientFactory for .NET:A hiperlink bejelentkezés látható.

ASP.NET Core a pipeline middleware koncepcióját alkalmazza,Valójában a HttpClient is rendelkezik a pipeline middleware koncepciójával a Delegating Handler segítségével, ahogy az alábbi ábrán látható:



Ezzel a funkcióval elfoghatjuk a kéréseket és válaszokat, például a token hitelesítés növelését a kérések előtt, a kérések és válaszok idejének rögzítését, valamint a válaszadatok becsomagolását.

Csak örököld az DelegatingHandler osztályt, és felülírd a SendAsync metódust.



Az HTTP kérések rögzítése időt vesz igénybe, és a kód a következő:

Hívja az IHttpClientFactory-t, hogy létrehozz egy HttpClient-t és küldj egy kérést, ahogy az alábbi képen látható:



(Vége)




Előző:Az ajax-hook webfejlesztéshez minden XMLHttpRequest kérést elfog.
Következő:.NET/C# metétus paraméter NULL null
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com