2

当从客户端以异步方式调用 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);
4

1 回答 1

4

WCF 对异步调用的支持严格来说只是客户端功能。

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

无论客户端是通过异步代理还是直接通过异步调用进行调用,这都是正确的。

通过思想实验很容易证明这是真的。任何 wcf 服务都可以被异步调用,此外,这与选择的绑定无关 - 因此这必须只是一个客户端工具。

于 2012-12-23T12:39:25.450 回答