【发布时间】:2011-04-21 18:01:19
【问题描述】:
我从大约一年前看到Recommendations for executing .NET HttpWebRequests in parallel in ASP.NET 和 Async.Parallel or Array.Parallel.Map 这些问题,想知道他们的建议是否仍然有效,或者现在是否有更好的方法 Task Parallel Library。
我的情况更接近第二个问题,除了我只需要点击 10 个(ish)不同的网络服务而不是同一个网络服务 3000 次。由于这是一个 Web 应用程序,这种请求放大是否会改变建议的方法?有没有更好的方法可以采取?随着用户数量的增加,我能期望这样的事情在多大程度上扩展?
几点说明:
- 缓存结果将是下一个实现细节,但我希望先让基本功能正常工作
- 每个 Web 服务返回的数据非常少(不到 1 kb),最长的返回时间不超过 3 秒,我相信其中大部分是延迟(生成结果的计算成本不高)
- 从客户端调用 Web 服务将不起作用(我不认为),因为有些位于不同的域中
- 无论是 C# 还是 F# 实现都可以理想地工作,这将被抽象为一个方法调用,该方法调用采用
string并返回strings 的集合
【问题讨论】:
-
关于跨域问题,我们通过在 Web 应用程序中使用服务代理解决了这个问题。实施起来非常简单。只需向项目添加服务,让服务合同实施远程合同。然后通过简单地将参数传递给真实服务并返回结果来实现合同。
-
@Smudge202:服务器代理会解决跨域问题,但随着用户数量的增加,我基本上会在自己的服务器上进行 DDoSing =)。
标签: c# .net web-services f# task-parallel-library