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).
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)
|