.net - example - httpclient c#
¿Es seguro usar HttpClient al mismo tiempo? (3)
En todos los ejemplos que puedo encontrar de usos de HttpClient
, se usa para llamadas únicas. Pero, ¿qué sucede si tengo una situación de cliente persistente, donde se pueden hacer varias solicitudes al mismo tiempo? Básicamente, ¿es seguro llamar al client.PostAsync
en 2 hilos a la vez contra la misma instancia de HttpClient
?
Realmente no estoy buscando resultados experimentales aquí. Como un ejemplo de trabajo podría ser simplemente un golpe de suerte (y uno persistente en eso), y un ejemplo de falla puede ser un problema de configuración incorrecta. Idealmente, estoy buscando alguna respuesta autorizada a la cuestión del manejo de concurrencia en HttpClient.
Aquí hay otro article de Henrik F. Nielsen sobre HttpClient donde dice:
" El HttpClient predeterminado es la forma más sencilla en la que puede comenzar a enviar solicitudes. Se puede usar un solo HttpClient para enviar tantas solicitudes HTTP como desee al mismo tiempo, así que en muchos escenarios puede crear un HttpClient y luego usarlo para todas sus solicitudes. "
Se encontró una publicación en el foro de MSDN por Henrik F. Nielsen (uno de los arquitectos principales de HttpClient).
Sumario rápido:
- Si tiene solicitudes relacionadas (o no se pisarán entre sí), entonces usar el mismo HttpClient tiene mucho sentido.
- En general, recomendaría reutilizar las instancias de HttpClient tanto como sea posible.
Según MSDN , desde .NET 4.5 Los siguientes métodos de instancia son seguros para la ejecución de subprocesos (gracias @ischell):
CancelPendingRequests
DeleteAsync
GetAsync
GetByteArrayAsync
GetStreamAsync
GetStringAsync
PostAsync
PutAsync
SendAsync