如何在ASP.NET / WCF中定期执行某些操作?

时间:2012-01-16 17:41:24

标签: c# asp.net multithreading wcf web-services

首先抱歉提出这样一个愚蠢的问题,我是asp.net的新手。

所以,我应该定期做一些事情,说我是网站heartpatients.com的所有者(假设)我希望我的每个网站用户访问该网站,2小时后显示的消息“带你的丸”。所以,基本上这都是我的问题,我应该在每2小时(或4,6之后的任何时间)之后显示此消息,我也可以如何自定义时间。
还有一件事,比如我在WCF服务中有这个方法,它显示了这条消息,如何在特定时间调用该服务,甚至用户配置(比如有人在10小时后吃药?)那么如何在用户指定的时间后定期调用该服务(服务中的特定方法)?

我希望我的问题很清楚 任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:6)

ASP.NET通常不适合作为任务调度程序。 Web的本质是作为请求/响应系统。因此,Web应用程序只是等待请求,生成响应并完成。

对于任何类型的后端计划任务,我建议:

  1. A Windows Service
  2. 计划运行的控制台应用程序(我认为Windows附带了一个任务计划程序)
  3. 无论哪种方式都有利弊。例如,Windows服务将从引导时运行,并且没有控制台UI,并且从服务器角度来看通常是非常易于管理的。虽然控制台应用程序传统上更易于编写和调试。

    这些仍然可以共享您的Web应用程序中的代码。如果您的业务逻辑和数据访问以及所有好东西都在他们自己的项目/程序集中,那么这些其他应用程序也可以使用这些程序集。 (当然,如果您的Web应用程序中的所有内容都是UI绑定的,那完全是另一个问题。)

    最让我担心的是......您打算如何向用户显示此消息?用户是否只是一次坐在您的网站上几个小时,您需要提醒他们服用药物?或者您打算发送电子邮件或其他什么?也许你给出的例子并没有真正解释你想要做什么?我不确定。

    在后台运行任务是一回事,但在我看来,整个方程的一半(向用户显示一条消息)有点茫然而且没有经过深思熟虑。

答案 1 :(得分:2)

查看Quartz.Net:http://quartznet.sourceforge.net/

它使您可以安排使用cron表达式运行的任务: http://en.wikipedia.org/wiki/Cron