【问题标题】:What's are the benefits of using Web.config scheduled tasks over for example a Windows scheduled task使用 Web.config 计划任务比使用 Windows 计划任务有什么好处
【发布时间】:2011-04-22 18:36:15
【问题描述】:

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

  • Keepalive
  • 在我们运行的不同网站中导入

Sitecore 有它自己的调度器,这使得导入非常容易通过使用这个调度器来运行。另一方面,Sitecore 在 web.config 中也有自己的“KeepAlive”设置,以确保网站运行得更快。

在这个问题上,赞成和反对的意见是什么?您有什么建议? 保持计划任务集中? 从 Keepalive 任​​务中拆分正常导入并将其中一个放在集中式环境中?

【问题讨论】:

    标签: c# .net scheduled-tasks sitecore


    【解决方案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 上下文中运行这样的代码更有效。

    【讨论】:

      【解决方案2】:

      还有第三种选择。

      在 Sitecore 中,您可以在 sitecore/system/tasks/schedules/ 中创建任务

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

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

      我自己没有尝试过,所以无能为力。

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

      有一些帮助 here(尽管这是针对 Sitecore 5.3)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-11-02
        • 1970-01-01
        • 1970-01-01
        • 2017-03-17
        • 2011-02-18
        • 2016-02-10
        相关资源
        最近更新 更多