2012-04-16 23 views
0

作爲一個依賴來自互聯網的不同數據源的Web應用程序的一部分,我需要創建一個組件,通過網絡從不同的地方提取數據,並使它們可用於我的Web應用程序。 它有一個要獲取的資源列表,以及每個資源的不同時間。例如,它需要每1小時提取一個RSS提要,並且每30分鐘調用一次某個REST API。選擇一個調度機制

我已經實現了抓取部分。我現在正在徘徊如何實現調度部分。

我知道我可以使用Windows計劃任務或Windows服務,並且我已閱讀關於此主題的答案,但他們通常都是說。 我在徘徊什麼你認爲最適合我的具體情況。 (其他選項也歡迎) 另外,您會如何推薦實施該解決方案。

謝謝

回答

1

嘗試Quartz.Net

+0

這不是使用Windows服務或定時器作業的替代方案,對吧? 據我所知,這是我的Windows服務或計時器作業的調度部分。 我正確嗎? – itaysk 2012-04-16 19:57:51

+0

我不知道我關注。 Quartz是一種使您能夠根據特定計劃執行任務/方法的機制。這與執行包窗體(application/windows service)無關。計時器是以預定義間隔執行任務/方法的非常原始的方法。 – Gilad 2012-04-17 07:02:31

0

我在類似案例中經常看到的一個錯誤是嘗試讓所有的東西都成爲同一個Web應用程序的一部分。假設從「不同地方」抽取的「數據」非常簡單且足夠簡單,因此可以將其存儲到文件系統或數據庫中(相對於必須駐留在內存中的這種性質 - 例如複雜的互連對象圖),我會讓你的「爬蟲」成爲一個獨立的進程。

現在,這個過程應該是一個簡單的命令行,由Windows任務計劃程序或由Quartz.Net激活的Windows服務激活,實際上取決於它每次啓動時需要初始化多少東西,以及多久需要醒來。爲了給出兩個極端,如果它每天運行一次,請將其作爲命令行應用程序。如果它每5秒運行一次,並且需要3秒鐘才能啓動並且運行所有代碼,則將其設置爲Windows服務。如果您希望用戶激活它,並且其反應時間必須是即時的,請再次將其設置爲Windows服務。

您可以隨時從命令行開始,在需要時移動到服務中,您不必重新實現太多,而且如果將處理和調度部分分開,則結構將變得更簡單什麼命令行方法強制你。