2011-06-28 132 views
0

我有一個我開發的類庫,它是相當處理密集型的,我目前通過WCF REST服務調用。WCF休息異步調用方法

REST服務直接訪問的類庫和或多或少的WCF其餘服務是系統的接口的DLL。

比方說,下面的方法定義:

創建請求

啓動一個線程需要5分鐘,但立即返回該過程產生的會話ID和線程使用匯報時已完成到數據庫。

檢查狀態

接受會話ID和檢查數據庫,看看進程已經完成。

我認爲有更好的方式來「管理」的線程中運行,但是,我的要求規定,用戶應當在發出的請求接收來自REST服務的即時響應。

我正在使用WCF Message屬性將XML返回給瀏覽器,因爲可以從任何編程語言調用此應用程序,所以我不能使用傳統的WCF和回調(我認爲如果我錯了,請糾正我)。

有時候我遇到了一個問題,出現錯誤和iscomplete事件永遠不會被寫入到數據庫中,因此,「檢查狀態」方法說,這是永遠的處理。

有沒有人有什麼通常做什麼可以在這種情況下做什麼想法?

謝謝!

傑弗裏·凱文撬

+0

不知道這會工作的休息,但一定的限制是一個理想的解決辦法是使用WCF的雙工通信機制 –

回答

2

您的服務應與客戶端的方式來查看當前狀態,初始請求返回202 Accepted,或者通過Location頭或者部分內容。

當您指示客戶端輪詢指示的URL以檢查當前狀態。如果客戶剛開始循環,我還建議在此響應中添加一些cache time

你如何處理事情上的服務器是由你,絕不與REST。一方面,我會將所有作爲後臺線程執行的邏輯放在try/catch中,如果發生錯誤並返回錯誤狀態,可能會根據具體情況重試該操作。

+0

最好的答案在這裏使用的雙工通信 –

0

我實現了一個類似的過程導入大型文件/處理,老實說,我從未有過的一個問題。也許解決IsComplete永遠不會被設置的原因將會使這個更具彈性。

沒有太多的答案,但仍..