2011-09-26 43 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的经验,因此是他们的首选。 –