gpt4 book ai didi

c# - C#中的并发下载/处理

转载 作者:行者123 更新时间:2023-11-30 19:11:25 34 4
gpt4 key购买 nike

我正在寻找最快和最可靠的方法来使用 C# 同时下载 1000 个远程网页(使用 HttpWebRequest),将它们写入单独的本地文件并在所有文件下载后运行一些处理代码,同时充分利用可用的并行性和非阻塞并发性。

服务器是运行 Windows 2008 和 .NET 4.0 的四核 (vCPU) VPS(不能使用较新的 async/await 东西)。

你有什么建议?

更新:目前提出的选项有:响应式扩展 (Rx)、异步 CTP、TPL。

看起来异步 CTP 是理想的方式,其次是 Rx 和 TPL。伙计们怎么说?

最佳答案

无论您最终使用哪种异步方法,都不要忘记您需要增加允许的最大连接数,因为默认设置是每个域 2 个。因此,如果您对单个域进行大量调用,您将受到速率限制。

您可以使用基本配置在独立(非 ASP.NET)应用程序中修复此问题:

<system.net>
<connectionManagement>
<add address="*" maxconnections="200" />
</connectionManagement>
</system.net>

但是,如果您在 ASP.NET 中,这将无法按预期工作,因为默认 <processModel autoConfig="true" ...>属性将导致它自动配置为每个内核 12 个,虽然好于总共 2 个,但仍然可能不适合您的需要。那么你将不得不在你的 Application_Start 中使用基于代码的方法:

ServicePointManager.DefaultConnectionLimit = 200;

注意:这种基于代码的方法同样适用于非 ASP.NET 应用程序,因此如果您想避免使用 .config,可以将其用作“通用”解决方案。

关于c# - C#中的并发下载/处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11611031/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com