Накладные расходы 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 вместо нескольких экземпляров.