从客户端以异步方式调用WCF使WCF服务也以异步方式运行?

时间:2012-12-23 03:09:18

标签: wcf asynchronous

当从客户端以异步方式调用WCF服务时,我们知道客户端应用程序未被阻止。

但是在执行异步方法调用时WCF端的线程是否被阻塞或者WCF释放它用于启动方法调用的线程?

例如,如果我从ASP.Net应用程序以异步方式调用“添加”方法,如下面的代码所示,后端的服务实例是否会等到方法完成? WCF使用PerCall的InstanceContext。

        CalculatorClient client = new CalculatorClient();

        // AddAsync
        double value1 = 100.00D;
        double value2 = 15.99D;
        client.AddCompleted += new EventHandler<AddCompletedEventArgs>(AddCallback);
        client.AddAsync(value1, value2);

1 个答案:

答案 0 :(得分:3)

WCF对异步调用的支持仅限于客户端功能。

事实上,服务无法(也不应该)告诉两个客户端之间的区别,一个是同步调用,另一个是异步调用。

无论客户端是通过异步代理进行呼叫,还是直接通过异步调用,都是如此。

通过思考实验很容易证明这是真实的;任何wcf服务都可以异步调用,另外这是所选绑定的无法 - 因此这必须只是一个客户端设施。