Безопасно ли использовать 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.
Другие вопросы по тегам