问题:我需要从不同的主机下载数百张图片。每个主机都有 20 百张图像。
解决方法:使用一个new WebClient
每次需要通过WebClient的方法下载图片的DownloadData
方法。
还是保留一个开放的套接字连接池并使用较低级别的调用发出http请求会更好?
打开/关闭 tcp 连接是否很昂贵(我假设这是 WebClient 所做的),所以使用池听起来更有效?
问题:我需要从不同的主机下载数百张图片。每个主机都有 20 百张图像。
解决方法:使用一个new WebClient
每次需要通过WebClient的方法下载图片的DownloadData
方法。
还是保留一个开放的套接字连接池并使用较低级别的调用发出http请求会更好?
打开/关闭 tcp 连接是否很昂贵(我假设这是 WebClient 所做的),所以使用池听起来更有效?
我相信使用的底层基础设施WebClient
已经汇集了 HTTP 连接,所以没有必要这样做。当然,您可能希望使用Wireshark之类的工具以及一些示例 URL 进行检查。
从根本上说,我会采用与其他编程任务相同的方法 - 以最简单的方式编写代码,然后检查它的性能是否足以满足您的需求。如果是这样,你就完成了。如果没有,请使用适当的工具(网络分析器等)来找出它性能不够好的原因,并且只有在解决问题时才使用更复杂的代码。
我的经验是,WebClient
如果它不是您所需要的,那很好 - 但它并没有像WebRequest
. 如果您不需要该控件,请使用WebClient
.
我使用HttpWebRequest
并HttpWebResponse
刮掉我想要的任何东西。当然,除非有满足需求的服务,但即使有时存在限制(业务限制),我经常更喜欢从纯 http 请求中挖掘 html。有时只是让感觉更像开发人员,你知道...