并行执行web服务调用

本文关键字:调用 服务 web 并行执行 | 更新日期: 2023-09-27 17:52:51

我看到了这些问题在ASP中并行执行。net httpwebrequest的建议。. NET和Async。从大约一年前开始,我想知道他们的建议是否仍然有效,或者现在是否有更好的任务并行库方法。

我的情况更接近第二个问题,除了我只需要点击10个(大约)不同的web服务,而不是相同的3000次。由于这是一个web应用程序,这种请求放大是否会改变建议的方法?有没有更好的办法?随着用户数量的增加,我能在多大程度上期望这样的事情能够扩展?

注意事项:

  • 缓存结果将是下一个实现细节,但我想先获得基本功能的工作
  • 每个web服务返回非常少的数据(小于1 kb),最长的一个不超过3秒返回,我相信大部分是延迟(生成结果不计算昂贵)
  • 从客户端调用web服务将不起作用(我不认为),因为有些是在不同的域
  • c#或f#实现都可以工作,理想情况下,这将被抽象为一个方法调用,该方法调用接受string并返回string的集合

并行执行web服务调用

您可能会发现这个讨论是相关的:异步而不是并行

Web请求不适合TPL,因为它们是IO,而不是处理。自。net 2.0以来,您已经拥有了所有必要的基础设施:BeginGetResponseBeginGetResponseStream。控制未完成请求的数量(~200是一个很好的消费者操作系统,~2000是服务器版本,在相应地调整TCP参数后,特别是TcpNumConnections),并确保调整ServicePointManager.DefaultConnectionLimit

试图通过简单地通过TPL对数十个或数百个任务抛出同步IO调用来实现高规模和高带宽/吞吐量将使您无法快速获得