2013-05-21 279 views
2

所以這是我與編程方式創建Windows服務或計劃任務第一次進站前,我很困惑該選哪一個。我看了一下像http://weblogs.asp.net/jgalloway/archive/2005/10/24/428303.aspxscheduled task or windows service各種文章和一些更多的,但可以」噸真的決定btween兩個窗口服務VS計劃任務

這裏是我的情況:

我的應用程序將拿起從幾個動態鏈接庫的代碼路徑db,使用MSTest.exe執行DLL並將結果記錄回Db。這可能會每2-3小時重複一次。現在我對預定的任務有所瞭解,因爲我不必擔心與內存相關的問題,但需要一些專家建議。

P.S. :在DLL中包含測試方法做出的部署在各個服務器

在此先感謝您的幫助

+1

‘......因爲我不必擔心內存相關的問題。’ - 如果你的意思是像內存泄漏在代碼中的缺陷,那麼無論你選擇什麼解決方案,這絕對是你應該擔心的事情。選擇一個技術,因爲它可以讓你馬虎,這是一個壞主意。 –

回答

11

計劃的任務將是爲您的方案更appropiate應用Web服務調用。當OS已經提供調度基礎架構時,我認爲在windows服務上構建調度機制並不合理。

一個Windows服務是具有在任何時候對事件做出響應,而不是在特定的和修復時間流程更不合適。這就是爲什麼他們一直在運行。這方面的一個例子是SQL Server服務。

的一個例外可能是需要運行每秒左右的任務。在這種情況下,Window Service可能是最好的解決方案。對於您的具體日程安排,我毫不懷疑計劃任務會更好。

+0

感謝克勞迪奧,那正是我的想法。我不確定它需要運行的權限。根據我的理解,爲了創建一個任務,我需要管理員權限以及如何運行任務?此外,由於n/w帳戶將有權訪問數據庫和Web服務,這些任務是否可以在網絡帳戶下正常運行?如果我更改密碼怎麼辦?只是試圖在這裏覆蓋我的軌道.... – blank

+0

@nikhil:它不是強制性的使用管理員權限運行,但它可能需要一個具有更多權限的帳戶,具體取決於您的方案。對於訪問數據庫和Web服務,默認憑據在正常情況下應該足夠了。 –

+0

@ CLAUDIO ..當用戶沒有登錄時如何運行任務?我讀過它存儲用戶密碼以實現此功能。這是可行的編程?還處理多個實例呢?因爲任務可能需要比預期更多的時間,並可能與其重新運行時間一致...調度程序是否有任何功能來處理這個問題? – blank

0

雖然這篇文章是幾個月之前,這裏的的情況下,可能的解決方案是幫助他人的「運行用戶是否登錄或沒有」的問題:啓動一個控制檯項目,然後提到更改類型Windows應用程序在Run code once and exit formless app: Windows Forms or WPF... does it matter?: 「如果你從來沒有表現出UI,你應該用WinForms項目(WPF項目設置你不想額外項目的元數據)開始,然後刪除引用對System.Windows.Forms.dll。或者,啓動一個控制檯項目,然後更改輸出類型的Windows應用程序「