2014-06-30 41 views
1

我開發了一個WCF服務,根據請求,將創建一個工作線程並開始處理大量數據的一個有時廣泛的過程。工作線程的WCF服務

我需要這個處理能力和WCF服務的RESTful能力才能使用。

示例:全局存儲線程,並且可以在RESTful Call中訪問它。

但是,根據我的理解,不建議在IIS中執行此操作,並且IIS將終止長時間運行的應用程序,並且建議將其作爲Windows Service託管的WCF服務運行。然而,我們依賴於通過Visual Studio使用Web部署/發佈的能力,並且是我們開發過程中不可或缺的部分。

我怎樣纔能有兩全其美?

回答

0

Windows服務仍然存在相同的根本問題,因爲您最終必須部署新代碼或重新啓動服務器(或者,上帝保佑不要崩潰!)。服務需要關閉。

您可以主要控制發生這種情況與Windows服務,這是一件好事。但從根本上說,在這種情況下,你必須有一個適合你長期工作的概念。

我認爲與Windows服務相比,精心設計的IIS應用程序幾乎沒有任何缺點。沒有任何間斷地運行長時間運行的工作是沒有辦法的。

處理這個事實。例如重新啓動工作並將其包裝在一個事務中,以便任意的中斷不會導致數據損壞。

+0

安排停機時間是可以接受的,隨機故障不是。當用戶開始工作時,需要在後臺運行直到完成。 您是否說過,Windows服務託管的WCF服務將繼續在沒有問題的情況下繼續運行,直到開發出現其他問題? – Smarter

+0

我能告訴你什麼?確保永遠不會有錯誤:)您幾乎可以消除IIS和WS中關閉的所有計劃外原因。閱讀有關常見問題並儘可能抵消它們。你仍然需要對某人說'新線程(()=>((string)null).ToLower())'的情況作出響應,並且你的進程在沒有通知的情況下被終止。或者,只是看起來並不符合你喜歡的長期工作而死。這些事情發生。 – usr

+0

爲了便於開發,您可以提出一種如何在線程運行時阻止IIS回收WCF服務的方法嗎? – Smarter