问题:我需要从不同的主机下载数百张图片。每个主机都有 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/