0

作为依赖于来自 Internet 的不同数据馈送的 Web 应用程序的一部分,我需要创建一个组件来从网络上的不同位置提取数据,并使它们可用于我的 Web 应用程序。它有一个要获取的资源列表,以及每个资源的不同时间。例如,它需要每 1 小时拉一次 RSS 提要,每 30 分钟调用一次某个 REST API。

我已经实现了获取部分。我现在正在徘徊如何实现调度部分。

我知道我可以使用 Windows 计划任务或 Windows 服务,并且我已经阅读了有关此主题的答案,但它们是一般性的。我在徘徊你认为最适合我的具体情况。(也欢迎其他选项)此外,您建议如何实施该解决方案。

谢谢

4

2 回答 2

1

试试石英网

于 2012-04-16T16:09:53.040 回答
0

我经常看到在类似情况下犯的一个错误是尝试将所有内容都作为同一个 Web 应用程序的一部分。假设您从“不同位置”提取的“数据”足够平坦且足够简单,因此可以将其存储到文件系统或数据库中(相对于必须驻留在内存中的这种性质 - 例如复杂的互连对象图),我会让你的“爬虫”成为一个单独的过程。

现在,该进程应该是一个简单的命令行,由 Windows 任务计划程序激活,还是一个 Windows 服务,由 Quartz.Net 之类的东西激活,实际上取决于它每次启动时必须初始化多少东西以及它需要多久起床。举两个极端,如果它每天运行一次,就让它成为一个命令行应用程序。如果它每 5 秒运行一次,并且需要 3 秒来启动并 JIT 其所有代码,则将其设为 Windows 服务。如果您希望它由用户激活并且它的反应时间必须是瞬时的,请再次将其设为 Windows 服务。

您始终可以从命令行开始并在需要时转移到服务,您不必重新实现太多,如果您将处理和调度部分分开,您的架构最终会变得更简单,这就是命令行方法对你施加力量。

于 2012-04-16T17:12:18.123 回答