Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 并行执行web服务调用_C#_.net_Web Services_F#_Task Parallel Library - Fatal编程技术网

C# 并行执行web服务调用

C# 并行执行web服务调用,c#,.net,web-services,f#,task-parallel-library,C#,.net,Web Services,F#,Task Parallel Library,我在一年前看到了这些问题,想知道他们的建议是否仍然有效,或者现在是否有更好的解决方法 我的案例更接近于第二个问题,除了我只需要点击10(ish)个不同的web服务,而不是相同的web服务3000次。由于这是一个web应用程序,这种请求放大是否会改变建议的方法?有没有更好的办法?随着用户数量的增加,我能期望这样的东西扩展到多大程度 请注意: 缓存结果将是下一个实现细节,但我希望首先让基本功能正常工作 每个web服务返回的数据很少(小于kb),最长的一个不超过3秒,我相信大部分都是延迟(生成的结果

我在一年前看到了这些问题,想知道他们的建议是否仍然有效,或者现在是否有更好的解决方法

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

请注意:

  • 缓存结果将是下一个实现细节,但我希望首先让基本功能正常工作
  • 每个web服务返回的数据很少(小于kb),最长的一个不超过3秒,我相信大部分都是延迟(生成的结果在计算上并不昂贵)
  • 从客户端调用web服务将不起作用(我不认为),因为有些服务位于不同的域中
  • 无论是C#还是F#实现,理想情况下都可以工作,这将被抽象为一个方法调用,该方法调用获取一个
    字符串
    ,并返回一个
    字符串
    的集合

    • Web请求不适合TPL,因为它们是IO,而不是处理。自.Net 2.0:和之后,您已经拥有了所有必要的基础架构。控制未完成请求的数量(特别是在相应地调整TCP参数之后,~200是一个好的消费操作系统,~2000是服务器风格的操作系统),并确保您调整了


      试图通过简单地通过TPL在数十个和数百个任务上抛出同步IO调用来实现高规模和高带宽/吞吐量,这将使你一事无成。

      Web请求不适合TPL,因为它们是IO,而不是处理。自.Net 2.0:和之后,您已经拥有了所有必要的基础架构。控制未完成请求的数量(特别是在相应地调整TCP参数之后,~200是一个好的消费操作系统,~2000是服务器风格的操作系统),并确保您调整了


      试图通过简单地通过TPL在数十个和数百个任务上抛出同步IO调用来实现高规模和高带宽/吞吐量,这将使你一事无成。

      你可能会发现这一讨论相关:

      你可能会发现这一讨论相关:

      关于跨域问题,我们通过在web应用程序中使用服务代理解决了这个问题。实现起来非常简单。只需将服务添加到项目中,就可以让服务合同实现远程合同。然后通过简单地将参数传递给实际服务并返回结果来实现契约。@Smudge202:服务器代理可以解决跨域问题,但随着用户数量的增加,我基本上会使用自己的服务器=)。关于跨域问题,我们通过在web应用程序中使用服务代理解决了这个问题。实现起来非常简单。只需将服务添加到项目中,就可以让服务合同实现远程合同。然后通过简单地将参数传递给真正的服务并返回结果来实现契约。@Smudge202:服务器代理可以解决跨域问题,但随着用户数量的增加,我基本上会使用自己的服务器=)。该死,免费午餐仍然难以捉摸。该死,免费午餐仍然难以捉摸。