2012-12-23 282 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服務可以異步調用,並且另外,這是不管綁定選擇的 - 因此這必須是僅僅一個客戶端設備。