2009-06-24 64 views
0

我目前有一個Windows應用程序,它是自動的,每天運行。 的目的是訪問一個web服務來下載一個數據集,插入到sql 2005數據庫中。是一個Windows服務應用程序的正確方法

在這種情況下,Windows服務應用程序是否合適,它是否更靈活,性能會更好。

回答

5

您絕對可以將其作爲服務,但我認爲您不會從中受益。由於服務始終在運行,因此它們通常用於需要運行的應用程序,因爲它們會不斷檢查條件(等待遠程處理,每n分鐘檢查一次數據庫中的信息等)。

由於您的每天運行一次,如果您更改它,您將不會有任何優勢。如果您的自動化任務設置正確,它應該在機器開啓時運行,就像服務一樣。在服務上安裝Windows應用程序(特定於控制檯)的好處是,如果出現問題,您可以再次啓動應用程序並運行它。這對服務來說不會那麼容易,因爲額外的代碼必須在程序中確保它每天只運行很多次(在你的情況下)。您可能無法在啓動時執行您的進程,因爲您必須考慮重新啓動的服務器。這意味着如果你的服務器在程序運行的時候出現故障,你將不得不知道如何「欺騙」程序,使其認爲它只應該在那段時間運行這個程序。 Window的應用程序不會因此而受到影響,因爲它們會在進程完成後終止,因此可能沒有額外的代碼來阻止其再次運行該進程。

2

即使沒有用戶正在主動登錄,Windows服務將允許您運行您的任務。我會說,對於這樣的任務,Windows服務更適合。不過,我懷疑會有什麼表現改善。

+2

僅供參考 - 如果沒有用戶登錄,常規計劃任務也可以運行得很好。 – 2009-06-24 11:46:43

+0

它必須是非GUI控制檯應用程序,然後, 對? – 2009-06-24 11:51:06

1

如果只需要每天運行一次(或者只是定期運行),那麼在我看來,將它作爲服務是有點浪費的。大多數時候它只會無所事事。

沒有什麼特別的服務可以提高性能,所以我建議將它作爲一個普通的應用程序使用,並使用調度程序每天運行一次。

0

如果您要將數據插入到SQL Server中,那麼您顯然對此有依賴性。我將研究使用SQL代理的計劃。

根據您的處理要求,您可能會發現使用SQL Server Integration Services(SSIS)可以完成大量工作,這些服務詳細記錄瞭如何使用SQL Server進行計劃。

我知道你提到你已經寫了這個。但是通過SSIS/SQL代理,您可以免費獲得一定程度的監控,您可能會發現複製當前代碼的工作量很小。同樣,DBA可以很容易地維護你的代碼,而不需要訪問源代碼等。

相關問題