Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 3103|Antwort: 0

[Quelle] .NET/C# HttpClient-Quellcode-einfache Analyse

[Link kopieren]
Veröffentlicht am 24.06.2023 13:05:41 | | | |
Anforderungen: In Microservices-Architekturen verwenden Anrufe zwischen Diensten häufig das HTTP-Protokoll, meist mit der HttpClient-Klasse für HTTP-Anfragen oder deren NutzungRefit.HttpClientFactory、WebApiClientCoreDrittanbieter-Bibliotheken, die auf HttpClient-Kapselung basieren.

Weitere Informationen zur Nutzung von HttpClient finden Sie bitte:Der Hyperlink-Login ist sichtbar.

HttpClient-Quellcode:Der Hyperlink-Login ist sichtbar.

Im parameterlosen Konstruktor HttpClient wird das HttpClientHandler-Objekt standardmäßig instanziiert, und der HttpClientHandler erbt und implementiert die abstrakte Klasse HttpMessageHandler.Standardfluss: HttpClient -> HttpClientHandler -> SocketsHttpHandler -> ...



Laut Quellcode-Analyse ist das vom HttpMessageHandler geerbte Objekt eine konkrete Implementierung des HttpClient, der HTTP-Anfragen sendet. HttpClient wirdHttpRequestMessageDas Objekt wird weitergegeben und dann empfangenHttpResponseMessageObjekt liefert Inhalt zurück.

Versuchen Sie, eine neue TestHttpHandler-Klasse zu erstellen, die Abstraktionsklasse HttpMessageHandler zu übernehmen und die SendAsync-Methode zu implementieren und sie dann im HttpClient-Konstruktor mit folgendem Code zu instanziieren:

Wie unten gezeigt:



Obwohl HttpClient aufgerufen wird, um eine GET-Anfrage zu senden, sendet die spezifische Implementierung der SendAsync-Methode keine HTTP-Anfrage, und es gibt keinen Netzwerkfluss, sodassDu kannst das Netzwerkkabel abziehen und das Programm funktioniert normal

beiBei Verwendung eines HttpClient-Objekts wird der zugrundeliegende Socket nicht sofort freigegeben, was Probleme mit der Erschöpfung der Fassung verursachen kann. Microsoft ist sich dieses Problems bewusst und empfiehlt, IHttpClientFactory in ASP.NET Core-Projekten zur Erstellung von HttpClient-Objekten zu verwenden.IHttpClientFactory sammelt fabrikerstellte HttpMessageHandler-Instanzen in einen Pool, um den Ressourcenverbrauch zu reduzieren. Wenn Sie eine neue HttpClient-Instanz erstellen, könnten Sie die HttpMessageHandler-Instanz im Pool wiederverwenden(sofern die Überlebenszeit nicht abgelaufen ist).

ASP.NET Core (XV) verwendet HttpClient, um HTTP-Anfragen zu senden
https://www.itsvse.com/thread-10311-1-1.html

IHttpClientFactory für .NET:Der Hyperlink-Login ist sichtbar.

ASP.NET Core das Konzept der Pipeline-Middleware hat,Tatsächlich hat HttpClient auch das Konzept der Pipeline-Middleware mit Hilfe von Delegating Handler, wie in der untenstehenden Abbildung dargestellt:



Durch die Nutzung dieser Funktion können wir Anfragen und Antworten abfangen, wie zum Beispiel die Erhöhung der Token-Authentifizierung vor Anfragen, die Aufzeichnung der benötigten Zeit für Anfragen und Antworten sowie das Einpacken von Antwortdaten.

Erbe einfach die DelegatingHandler-Klasse und überschreibe die SendAsync-Methode.



Das Aufzeichnen von HTTP-Anfragen benötigt Zeit, und der Code ist wie folgt:

Rufen Sie IHttpClientFactory an, um einen HttpClient zu erstellen und eine Anfrage zu senden, wie im folgenden Bild gezeigt:



(Ende)




Vorhergehend:Der ajax-hook für Webentwicklung fängt alle XMLHttpRequest-Anfragen ab
Nächster:.NET/C# Methodenparameter NULL null
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com