【发布时间】:2011-05-15 12:53:18
【问题描述】:
如果我想每小时运行一系列 Web 服务调用。如何从我的 Web 服务器执行此操作?
我猜有一个计时器需要部署在某个地方,以便它倒计时,当时间到时,它会再次使用这些 Web 服务并检索返回的 XML 数据以存储在数据库中。然后计时器再次重置。
【问题讨论】:
标签: asp.net web-services timer
如果我想每小时运行一系列 Web 服务调用。如何从我的 Web 服务器执行此操作?
我猜有一个计时器需要部署在某个地方,以便它倒计时,当时间到时,它会再次使用这些 Web 服务并检索返回的 XML 数据以存储在数据库中。然后计时器再次重置。
【问题讨论】:
标签: asp.net web-services timer
如果您想在 ASP.NET Web 应用程序中执行此操作,请查看 Quartz.NET Job Scheduler,它非常适合此类操作。
否则,您可以使用timer 将单独的应用程序作为 Windows 服务运行,或者将控制台应用程序作为 Windows 计划任务运行。
【讨论】:
您可以在 global.asax 中将System.Threading.Timer 类与应用程序启动事件一起使用:
protected static Timer timer;
protected void Application_Start(Object sender, EventArgs e)
{
timer = new Timer(MyRoutineToCall, null, TimeSpan.FromHours(1), TimeSpan.FromHours(1));
}
protected void MyRoutineToCall(Object state)
{
// do your stuff here
}
【讨论】:
为什么不直接使用 cron 呢? Cron 就是为了做这种事情而设置的。
【讨论】:
Windows 任务计划程序可能正是您所需要的。
【讨论】:
另一种方法是使用包含 Windows 服务逻辑的 IIS 自动启动网站。 IIS 自动启动优于使用 Windows 服务,因为它包含所有 IIS 应用程序托管逻辑,包括自动重启和积极的资源管理。编写不佳的 Windows 服务可以关闭服务器,但 ASP.net IIS 托管应用程序需要花费很多时间才能关闭其主机(几乎不可能)。
【讨论】: