Concurrent WCF calls via shared channel

Posted by Kent Boogaart on Stack Overflow See other posts from Stack Overflow or by Kent Boogaart
Published on 2010-04-02T17:37:57Z Indexed on 2010/04/02 18:03 UTC
Read the original article Hit count: 295

Filed under:
|
|

I have a web tier that forwards calls onto an application tier. The web tier uses a shared, cached channel to do so. The application tier services in question are stateless and have concurrency enabled.

But they are not being called concurrently.

If I alter the web tier to create a new channel on every call, then I do get concurrent calls onto the application tier. But I wanted to avoid that cost since it is functionally unnecessary for my scenario. I have no session state, and nor do I need to re-authenticate the caller each time. I understand that the creation of the channel factory is far more expensive than than the creation of the channels, but it is still a cost I'd like to avoid if possible.

I found this article on MSDN that states:

While channels and clients created by the channels are thread-safe, they might not support writing more than one message to the wire concurrently. If you are sending large messages, particularly if streaming, the send operation might block waiting for another send to complete.

Firstly, I'm not sending large messages (just a lot of small ones since I'm doing load testing) but am still seeing the blocking behavior. Secondly, this is rather open-ended and unhelpful documentation. It says they "might not" support writing more than one message but doesn't explain the scenarios under which they would support concurrent messages.

Can anyone shed some light on this?

© Stack Overflow or respective owner

Related posts about wcf

Related posts about caching