При создании HttpClient один общий совет:
Однако на основе в этой ссылке Я вижу комментарий, который, я думаю, подразумевает другое правило:
Экземпляр класса HttpClient действует как сеанс для отправки HTTP-запросов. Экземпляр HttpClient представляет собой набор параметров, применяемых ко всем запросам, выполняемым этим экземпляром. Кроме того, каждый экземпляр HttpClient использует свой собственный пул соединений, изолируя его запросы от запросов, выполняемых другими экземплярами HttpClient.
Это заставляет меня задаться вопросом, должен ли я создать один экземпляр HttpClient для каждой конечной точки обслуживания, с которой я взаимодействую. В терминах "service-endpoint" я имею в виду отдельный базовый адрес. Каждое из следующих элементов будет представлять собой "конечную точку обслуживания":
- " http://foo.net/api/Message/"
- " http://bar.com/api/Message/"
- " http://wow.gov/api/Message/"
- " http://now.com/api/Message/"
- " http://mom.org/api/Message/"
- " http://dog.com/api/Message/"
Конечно, если я намереваюсь использовать свойство BaseAddress для HttpClient, и если я имею дело с одновременными вызовами, тогда мне нужно будет иметь один экземпляр HttpClient на "конечную точку обслуживания".
Однако HttpClient позволяет мне явно указывать абсолютный адрес:
HttpClient client = new HttpClient(...);
client.PostAsJsonAsync("http://foo.net/api/Message/", ...);
client.PostAsJsonAsync("http://bar.com/api/Message/", ...);
client.PostAsJsonAsync("http://wow.gov/api/Message/", ...);
client.PostAsJsonAsync("http://now.com/api/Message/", ...);
client.PostAsJsonAsync("http://mom.org/api/Message/", ...);
client.PostAsJsonAsync("http://dog.com/api/Message/", ...);
Вышеприведенный код работает, и это именно то, что я хочу для текущего приложения, которое я создаю. Но вопрос о нытье остается... Я делаю что-то неправильно, если я использую один HttpClient для всех конечных точек обслуживания, с которыми связано мое приложение?
Есть ли причина, по которой мне действительно нужна "изоляция пула соединений", упомянутая в приведенной выше цитате?