2011-03-24 57 views
2

讓我在給我的問題提供一個背後的理由。我的公司爲許多客戶託管網站,我的公司也將一些工作委託給另一家公司。 因此,當我們首次建立一個網站時,向我們的客戶提供所有信息,我們會將這些信息傳遞給我們簽約的其他公司,並且我們三人擁有相同的數據。問題是,一旦網站啓動並運行,我們的客戶將更改一些數據,當他們這樣做時,我們應該能夠更新我們的合同公司。 我們將數據傳輸到合同公司的方式是使用Web服務(httppost,xml數據)。現在我的問題是,每當我們的客戶更改一些數據時,編寫一個程序將最新數據發送給合同公司的最佳方式是什麼。Windows服務vs簡單程序

1)編寫一個窗口服務,在我的代碼中有一個定時器,每隔30分鐘左右連接數據庫並查找所有更改並將其發送給合同公司 2)編寫與#1相同的代碼在它的定時器),但這次讓一個簡單的程序,並讓Windows調度喚醒它每隔30分鐘 3)任何其他建議你可能有可供我

Techenologies是VS 2008,SQLServer的2005

+1

向第三方詢問他們想要數據的方式以及頻率。 – Oded 2011-03-24 20:47:06

+2

你的問題基本上是Windows服務與計劃任務。請參閱http://stackoverflow.com/questions/390307/windows-service-vs-scheduled-task – 2011-03-24 20:48:29

回答

1

服務是易於創建和安裝,更「專業」的感覺,爲什麼不那樣去?使用非服務EXE也是當然的,並且稍微容易得到運行(權限等),但我認爲兩者之間的設置差異幾乎可以忽略不計。

0

一種可能的解決方案是將時間戳列添加到數據表中。

完成此操作後,您可以在每個表中獲得一份由合同公司最後收集時間的條目。他們可以提取自上次以來的所有記錄並相應地更新記錄。

2

計劃任務是要走的路。喬恩寫了一個很好的總結,說明爲什麼服務不適合這種事情:http://weblogs.asp.net/jgalloway/archive/2005/10/24/428303.aspx

+0

有效點,但是我有很多與Windows任務計劃程序一起工作的問題,不保存憑據,重啓後沒有運行的任務總而言之,要使事情順利進行需要一些努力。更不用說它對不同版本的Windows有不同的配置選項。我喜歡這樣的服務,我完全控制了我的應用程序的行爲,並可以利用像Quartz.NET這樣的東西來做我想做的事情。 – 2011-03-24 23:22:51

0

Windows服務是更獨立的,你可以很容易地配置它在操作系統啓動時自動啓動。您可能還需要創建其他配置選項,以及一些立即觸發同步的方法。 它還將爲您提供更多空間,以便在將來增加您的服務功能。

獨立應用程序應該更容易開發,但是您依賴Windows調度程序來始終執行任務。我的經驗是,用Windows調度程序搞砸事情比較容易,例如在你重啓操作系統但沒有用戶登錄的情況下更容易。

如果你想要一個更專業的方法去與服務,即使這可能意味着更多的工作。

0

在這種情況下,Windows服務更有意義。想想會發生什麼你的服務器重新啓動後:

有了你需要有人重新啓動應用程序,或手動的快捷方式複製到啓動文件夾,以確保應用程序被啓動

或Windows應用程序,

對於Windows服務,您將其設置爲自動啓動並忘記它。當機器重新啓動時,服務啓動並繼續處理。

還有一點需要考慮,出現錯誤時會發生什麼? Windows應用程序可能會顯示錯誤對話框並等待輸入,然後再繼續;而服務會在事件日誌中記錄錯誤並繼續。

+0

隨着應用程序作爲計劃任務運行,第一個問題(重新啓動它)幾乎消失 - 第二個(錯誤對話框死亡)應該永遠不會存在,如果程序被編寫爲執行任務。 – cHao 2011-03-24 21:04:46

+0

您也可以讓普通的應用程序寫入事件日誌,但這不應該成爲這種情況下的決定性因素。 – 2011-03-24 21:05:52

+0

@cHao @Can Gencer我聽說雅,編寫正確的應用程序不應該這樣做,但我已經看到過,以我的經驗。我不得不重寫其中的一個作爲服務;) – Winger 2011-03-24 21:46:01