2013-07-25 78 views
3

如果這是一個基本問題,請先行道歉。我如何在現有WCF Web服務中啓動外部Web服務調用,而不是等待第三方服務在繼續並退出該函數之前返回響應,以便我的Web服務立即返回值?WCF服務 - 不要等待外部網絡服務電話

+1

你嘗試中的鏈接[如何使我的WCF服務的異步調用?](http://stackoverflow.com/questions/400798/how-to-make-a-call-to-my-wcf - 服務異步) –

回答

2

您需要對異步的外部服務進行調用。根據您所在的框架的版本,有不同的選項。如果你在4.5看看異步:http://msdn.microsoft.com/en-us/library/vstudio/hh156513.aspx

我們目前正在做類似的事情 - 使用RestSharp從WCF異步調用restful服務。看看這裏的一個例子:Fire and Forget from within a WCF service

當你說「立即返回一個值」你是說你想調用WCF服務本身是非阻塞的?那麼它會馬上返回給客戶?如果是這樣,你需要使你的WCF服務合同OneWay。請參閱:http://msdn.microsoft.com/en-us/library/ms733035.aspx但是,您無法從OneWay服務返回值。

0

您可以運行,這將發起呼叫的第三方和實施,你可以用它來檢查,看看結果都進行了相應的恢復和行動第二輪詢方法異步方法。

我們做類似的導入文件。踢過程並讓客戶進行更新。

How to: Implement an Asynchronous Service Operation

+0

你可以顯示一些例子或代碼? –

0

如果web服務已經存在,你沒有過任何控制,我通常只需要創建一個線程來處理函數調用。

然而,在.NET 4.5中,有 '異步' Web服務函數調用。如果你有機會到這個功能,這將是首選的解決方案

0

假設你不依賴於第三方的結果來計算你的返回值。

您需要按照以下方式構建您的webservice方法。它只是僞代碼。

public bool YourMethod() 
    { 
    //this will be a non-blocking call 
    MakeAsyncCallToThirdParty(); 
    return true; 
    }