当从客户端以异步方式调用 WCF 服务时,我们知道客户端应用程序不会被阻止。
但是,WCF 端的线程在执行异步方法调用时是否被阻塞,或者 WCF 释放了用于启动方法调用的线程?
例如,如果我从 ASP.Net 应用程序以异步方式调用“Add”方法(如下面的代码所示),后端的服务实例是否会等待方法完成? 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);
最佳答案
WCF 对异步调用的支持严格来说只是客户端功能。
事实上,服务无法(也不应该)区分两个客户端之间的区别,一个进行同步调用,另一个进行异步调用。
无论客户端是通过异步代理还是直接通过异步调用进行调用,都是如此。
通过思想实验很容易证明这是正确的;任何 wcf 服务都可以异步调用,而且这与选择的绑定(bind)无关 - 因此这必须只是客户端设施。
关于wcf - 从客户端以异步方式调用 WCF 会使 WCF 服务也以异步方式运行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14008309/