Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 3103|Répondre: 0

[Source] .NET/C# Analyse simple du code source HttpClient

[Copié le lien]
Publié sur 24/06/2023 13:05:41 | | | |
Exigences : Dans les architectures microservices, les appels entre services utilisent souvent le protocole HTTP, généralement la classe HttpClient pour effectuer des requêtes HTTP ou l’utiliserRefit.HttpClientFactory、WebApiClientCoreBibliothèques tierces basées sur l’encapsulation HttpClient.

Pour plus d’informations sur l’utilisation d’HttpClient, veuillez consulter :La connexion hyperlientérée est visible.

Code source HttpClient :La connexion hyperlientérée est visible.

Dans le constructeur sans paramètres HttpClient, l’objet HttpClientHandler est instancié par défaut, et le HttpClientHandler hérite et implémente la classe abstraite HttpMessageHandler.Flux par défaut : HttpClient -> HttpClientHandler -> SocketsHttpHandler -> ...



Selon l’analyse du code source, l’objet hérité du HttpMessageHandler est une implémentation concrète du HttpClient envoyant des requêtes HTTP. HttpClient le feraHttpRequestMessageL’objet est transmis puis reçuHttpResponseMessageObject renvoie le contenu.

Essayez de créer une nouvelle classe TestHttpHandler, d’hériter de la classe d’abstraction HttpMessageHandler et d’implémenter la méthode SendAsync, puis de l’instanciar dans le constructeur HttpClient, avec le code suivant :

Comme montré ci-dessous :



Bien qu’appelant HttpClient pour envoyer une requête GET, l’implémentation spécifique de la méthode SendAsync n’envoie pas de requête HTTP, et il n’y a pas de flux réseau, doncVous pouvez débrancher le câble réseau et le programme fonctionnera normalement

àLors de l’utilisation d’un objet HttpClient, le socket sous-jacent n’est pas immédiatement libéré, ce qui peut causer des problèmes d’épuisement de la douille. Microsoft est conscient de ce problème et recommande d’utiliser IHttpClientFactory dans ASP.NET projets Core pour créer des objets HttpClient.IHttpClientFactory regroupe les instances HttpMessageHandler créées en usine dans un pool afin de réduire la consommation de ressources. Lorsque vous créez une nouvelle instance HttpClient, vous pouvez réutiliser l’instance HttpMessageHandler dans le pool(si la période de survie n’est pas expirée).

ASP.NET Core (XV) utilise HttpClient pour envoyer des requêtes HTTP
https://www.itsvse.com/thread-10311-1-1.html

IHttpClientFactory pour .NET :La connexion hyperlientérée est visible.

ASP.NET Core a le concept de middleware pipeline,En fait, HttpClient propose aussi le concept de middleware pipeline avec l’aide du gestionnaire délégué, comme montré dans la figure ci-dessous :



Grâce à cette fonctionnalité, nous pouvons intercepter les requêtes et réponses, telles que l’augmentation de l’authentification par jeton avant les requêtes, l’enregistrement du temps nécessaire pour les requêtes et réponses, et l’enveloppement des données de réponse.

Il suffit d’hériter de la classe DelegatingHandler et de remplacer la méthode SendAsync.



L’enregistrement des requêtes HTTP prend du temps, et le code est le suivant :

Appelez IHttpClientFactory pour créer un HttpClient et envoyez une requête, comme montré sur l’image suivante :



(Fin)




Précédent:Le crochet ajax pour le développement web intercepte toutes les requêtes XMLHttpRequest
Prochain:Paramètre de méthode .NET/C# NULL null
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com