Накладные расходы WebClient

У меня есть клиент, который делает ограниченное количество параллельных веб-запросов. Для этого я использую WebClient. В настоящее время у меня есть пул WebClient-s, который я создаю один раз и использую тот, который неактивен.

Этот подход становится немного громоздким, хотя, и мне интересно, есть ли какая-либо польза от наличия коллекции предварительно построенных экземпляров WebClient, или если их создание на лету не будет слишком сложным?

Ответ 1

Почему у вас будет в первую очередь пул WebClients? Это крошечные, дешевые предметы. Вы определили, измерив, что это необходимо и полезно? Предполагаю, что нет?

Объектная инстанция почти всегда дешевая. HTTP-соединения также не дорогостоящие. Пул WebClient - преждевременная оптимизация. Нет необходимости в этом - не стесняйтесь создавать столько, сколько хотите.

Ответ 2

В соответствии с Reflector все, что делает конструктор WebClient, это:

public WebClient()
{
    this.m_Encoding = Encoding.Default;
    this.m_ContentLength = -1L;
}

Итак, нет, вам не очень полезно иметь пул.

Ответ 3

Если вы используете .NET 4.0, вы можете распараллелить веб-запросы. Проверьте этот.

Но к реальному вопросу я не буду хранить экземпляры WebClient в массиве, если нет необходимости повторно использовать этот экземпляр в других местах. В зависимости от цели и вида использования вы также можете иметь пул запросов со строковым словарем.

А затем просто повторно используйте WebClient вместо нескольких экземпляров.