当从客户端以异步方式调用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);
答案 0 :(得分:3)
WCF对异步调用的支持仅限于客户端功能。
事实上,服务无法(也不应该)告诉两个客户端之间的区别,一个是同步调用,另一个是异步调用。无论客户端是通过异步代理进行呼叫,还是直接通过异步调用,都是如此。
通过思考实验很容易证明这是真实的;任何wcf服务都可以异步调用,另外这是所选绑定的无法 - 因此这必须只是一个客户端设施。