在ASP.NET中模拟Windows服务运行计划任务

导言

     ASP.NET如何在不依赖Windows服务的情况下运行计划任务呢?我们常常需要执行一些维护任务或计划任务,例如在网站上向用户发送提醒邮件等。ASP.NET并不能持续运行一段程序或计划任务,我们可以利用Windows服务来运行计划任务或时钟守护工作。但是,在虚拟主机上我们并不能部署Windows服务,或许你可以购买专用主机来实现这个功能,不过这对普通用户来说太奢侈了。计划任务能帮助我们向用户发送提醒邮件,向管理员发送维护报告,执行清理操作等,是一个非常方便的功能,我会向大家展示一个微妙的方法来执行计划任务,只使用ASP.NET而不需要依赖Windows服务。该解决方案能运行在任何虚拟主机上,无需购买专门的服务器。

如何运作

     首先我们需要能在ASP.NET中持续运行并执行回调的对象。IIS服务器是持续运行的,我们需要它频繁回调,来查看列队中是否有任务需要执行。服务器在一下情况执行回调。

  • 一个网页被访问时
  • Application启动时
  • Application停止时
  • Session启动、结束或超时时
  • Cache项目超时时

     网页被访问是随机的,如果没有人访问网页,等待执行的工作可能永远不被执行。此外,访问请求的时间很短,而且需要尽快完成。如果在此时执行计划任务,被访问的页面需要很长的时间才能显示出来,这会导致不良的用户体验。显然,这个方案并不太好。

posted @ 2009-02-27 19:00  Snlo.cn  阅读(1606)  评论(2编辑  收藏  举报