【问题标题】:Best way to make multiple asyn calls from a REST Service to external soap webservices从 REST 服务向外部肥皂网络服务进行多次异步调用的最佳方式
【发布时间】:2013-05-12 05:01:15
【问题描述】:

我有一个 WCF 服务,它会为单个事务调用 4 个肥皂网络服务(4 个服务的总响应时间超过一分钟),最后它将在 SQL 2008 数据库中记录事务状态。我第一次使用后台工作人员,它工作正常,直到 30 次调用,如果我们增加超过 30 次调用的音量,则后台工作进程被取消。现在我正在考虑使用多线程。对于我的情况,有什么建议是最好的异步方法。

【问题讨论】:

  • 没有代码示例是无法回答的。当您使用 BackgroundWorker 时,您正在使用多个线程,并且没有理由将其限制为 30 个实例。在您更改设计之前,我会首先确保您没有错误。
  • 我没有任何错误,但是当调用增加到 30 以上时,就会出现问题。有时它只处理 60 个调用中的 36 个调用,有时它处理相同 60 个调用中的 47 个调用。

标签: c# performance wcf web-services asynchronous


【解决方案1】:

当您有这么多并发操作时,切换到异步 IO 是有意义的。有多种型号可供选择。最好的显然是 async-await 与 TPL 的结合。我鼓励你看看它。

BackgroundWorker 给你带来麻烦的原因是因为同步 IO 使用线程,而且你经常会遇到一些不确定的限制。

无论如何,放弃基于线程的解决方案,因为它们在高度并行性方面存在问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    • 2017-01-16
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多