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 服务接受并发请求的主要内容,如果未能解决你的问题,请参考以下文章