代码之家  ›  专栏  ›  技术社区  ›  Younes

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

  •  1
  • Younes  · 技术社区  · 14 年前

    我们正在考虑通过将许多任务从特定于网站的web.config文件拖到一个Windows计划任务中,尽可能地集中我们的计划任务。 我可以想象这会产生一些负面的后果,但是我想列出它们,这样我就可以很好地解释什么最有效了。 我们有不同类型的任务需要定期完成,例如:

    • keepalive<-调用一个页面,这样网站就不会每20分钟重新编译一次(IIS设置)
    • 导入我们运行的不同网站<-导入必须放置在SiteCore数据库中的对象。

    SiteCore有自己的调度器,只需使用这个调度器就可以很容易地运行导入。另一方面,sitecore在web.config中也有自己的“keepalive”设置,确保网站运行更快。

    在这个问题上,赞成者和反对者是什么?你会提出什么建议? 保持计划任务集中? 从keepalive任务中分离常规导入,并将其中一个任务放在集中的环境中?

    2 回复  |  直到 11 年前
        1
  •  1
  •   Alex Shyba    14 年前

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

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

    在我所看到的实际例子中,Windows调度器方法的实现是“在特定时间发布”的场景: http://sitecoreblog.alexshyba.com/2007/02/publish-at-specific-time.html 此外,我还看到实现了大型数据推送,就像您所说的那样。在控制台应用程序中,您几乎可以让导入代码在SiteCore上下文之外运行。通过访问sitecore.configuration.factory,您可以实例化数据库、获取项和创建项。这就是你所需要的。另外,在HTTP上下文中运行这样的代码更有效。

        2
  •  0
  •   Bartłomiej Mucha    11 年前

    还有第三种选择。

    在SiteCore中,可以在SiteCore/System/Tasks/Schedules中创建任务/

    它依次调用sitecore/system/tasks/commands中的命令/

    它可以通过引用一个运行的方法来创建。

    我自己也没试过,所以帮不了什么忙。

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

    有一些帮助 here (尽管这适用于SiteCore 5.3)。