【问题标题】:WCF service accepting concurrent requestsWCF 服务接受并发请求
【发布时间】:2014-01-06 11:41:05
【问题描述】:

我是 WCF Web 服务的新手。我的要求是创建一个 WCF 服务,它是第三方 COM dll 对象的包装器。

假设 dll 需要 5 秒来计算一个特定的输入。

当我创建服务并对其进行测试(使用 WCF 测试客户端)时,我看到在第一个请求完成之前我无法发送第二个请求。

所以我正在考虑启动一个新线程来使用 com 功能并在完成后调用回调函数。我想在这个回调函数中发送响应和结束请求。 这适用于命中 WCF 服务的每个请求。

我已经对此进行了测试,但问题是我在没有完成请求的情况下得到了响应。

我希望当前线程等到计算完成并同时接受其他请求

考虑到性能,您能否告诉我如何解决此问题?

我的服务将被多个 SAP Portal 客户端通过 SAP PI 使用

【问题讨论】:

    标签: multithreading performance web-services wcf sap-pi


    【解决方案1】:

    可以在实现ServiceContract的服务类上应用[ServiceBehavior]属性来设置服务的并发模式。 http://msdn.microsoft.com/en-us/library/system.servicemodel.concurrencymode(v=vs.110).aspx

    但是,在您在服务操作中访问 COM 组件的情况下,我会首先检查 COM 组件的线程模型,即它是实现单元 (STA) 还是 MTA。如果 COM 组件实现单元线程模型,COM 调用调用将被序列化。因此,更改 WCF ConcurrencyMode 不会产生任何影响。

    HTH, 阿米特巴蒂亚

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-02
      • 2020-09-27
      • 1970-01-01
      • 2014-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-12
      相关资源
      最近更新 更多