Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 3103|Svar: 0

[Källa] .NET/C# HttpClient källkod enkel analys

[Kopiera länk]
Publicerad på 2023-06-24 13:05:41 | | | |
Krav: I mikrotjänstearkitekturer använder samtal mellan tjänster ofta HTTP-protokollet, vanligtvis med HttpClient-klassen för att göra HTTP-förfrågningar eller använda denRefit.HttpClientFactory、WebApiClientCoreTredjepartsbibliotek baserade på HttpClient-inkapsling.

För mer information om användning av HttpClient, vänligen se:Inloggningen med hyperlänken är synlig.

HttpClient-källkod:Inloggningen med hyperlänken är synlig.

I HttpClients parameterlösa konstruktör instansieras objektet HttpClientHandler som standard, och HttpClientHandler ärver och implementerar den abstrakta klassen HttpMessageHandler.Standardflöde: HttpClient -> HttpClientHandler -> socketsHttpHandler -> ...



Enligt källkodsanalys är objektet som ärvs från HttpMessageHandler en konkret implementation av HttpClient som skickar HTTP-förfrågningar. HttpClient kommerHttpRequestMessageObjektet skickas in och tas sedan emotHttpResponseMessageObjekt returnerar innehåll.

Försök skapa en ny TestHttpHandler-klass, ärva abstraktionsklassen HttpMessageHandler och implementera metoden SendAsync, och sedan instansiera den i HttpClient-konstruktören med följande kod:

Som visas nedan:



Även om man anropar HttpClient för att skicka en GET-förfrågan, skickar den specifika implementationen av metoden SendAsync ingen HTTP-förfrågan, och det finns inget nätverksflöde, såDu kan koppla ur nätverkskabeln och programmet fungerar normalt

vidNär man använder ett HttpClient-objekt släpps inte den underliggande socketen omedelbart, vilket kan orsaka problem med utmattning av hylsor. Microsoft är medvetet om detta problem och rekommenderar att använda IHttpClientFactory i ASP.NET Core-projekt för att skapa HttpClient-objekt.IHttpClientFactory samlar fabriksskapade HttpMessageHandler-instanser i en pool för att minska resursförbrukningen. När du skapar en ny HttpClient-instans kan du återanvända HttpMessageHandler-instansen i poolen(om överlevnadsperioden inte har löpt ut).

ASP.NET Core (XV) använder HttpClient för att skicka HTTP-förfrågningar
https://www.itsvse.com/thread-10311-1-1.html

IHttpClientFactory för .NET:Inloggningen med hyperlänken är synlig.

ASP.NET Core har konceptet pipeline-middleware,Faktum är att HttpClient också har konceptet pipeline-middleware med hjälp av Delegating Handler, som visas i figuren nedan:



Genom att använda denna funktion kan vi avlyssna förfrågningar och svar, såsom att öka tokenautentisering före förfrågningar, registrera tiden som krävs för förfrågningar och svar samt paketera svarsdata.

Ärva bara klassen DelegatingHandler och åsidosätt metoden SendAsync.



Att spela in HTTP-förfrågningar tar tid, och koden är följande:

Anropa IHttpClientFactory för att skapa en HttpClient och skicka en förfrågan, som visas i följande bild:



(Slut)




Föregående:Ajax-hooken för webbutveckling fångar upp alla XMLHttpRequest-förfrågningar
Nästa:.NET/C#-metodparametern NULL null
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com