2011-09-26 31 views
0

我想創建一個服務來監視對網頁的更改,即頁面內容已更新。我試圖想到實現這一目標的最佳方法,目前我正在考慮幾個選項。請注意,可能有數百個要監視的頁面,檢查的間隔可能是幾秒或幾小時(可配置)。用於監視網頁更改的.NET服務

  1. 爲每個頁面創建一個Windows服務來監控
  2. 創建產生一個線程爲每個頁面監測

現在一個窗口服務,我關注它的這些是最好的辦法,這些是否是我沒有考慮過的替代方案。我認爲1會有隔離每個監控任務的好處,但會以犧牲物理資源和努力創建/維護爲代價。第二個會稍微複雜一些,但更乾淨。顯然它也會失去隔離,因爲如果服務失敗,那麼所有的監控都會失敗。

+0

確實每個頁面有自己的區間,還是間隔適用於所有網頁一樣? –

+0

在這種情況下,什麼是「網頁」?一份文件? –

+0

網頁將成爲互聯網上某處的實際網頁。每個區間可能不同。 –

回答

2

我已經做了類似的事情,我由具有持久性隊列(SQL Server表),將存儲在遠程烏里與間隔和最後一次運行一個DateTime一起解決它。

然後我就可以得到我想要通過選擇具有LASTRUN +間隔<現在的那些運行的所有條目。

如果你的最小間隔是秒的區域,你可能想使用線程池,這樣就可以發出在同一時間幾個請求。 (請記住相應地調整app.config中的maxConnections設置)。

我會用一個Windows服務(看看對於該TopShelf項目),然後我會Quartz.Net觸發作業。石英,你可以控制它是否必須等待前面的作業完成等

+0

我正在考慮通過Windows服務監視來源中的更改的.NET服務。我想每個'檢查'可以通過企業調度程序實例化。隨後SSIS將被用於ETL,因爲除網頁之外還有其他來源,例如FTP,文件等等,所以想保持這個過程的通用性。 –

+0

嘗試使用它們存在的事件。例如,Filesystemwatcher可以監視源文件更改併發出事件。它可以監視它在其上安裝的計算機,或通過網絡共享但不通過HTTP/FTP等進行監視。在遠程計算機上設置監視代理,這些監視代理可以從主節點配置自己,以便處理您正在討論的數量。 並查看Rhino ETL而不是SSIS。移動數據是一種更愉快的方式。 –

+0

大多數遠程機器都不在我的控制之下。所以我仍然需要實現某種形式的輪詢機制。我們有SSIS的經驗,因此是他們的首選。 –