Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 3103|Respuesta: 0

[Fuente] .NET/C# HttpClient análisis sencillo del código fuente

[Copiar enlace]
Publicado en 24/6/2023 13:05:41 | | | |
Requisitos: En las arquitecturas de microservicios, las llamadas entre servicios suelen usar el protocolo HTTP, normalmente empleando la clase HttpClient para realizar peticiones HTTP o utilizarloRefit.HttpClientFactory、WebApiClientCoreBibliotecas de terceros basadas en encapsulación HttpClient.

Para más información sobre el uso de HttpClient, por favor consulte:El inicio de sesión del hipervínculo es visible.

Código fuente HttpClient:El inicio de sesión del hipervínculo es visible.

En el constructor sin parámetros HttpClient, el objeto HttpClientHandler se instancia por defecto, y el HttpClientHandler hereda e implementa la clase abstracta HttpMessageHandler.Flujo por defecto: HttpClient -> HttpClientHandler -> SocketsHttpHandler -> ...



Según el análisis del código fuente, el objeto heredado del HttpMessageHandler es una implementación concreta del HttpClient que envía solicitudes HTTP. HttpClientHttpRequestMessageEl objeto se pasa y luego se recibeHttpResponseMessageEl objeto devuelve contenido.

Prueba a crear una nueva clase TestHttpHandler, heredar la clase de abstracción HttpMessageHandler e implementar el método SendAsync, y luego instanciarla en el constructor HttpClient, con el siguiente código:

Como se muestra a continuación:



Aunque llamar a HttpClient para enviar una solicitud GET, la implementación específica del método SendAsync no envía una solicitud HTTP y no hay flujo de red, por lo quePuedes desconectar el cable de red y el programa funcionará con normalidad

enAl usar un objeto HttpClient, el socket subyacente no se libera inmediatamente, lo que puede causar problemas de agotamiento de la cavidad. Microsoft es consciente de este problema y recomienda usar IHttpClientFactory en ASP.NET proyectos Core para crear objetos HttpClient.IHttpClientFactory agrupa instancias HttpMessageHandler creadas en fábrica en un pool para reducir el consumo de recursos. Cuando creas una nueva instancia HttpClient, podrías reutilizar la instancia HttpMessageHandler en el pool(si el periodo de supervivencia no ha expirado).

ASP.NET Core (XV) utiliza HttpClient para enviar solicitudes HTTP
https://www.itsvse.com/thread-10311-1-1.html

IHttpClientFactory para .NET:El inicio de sesión del hipervínculo es visible.

ASP.NET Core tiene el concepto de middleware de pipeline,De hecho, HttpClient también tiene el concepto de middleware de pipeline con la ayuda del Gestor Delegado, como se muestra en la figura siguiente:



Al utilizar esta función, podemos interceptar solicitudes y respuestas, como aumentar la autenticación de tokens antes de las solicitudes, registrar el tiempo necesario para las solicitudes y respuestas, y envolver los datos de respuesta.

Solo tienes que heredar la clase DelegingHandler y sobrescribir el método SendAsync.



Grabar las solicitudes HTTP lleva tiempo, y el código es el siguiente:

Llama a IHttpClientFactory para crear un HttpClient y enviar una solicitud, como se muestra en la siguiente imagen:



(Fin)




Anterior:El gancho ajax para desarrollo web intercepta todas las solicitudes XMLHttpRequest
Próximo:.NET/C# parámetro de método NULL
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com