https://docs.microsoft.com/en-us/dotnet/api/system.io.stream.copytoasync?view=netframework-4.7.2

аюсь загрузить файл с URL-адреса, и мне приходится выбирать между WebClient и HttpClient. Я ссылалсяэто статья и несколько других статей в интернете. Везде предлагается использовать HttpClient из-за его отличной асинхронной поддержки и других привилегий .Net 4.5. Но я все еще не полностью убежден, и мне нужно больше информации.

Я использую приведенный ниже код для загрузки файла из интернета:

WebClient:

WebClient client = new WebClient();
client.DownloadFile(downloadUrl, filePath);

HttpClient:

using (HttpClient client = new HttpClient())
{        
    using (HttpResponseMessage response = await client.GetAsync(url))
    using (Stream streamToReadFrom = await response.Content.ReadAsStreamAsync())
    {
    }
}

С моей точки зрения, я вижу только один недостаток в использовании WebClient - это не асинхронный вызов, блокирующий вызывающий поток. Но что, если я не беспокоюсь о блокировке потока или использованияclient.DownloadFileAsync() использовать асинхронную поддержку?

С другой стороны, если я использую HttpClient, я не загружаю каждый байт файла в память и затем записываю его в локальный файл? Если размер файла слишком велик, не будут ли накладные расходы на память дорогими? Чего можно избежать, если мы используем WebClient, так как он будет напрямую записывать в локальный файл и не использовать системную память.

Итак, если производительность является моим главным приоритетом, какой подход я должен использовать для загрузки? Я хотел бы уточнить, если мое предположение неверно, и я также открыт для альтернативного подхода.

Ответы на вопрос(0)

Ваш ответ на вопрос