Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 3103|Odpoveď: 0

[Zdroj] .NET/C# Zdrojový kód HttpClient jednoduchá analýza

[Kopírovať odkaz]
Zverejnené 24. 6. 2023 13:05:41 | | | |
Požiadavky: V architektúrach mikroslužieb sa volania medzi službami často používajú protokol HTTP, zvyčajne s triedou HttpClient na vykonávanie HTTP požiadaviek alebo jeho použitieRefit.HttpClientFactory、WebApiClientCoreKnižnice tretích strán založené na zapuzdrení HttpClient.

Pre viac informácií o používaní HttpClient, pozrite si:Prihlásenie na hypertextový odkaz je viditeľné.

Zdrojový kód HttpClient:Prihlásenie na hypertextový odkaz je viditeľné.

V HttpClient konštruktore bez parametrov je objekt HttpClientHandler štandardne inštanciovaný a HttpClientHandler dedí a implementuje abstraktnú triedu HttpMessageHandler.Predvolený tok: HttpClient -> HttpClientHandler -> SocketsHttpHandler -> ...



Podľa analýzy zdrojového kódu je objekt zdedený z HttpMessageHandleru konkrétnou implementáciou HttpClient odosielajúcej HTTP požiadavky. HttpClientHttpRequestMessageObjekt sa odovzdá a následne prijmeHttpResponseMessageObjekt vracia obsah.

Skúste vytvoriť novú triedu TestHttpHandler, zdediť abstraktnú triedu HttpMessageHandler a implementovať metódu SendAsync, a potom ju inštancovať v HttpClient konštruktore s nasledujúcim kódom:

Ako je uvedené nižšie:



Hoci volá HttpClient na odoslanie GET požiadavky, konkrétna implementácia metódy SendAsync neodosiela HTTP požiadavku a neexistuje žiadny sieťový tok, takžeMôžete odpojiť sieťový kábel a program bude fungovať normálne

priPri použití objektu HttpClient sa podkladový socket neuvoľní okamžite, čo môže spôsobiť problémy s vyčerpaním lôžkov. Microsoft si je tohto problému vedomý a odporúča používať IHttpClientFactory v projektoch ASP.NET Core na vytváranie HttpClient objektov.IHttpClientFactory zoskupuje továrensky vytvorené inštancie HttpMessageHandleru do jedného poolu, aby znížil spotrebu zdrojov. Keď vytvoríte novú inštanciu HttpClient, môžete inštanciu HttpMessageHandler v poole znovu použiť(ak obdobie prežitia nevypršalo).

ASP.NET Core (XV) používa HttpClient na odosielanie HTTP požiadaviek
https://www.itsvse.com/thread-10311-1-1.html

IHttpClientFactory pre .NET:Prihlásenie na hypertextový odkaz je viditeľné.

ASP.NET Core má koncept pipeline middleware,V skutočnosti má HttpClient aj koncept pipeline middleware s pomocou Delegating Handler, ako je znázornené na obrázku nižšie:



Použitím tejto funkcie môžeme zachytávať požiadavky a odpovede, napríklad zvýšiť autentifikáciu tokenov pred požiadavkami, zaznamenať čas potrebný na požiadavky a odpovede a zabaliť dáta odpovedí.

Stačí zdediť triedu DelegatingHandler a prepísať metódu SendAsync.



Zaznamenávanie HTTP požiadaviek trvá čas a kód je nasledovný:

Zavolajte IHttpClientFactory na vytvorenie HttpClient a odoslanie požiadavky, ako je znázornené na nasledujúcom obrázku:



(Koniec)




Predchádzajúci:Ajax-hook pre webový vývoj zachytáva všetky požiadavky XMLHttpRequest
Budúci:.NET/C# parameter metódy NULL null
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com