c# - WebClient是下载http数据的最佳方式吗?

标签 c#

问题:我需要从不同的主机下载数百张图片。每个主机都有 2000 张图片。

解决方案:每次需要通过 WebClient 的 DownloadData 方法下载图像时,使用一个 new WebClient

或者保留一个打开的套接字连接池并使用较低级别的调用发出 http 请求会更好吗?

打开/关闭 tcp 连接是否很昂贵(我假设 WebClient 就是这样做的),所以使用池听起来更有效?

最佳答案

我相信 WebClient 使用的底层基础设施已经将 HTTP 连接汇集在一起​​,因此没有必要这样做。您可能需要使用类似 Wireshark 的内容进行检查当然,还有一些示例 URL。

从根本上说,我会采用与处理其他编程任务相同的方法 - 以最简单可行的方式编写代码,然后检查其性能是否足以满足您的需求。如果是这样,你就完成了。如果没有,请使用适当的工具(网络分析器等)来找出为什么它的性能不够好,并且只有在解决问题时才使用更复杂的代码。

我的经验是,如果 WebClient 不是您所需要的,它也可以,但它无法为您提供与 WebRequest 一样多的细粒度控制。如果您不需要该控件,请使用 WebClient

关于c# - WebClient是下载http数据的最佳方式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12610417/

相关文章:

c# - 如何在 C# 互操作中使用 InternetQueryOption?

c# - Excel 选择性粘贴和添加操作

c# - WPF 更改具有附加属性的控件的背景

c# - System.Lazy<T> 和 System.Threading.LazyThreadSafetyMode 枚举

c# - 使用最小起订量和存储库模式进行单元测试

c# - EF 7 : INSERT statement conflicted with the FOREIGN KEY SAME TABLE

c# - FileSystemWatcher 无法访问文件,因为它正被另一个进程使用

c# - 将 ViewModel 传递到 CSS 文件中

c# - 绘制圆后如何将其视为控件? - 移动和选择形状

c# - 自动递增属性不是关键