Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 3103|Odgovoriti: 0

[Vir] .NET/C# Izvorna koda HttpClient preprosta analiza

[Kopiraj povezavo]
Objavljeno na 24. 06. 2023 13:05:41 | | | |
Zahteve: V arhitekturah mikroservisov klici med storitvami pogosto uporabljajo HTTP protokol, običajno z uporabo razreda HttpClient za izvajanje HTTP zahtevkov ali njegovo uporaboRefit.HttpClientFactory、WebApiClientCoreKnjižnice tretjih oseb, ki temeljijo na enkapsulaciji HttpClient.

Za več informacij o uporabi HttpClient si oglejte:Prijava do hiperpovezave je vidna.

Izvorna koda HttpClient:Prijava do hiperpovezave je vidna.

V konstruktorju HttpClient brez parametrov je objekt HttpClientHandler privzeto instanciran, HttpClientHandler pa podeduje in implementira abstraktni razred HttpMessageHandler.Privzeti tok: HttpClient -> HttpClientHandler -> SocketsHttpHandler -> ...



Po analizi izvorne kode je objekt, podedovan od HttpMessageHandlerja, konkretna implementacija HttpClienta, ki pošilja HTTP zahteve. HttpClient boHttpRequestMessagePredmet se prenese in nato prejmeHttpResponseMessageObjekt vrne vsebino.

Poskusite ustvariti nov razred TestHttpHandler, podedovati abstrakcijski razred HttpMessageHandler in implementirati metodo SendAsync, nato pa ga instancirati v konstruktorju HttpClient z naslednjo kodo:

Kot je prikazano spodaj:



Čeprav kliče HttpClient za pošiljanje GET zahteve, specifična implementacija metode SendAsync ne pošlje HTTP zahteve in ni omrežnega toka, zato ni omrežnega tokaLahko odklopite omrežni kabel in program bo deloval normalno

naPri uporabi objekta HttpClient osnovni socket ni takoj sprosten, kar lahko povzroči težave z izčrpanostjo ležišč. Microsoft se zaveda te težave in priporoča uporabo IHttpClientFactory v projektih ASP.NET Core za ustvarjanje HttpClient objektov.IHttpClientFactory združuje tovarniško ustvarjene primerke HttpMessageHandlerja v bazen, da zmanjša porabo virov. Ko ustvarite novo instanco HttpClient, lahko ponovno uporabite instanco HttpMessageHandler v skupini(če obdobje preživetja ni poteklo).

ASP.NET Core (XV) uporablja HttpClient za pošiljanje HTTP zahtevkov
https://www.itsvse.com/thread-10311-1-1.html

IHttpClientFactory za .NET:Prijava do hiperpovezave je vidna.

ASP.NET Core ima koncept pipeline middleware programske opreme,Pravzaprav ima HttpClient tudi koncept pipeline middleware s pomočjo Delegating Handlerja, kot je prikazano na spodnji sliki:



S to funkcijo lahko prestrežemo zahteve in odgovore, kot so povečanje avtentikacije žetonov pred zahtevami, beleženje časa, potrebnega za zahteve in odgovore, ter ovijanje podatkov o odgovorih.

Preprosto podeduj razred DelegatingHandler in preglasi metodo SendAsync.



Beleženje HTTP zahtevkov traja nekaj časa, koda pa je naslednja:

Pokličite IHttpClientFactory za ustvarjanje HttpClient in pošiljanje zahteve, kot je prikazano na naslednji sliki:



(Konec)




Prejšnji:Ajax-hook za spletni razvoj prestreže vse XMLHttpRequest zahteve
Naslednji:.NET/C# parameter metode NULL null
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com