¿Es seguro utilizar HttpClient al mismo tiempo?

Resuelto Alex K asked hace 12 años • 3 respuestas

En todos los ejemplos que puedo encontrar de usos de HttpClient, se usa para llamadas únicas. Pero ¿qué pasa si tengo una situación de cliente persistente, donde se pueden realizar varias solicitudes al mismo tiempo? Básicamente, ¿es seguro llamar client.PostAsynca 2 subprocesos a la vez contra la misma instancia de HttpClient.

Realmente no estoy buscando resultados experimentales aquí. Como ejemplo práctico, podría ser simplemente una casualidad (y además persistente), y un ejemplo fallido puede ser un problema de configuración incorrecta. Idealmente estoy buscando alguna respuesta autorizada a la cuestión del manejo de concurrencia en HttpClient.

Alex K avatar Jun 24 '12 21:06 Alex K
Aceptado

Según Microsoft Docs , desde .NET 4.5 los siguientes métodos de instancia son seguros para subprocesos (gracias @ischell):

CancelPendingRequests
DeleteAsync
GetAsync
GetByteArrayAsync
GetStreamAsync
GetStringAsync
PostAsync
PutAsync
SendAsync
PatchAsync
Marcel N. avatar Jun 24 '2012 14:06 Marcel N.

Aquí hay otro artículo de Henrik F. Nielsen sobre HttpClient donde dice:

" El HttpClient predeterminado es la forma más sencilla de comenzar a enviar solicitudes. Se puede usar un único HttpClient para enviar tantas solicitudes HTTP como desee simultáneamente, por lo que en muchos escenarios puede simplemente crear un HttpClient y luego usarlo para todas sus solicitudes. " .

muruge avatar Nov 15 '2012 23:11 muruge

Encontré una publicación en el foro de MSDN de Henrik F. Nielsen (uno de los arquitectos principales de HttpClient).

Sumario rápido:

  • Si tiene solicitudes que están relacionadas (o que no se pisan entre sí), entonces usar el mismo HttpClient tiene mucho sentido.

  • En general, recomendaría reutilizar instancias de HttpClient tanto como sea posible.

Alex K avatar Jun 25 '2012 14:06 Alex K