我是WCF网络服务的新手。我的要求是创建一个WCF服务,它是第三方COM dll对象的包装器。
让我们假设dll需要5秒来计算一个特定的输入。
当我创建服务并对其进行测试(使用WCF测试客户端)时,我看到在第一次请求完成之前我无法发送第二个请求。
所以我想开始一个消耗com功能的新线程,并在完成后调用一个回调函数。我想在此回调函数中发送响应和结束请求。 这适用于遇到WCF服务的每个请求。
我已对此进行了测试,但问题是我在没有完成请求的情况下收到了回复。
我希望当前线程等到计算完成并同时接受其他并行请求
考虑到性能,你能告诉我如何解决这个问题吗?
我的服务将由多个SAP门户客户端通过SAP PI
使用答案 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, 阿米特巴蒂亚