2009-07-10 52 views
0

我需要做以下工作,我想知道我是否可以獲得一些您的輸入。 每晚都有在某個位置(在FTP服務器上)創建的文件。我需要做的是下載此文件並通過Web服務將其導入到遠程SQL服務器。 我還需要能夠隨時手動重新運行導入過程(下載文件並將內容發送到服務器)。 我想一個Windows服務對此會有好處,但我不明白我可以隨時手動重新運行導入過程。有沒有人做過類似的事情?如果是這樣,你使用的技術是什麼?需要關於Windows服務的一些指導

感謝

+1

Windows服務是一個矯枉過正的問題,直到你需要定期運行它。相反,我建議你把它作爲一個計劃任務 – 2009-07-10 21:13:37

+1

即使需要定期運行,Windows服務可能是過度殺毒。您可以將計劃任務設置爲每隔一段時間運行一次。 – adrianbanks 2009-07-10 21:21:44

回答

4

一個Windows服務對此有點矯枉過正,除非可能如果你想每10分鐘輪詢一次文件。否則,你應該真的使用預定任務。

如果您確實使用Windows服務,您可以使用simple Custom Command來投票。遠程處理,IPC等也可以工作 - 但重量更重。

2

Service Controller類可能對您有所幫助。您可以使用它在單獨的「前端」應用程序的運行服務中執行命令。

0

您可以使用類似SyncBackSE創建一個配置文件下載通過FTP的文件,然後運行事件後做你的導入(你可以將特定你想要運行)。這可以按計劃進行(通過Windows計劃任務運行),但您也可以手動運行它(選擇配置文件,然後運行)。沒有真正需要編程,我想這更多的服務器管理員回答你的問題。

0

如果您想從桌面應用程序與Windows服務交談(以告訴它執行手動運行),那麼執行此操作的規範方法是使用命名管道。它們實現起來非常簡單,管道跨越會話/桌面邊界,當您與服務交談時這是必要的。

0

我同意你可以通過計劃任務來完成這項工作。但是,如果您確實想使用Windows服務,則可以使用命令行參數運行該程序,例如「MyService.exe -onetime」。然後,在您的Main函數中,您可以檢查是否包含該命令行參數。如果是這樣,那麼你可以跳過通常的代碼,只需運行導入。