使用Web.config计划任务的好处是什么,例如Windows计划任务

时间:2010-10-08 08:21:46

标签: c# .net scheduled-tasks sitecore

我们正在考虑通过将大量任务从网站特定的web.config文件拖到一个Windows计划任务来尽可能地集中我们的计划任务。 我可以想象这有一些负面影响,但是我想列出它们,这样我就可以很好地解释什么是最好的。 我们有不同类型的任务必须定期完成,例如:

  • Keepalive< - 调用一个页面,以便网站不会每20分钟重新编译一次(iis设置)
  • 我们运行的不同网站中的导入< - 例如必须放置在Sitecore数据库中的对象的导入。

Sitecore拥有自己的调度程序,只需使用此调度程序即可轻松运行导入。另一方面,Sitecore还在web.config中拥有自己的“KeepAlive”设置,以确保网站运行得更快。

关于这个问题的专业人士和问题是什么?你会建议什么? 将计划任务集中在一起? 从Keepalive任务中拆分正常导入并将其中一个放在集中式环境中?

2 个答案:

答案 0 :(得分:1)

Sitecore本地调度在Sitecore上下文中执行,这意味着您可以通过这种方式轻松地与Sitecore通信,但应用程序必须处于活动状态才能执行任务。这就是为什么不能在预定的时间间隔内在特定时间运行预定代理的原因,因为无法保证应用程序在给定时刻是健康的。

Windows任务在上下文之外执行,并且可以在特定时间安排,但是这种方法缺少需要的Sitecore上下文,这可能会使设计复杂化,但您始终可以创建Sitecore Web服务来处理它。

我见过的实际采用Windows调度程序方法的实际例子中有“在特定时间发布”的情况: http://sitecoreblog.alexshyba.com/2007/02/publish-at-specific-time.html 此外,我已经看到实现了大数据推送,就像你正在谈论的那样。您几乎可以在控制台应用程序中在Sitecore上下文之外运行导入代码。访问Sitecore.Configuration.Factory后,您可以实例化数据库,获取项目和创建项目。这就是你所需要的。另外,在http上下文中运行此类代码更有效。

答案 1 :(得分:0)

还有第三种选择。

在Sitecore中,您可以在sitecore / system / tasks / schedules /

中创建任务

反过来调用sitecore / system / tasks / commands /

中的命令

您可以通过引用运行的方法来创建。

我自己没有尝试过,所以无法帮助更多。

但是你可以设定一个特定的时间。

有一些帮助here(虽然这是针对Sitecore 5.3)。