WCF 服务接受并发请求

Posted

技术标签:

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

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

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

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

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

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

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

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

我的服务将被多个 SAP Portal 客户端通过 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, 阿米特巴蒂亚

【讨论】:

以上是关于WCF 服务接受并发请求的主要内容,如果未能解决你的问题,请参考以下文章

Windows 服务托管 WCF 不接受 GET 请求

WCF系列教程之消息交换模式之请求与答复模式(Request/Reply)

仅限于单个应用程序域的 WCF 多并发服务

wcf中的消息模式

自托管 WCF 服务中的 HTTP 413 请求实体太大

WCF 和身份验证