用于监控网页更改的.NET服务

时间:2011-09-26 10:44:16

标签: c# .net windows-services

我想创建一个服务来监控网页的变化,即页面内容已经更新。我试图想出实现这一目标的最佳方法,目前我正在考虑几种选择。请注意,可能需要监控数百个页面,检查间隔可能是秒或小时(可配置)。

  1. 为每个要监控的页面创建一个Windows服务
  2. 创建一个Windows服务,为每个要监控的页面生成一个线程
  3. 现在,我担心这些是最好的方法,以及这些是否是我没有考虑的替代方案。我认为1可以隔离每个监控任务,但会牺牲物理资源和创建/维护工作的开销。第二个会稍微复杂但更清洁。显然,如果服务失败,它也会失去隔离,那么所有监控都将失败。

2 个答案:

答案 0 :(得分:2)

我做了类似的事情,我通过一个持久化队列(一个SQL Server表)来解决它,该队列将存储远程Uri以及上次运行的间隔和DateTime。

然后我可以通过选择具有lastRun + interval<的那些条目来获取我想要运行的所有条目。现在

如果您的最小间隔在几秒钟的范围内,您可能想要使用ThreadPool,以便您可以同时发出多个请求。 (请记住相应地调整app.config中的maxConnections设置)。

我会使用一个Windows服务(看看TopShelf项目)然后我会让Quartz.Net触发这些工作。使用Quartz,您可以控制是否必须等待以前的作业完成等。

答案 1 :(得分:1)

创建一个Windows服务是可行的方法...关于此Windows服务的失败,您可以采取多种措施来处理 - 例如配置窗口以在失败时自动重启Windows服务...... < / p>

我建议将线程池方法和/或System.Threading.TimerConcurrentDictionaryConcurrentQueue结合使用。