Расходы на строительство WebClient - PullRequest
11 голосов
/ 22 марта 2010

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

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

Ответы [ 3 ]

12 голосов
/ 22 марта 2010

С какой стати у вас вообще есть пул веб-клиентов?Это крошечные, дешевые предметы.Вы определили, измеряя, что это необходимо и полезно?Я полагаю, нет?

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

8 голосов
/ 22 марта 2010

Согласно Reflector все, что делает конструктор WebClient, таково:

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

Так что у вас нет особой выгоды иметь пул.

0 голосов
/ 22 марта 2010

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

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

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

...