WCF接受并发请求

时间:2014-01-06 11:41:05

标签: multithreading performance wcf web-services

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

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

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

所以我想开始一个消耗com功能的新线程,并在完成后调用一个回调函数。我想在此回调函数中发送响应和结束请求。 这适用于遇到WCF服务的每个请求。

我已对此进行了测试,但问题是我在没有完成请求的情况下收到了回复。

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

考虑到性能,你能告诉我如何解决这个问题吗?

我的服务将由多个SAP门户客户端通过SAP PI

使用

1 个答案:

答案 0 :(得分:0)

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

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

HTH, 阿米特巴蒂亚