我们正在开发一个 .NET 应用程序,它必须对第三方 Web 服务进行多达数万次的小型 Web 服务调用。我们更喜欢更“笨拙”的调用,但第 3 方不支持它。我们将客户端设计为使用可配置数量的工作线程,并通过测试为一台多核机器优化了代码。但是,我们仍然希望提高速度,并且正在考虑将工作分散到多台机器上。我们精通典型的客户端/服务器/数据库应用程序,但不熟悉多台机器的设计。因此,与此相关的几个问题:

  • 除了多线程之外,是否还有其他客户端优化可以提高 http 请求/响应的速度? (我应该注意这是一个非标准的 web 服务,所以是使用 WebClient 实现的,而不是 WCF 或 SOAP 客户端)
  • 我们目前的想法是使用 WCF 将工作块发布到 MSMQ,并在一台或多台机器上运行客户端以从队列中提取工作。我们有 WCF + MSMQ 的经验,但希望确保我们不会错过更好的选择。今天还有其他更好的方法可以做到这一点吗?
  • 我见过一些 3rd 方工具,如 DigiPede 和 Microsoft 的 HPC 产品,但这些似乎有点矫枉过正。对这些产品的任何经验或我们应该考虑自己推出的原因?
  • 最佳答案

    听起来您的目标是尽可能快地执行所有这些 Web 服务调用,并将结果制成表格。鉴于此,您最大的效率控制将是通过扩展您可以发出的并发请求的数量。

    请务必查看您的 client-side connection limits 。默认情况下,我认为系统默认是 2 个连接。我自己没有尝试过,但是通过增加具有此属性的连接数,理论上您应该会看到通过从一台机器生成更多连接来生成更多请求的乘数效应。 MS 论坛上有 more info

    MSMQ 选项运行良好。我自己正在运行该配置。 ActiveMQ 也是一个很好的解决方案,但 MSMQ 已经在服务器上。

    你有一个很好的起点。使其运行,然后转向性能和吞吐量。

    关于c# - 将工作扩展到多台机器的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/554024/

    10-15 03:00