Безопасно ли использовать HttpClient одновременно?
Во всех примерах я могу найти использования HttpClient
, используется для однократных звонков. Но что, если у меня постоянная клиентская ситуация, когда несколько запросов могут быть сделаны одновременно? В принципе, это безопасно звонить client.PostAsync
на 2 темы одновременно против одного и того же экземпляра HttpClient
,
Я не очень ищу экспериментальные результаты здесь. В качестве рабочего примера может быть просто случайность (и при этом постоянная), а неудачный пример может быть проблемой неправильной конфигурации. В идеале я ищу какой-нибудь авторитетный ответ на вопрос обработки параллелизма в HttpClient.
3 ответа
Согласно MSDN, начиная с.NET 4.5 следующие методы экземпляров являются поточно- ориентированными (спасибо @ischell):
CancelPendingRequests
DeleteAsync
GetAsync
GetByteArrayAsync
GetStreamAsync
GetStringAsync
PostAsync
PutAsync
SendAsync
Вот еще одна статья Хенрика Ф. Нильсена о HttpClient, где он говорит:
"HttpClient по умолчанию - это самый простой способ начать отправку запросов. Один HttpClient может использоваться для одновременной отправки столько HTTP-запросов, сколько вы хотите, поэтому во многих сценариях вы можете просто создать один HttpClient, а затем использовать его для всех ваших запросов."
Нашел одно сообщение на форуме MSDN Хенрика Ф. Нильсена (одного из главных архитекторов HttpClient).
Краткое резюме:
- Если у вас есть запросы, которые связаны (или не будут вступать друг в друга), тогда использование того же HttpClient имеет большой смысл.
- В целом я бы рекомендовал максимально использовать экземпляры HttpClient.