2012-12-23 141 views
2

当一个WCF服务被称为在从客户端异步的方式,那么我们知道,客户端应用程序不会被阻止。从客户端异步调用的方式,使WCF 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); 

回答

3

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

事实上,服务没有办法(也不应该)告诉两个客户端之间的区别,一个客户端进行同步呼叫,另一个客户端进行异步呼叫。

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

很容易证明这是一个思想实验真实; ANY WCF服务可以异步调用,并且另外,这是不管绑定选择的 - 因此这必须是仅仅一个客户端设备。