4

为 Web 应用程序创建计划任务有哪些不同的方法,无论有没有单独的 Web/桌面应用程序?

4

11 回答 11

4

如果我们谈论的是 Microsoft 平台,那么我总是会开发一个单独的 Windows 服务来处理此类批处理任务。

您始终可以引用 Web 应用程序正在使用的相同程序集,以避免任何讨厌的代码重复。

于 2008-08-22T20:46:18.347 回答
4

Jeff 在 Stack Overflow 博客上讨论了这个问题 - https://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/

基本上,Jeff 建议使用 CacheItemRemovedCallback 作为调用某些任务的计时器。

我个人认为自动化任务应该作为服务、Windows 计划任务或 SQL Server 中的作业来处理。

在 Linux 下,签出 cron。

于 2008-08-22T21:01:51.523 回答
2

我认为 Stack Overflow 本身正在使用 ApplicationCache 过期来间隔运行后台代码。

于 2008-08-22T20:24:12.610 回答
2

如果您在 Linux 主机上,您几乎肯定会使用cron

于 2008-08-22T20:24:55.637 回答
1

在 linux 下,您可以使用 cron 作业 ( http://www.unixgeeks.org/security/newbie/unix/cron-1.html ) 来安排任务。

使用 wget 或 curl 之类的 URL 获取器来发出 HTTP GET 请求。

通过身份验证保护您的 URL,这样任何人都无法在不知道用户/密码的情况下执行任务。

于 2008-08-22T20:26:04.587 回答
1

我认为 Windows 的内置任务计划程序是这项工作的建议工具。这需要外部应用程序。

于 2008-08-22T20:33:13.027 回答
1

这可能是也可能不是您正在寻找的内容,但请阅读这篇文章“使用 ASP.NET 模拟 Windows 服务以运行计划作业”。我认为 StackOverflow 可能会使用这种方法,或者至少有人谈论过使用它。

于 2008-08-22T20:36:20.303 回答
1

我们在我工作的地方使用的一个非常简单的方法是:

  1. 设置执行任务的 webservice/web 方法。如果需要,可以使用用户名/密码保护此 Web 服务。
  2. 创建一个调用此 Web 服务的控制台应用程序。如果需要,您可以让控制台应用程序发送参数和/或取回某种指标以输出到控制台或外部日志记录。
  3. 在选择的任务调度程序中安排这个可执行文件。

它并不漂亮,但它简单可靠。由于控制台应用程序本质上只是一个通知应用程序开始工作的心跳,因此它不需要与应用程序共享任何库。这种方法的另一个优点是在需要时手动启动相当简单。

于 2008-08-22T20:59:15.710 回答
1

使用 wget 或 curl 之类的 URL 获取器来发出 HTTP GET 请求。

通过身份验证保护您的 URL,这样任何人都无法在不知道用户/密码的情况下执行任务。

例如,您还可以告诉 cron 直接运行 php 脚本。您可以设置 PHP 文件的权限以防止其他人访问它们,或者更好的是,不要将这些实用程序脚本放在 Web 可访问目录中......

于 2008-08-22T21:02:13.223 回答
1

Java 和 Spring——使用石英。非常好和可靠——http: //static.springframework.org/spring/docs/1.2.x/reference/scheduling.html

于 2008-09-15T20:08:00.377 回答
0

我认为有比使用 cron (Linux) 或 Task Scheduler (Windows) 更简单的方法。您可以使用以下方法将其构建到您的网络应用程序中:(a)石英调度程序,

或者如果您不想将另一个 3rd 方库集成到您的应用程序中:(b) 在启动时创建一个线程,该线程使用标准 Java 'java.util.Timer' 类来运行您的任务。

于 2011-09-23T07:29:57.580 回答