2013-11-28 371 views
1

嗨我有一個網站,我需要處理。一旦用戶啓動了一個過程,它就需要運行,直到實時溫度數據滿足特定條件。這個過程可能需要幾天的時間才能完成。所以一旦進程開始,它需要在服務器上連續運行。 我不知道如何去做。我閱讀了關於後臺工作流程的內容,但我不確定自己是否在正確的軌道上。我想盡可能使用asp.net和C#來完成這個任務。 任何人都可以讓我走上正軌嗎?由於在服務器上的後臺進程中運行進程

回答

1

ASP.NET不執行這樣的長時間運行的背景工作者一個很好的選擇,因爲工作進程在一段時間循環一次,以減少內存泄漏的影響(取決於配置,可能是經常)。
但是,您可以實現在服務器上運行並且獨立於Web應用程序的Windows Service。 Web應用程序和Windows服務可以通過WCF(或數據庫)進行通信。
當然,出於安全原因可能會禁止在Web服務器上安裝服務,因此您應該先檢查該服務。
與Windows服務相比,更輕量級的替代方法是創建控制檯應用程序,並通過調度程序定期運行它(如果這也符合您的要求)。

+0

服務器不是問題。我們有自己的服務器。因此,你建議運行一個Windows服務,保持運行並更新數據庫中的數據比UI基本上從數據庫讀取並顯示結果完成後?對於大量運行的進程來說,這是一個很好的方法嗎? –

+0

Windows服務應該只收集數據。當你需要它連續運行時,windows服務是一個不錯的選擇。 UI應該從數據庫中獲取數據。爲了通知用戶新數據,一旦向用戶添加數據到數據庫,Windows服務可以發送帶有指向UI的鏈接的電子郵件。 – Markus

1

使Windows服務運行後臺進程和做骯髒的工作。 IIS可以重新啓動/應用程序池回收,這將阻止您的任務完成。當用戶在web(UI部分)中啓動進程時,使用進程間通信(tcp或命名管道)向Windows服務通知它。

+0

感謝您的評論 –