Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用于监视网页更改的.NET服务_C#_.net_Windows Services - Fatal编程技术网

C# 用于监视网页更改的.NET服务

C# 用于监视网页更改的.NET服务,c#,.net,windows-services,C#,.net,Windows Services,我想创建一个服务来监控网页的变化,即网页内容已经更新。我正试图想出实现这一目标的最佳方法,目前我正在考虑几个选择。请注意,可能有数百个页面需要监控,检查间隔可能为秒或小时(可配置) 为要监视的每个页面创建windows服务 创建一个windows服务,为每个要监视的页面生成一个线程 现在,我关心的是哪种方法是最好的,以及这些方法是否是我没有考虑过的替代方法。我认为1将有助于隔离每个监视任务,但会以物理资源和创建/维护工作的开销为代价。第二种可能会稍微复杂一些,但更干净。显然,它也将失去隔离,因为

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

  • 为要监视的每个页面创建windows服务
  • 创建一个windows服务,为每个要监视的页面生成一个线程

  • 现在,我关心的是哪种方法是最好的,以及这些方法是否是我没有考虑过的替代方法。我认为1将有助于隔离每个监视任务,但会以物理资源和创建/维护工作的开销为代价。第二种可能会稍微复杂一些,但更干净。显然,它也将失去隔离,因为如果服务失败,那么所有监控都将失败。

    创建一个Windows服务是一条可行之路。。。关于此windows服务的故障,您可以采取几种措施来处理此问题-例如,配置windows以在出现故障时自动重新启动windows服务


    我建议使用线程池方法和/或与或结合使用。

    创建一个Windows服务是一种方法。。。关于此windows服务的故障,您可以采取几种措施来处理此问题-例如,配置windows以在出现故障时自动重新启动windows服务


    我建议使用线程池方法和/或与或结合使用。

    我也做过类似的事情,我通过一个持久化队列(SQL Server表)解决了这个问题,该队列将存储远程Uri以及上次运行的时间间隔和日期时间

    然后,通过选择lastRun+interval 如果最小间隔在秒范围内,则可能需要使用线程池,以便可以同时发出多个请求。(请记住相应地调整app.config中的maxConnections设置)


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

    我也做了类似的事情,我通过一个持久化队列(SQL Server表)解决了这个问题,该队列将存储远程Uri以及上次运行的时间间隔和日期时间

    然后,通过选择lastRun+interval 如果最小间隔在秒范围内,则可能需要使用线程池,以便可以同时发出多个请求。(请记住相应地调整app.config中的maxConnections设置)


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

    每个页面都有自己的间隔,还是间隔平等地适用于所有页面?在这种情况下,什么是“网页”?文件?网页将是internet上某个位置的实际网页。每个页面的间隔可能不同。所以一个网页等于一个Uri?这是正确的吗?每个页面都有自己的间隔,还是间隔同样适用于所有页面?在这种情况下,“网页”是什么?文件?网页将是internet上某个位置的实际网页。每个页面的间隔可能不同。所以一个网页等于一个Uri?是这样吗?我想用.NET服务通过windows服务监控源代码的更改。我想每个“检查”都可以通过企业调度器实例化。SSI随后将用于ETL,因为除了网页之外还有其他来源,例如FTP、文件等。因此希望保持流程的通用性。尝试在存在事件的地方使用事件。例如,Filesystemwatcher可以监视源文件更改并发出事件。它可以监控安装在或通过网络共享安装的机器,但不能通过HTTP/FTP等。在远程机器上设置监控代理,从主节点配置自己,以便您可以处理所谈论的数量。看看Rhino ETL而不是SSIS。这是一种更愉快的数据传输方式。大多数远程机器都不在我的控制之下。因此,我仍然需要实现某种形式的轮询机制。我们有SSI的经验,因此这将是他们的首选。这里的另一个问题是,如果有一个windows服务,如果有数百个源,它将如何为每个源处理一个线程?因为您无法监听所有源的事件,所以您必须返回某种轮询机制,对吗?给定轮询场景,您可以使用我建议的队列方法,并行地批量轮询它们。这就是线程进来的时候。我看不出仅仅为了将未使用的线程彼此隔离而保留它们的好处。当您被迫轮询数据时,获取批处理、执行作业、持久化结果并返回线程。我想到的是一个.NET服务通过windows服务监视源中的更改。我想每个“检查”都可以通过企业调度器实例化。SSI随后将用于ETL,因为除了网页之外还有其他来源,例如FTP、文件等。因此希望保持流程的通用性。尝试在存在事件的地方使用事件。例如,Filesystemwatcher可以监视源文件更改并发出事件。它可以监控安装在或通过网络共享安装的机器,但不能通过HTTP/FTP等。在远程机器上设置监控代理,从主节点配置自己,以便