2012-01-16 229 views
0

首先对于问这样一个愚蠢的问题感到抱歉,我在asp.net中相当新手。如何在ASP.NET/WCF中定期执行某些操作?

因此,我应该定期做一些事情,比如我是网站heartpatients.com的所有者(假设),我希望每个访问该网站的网站用户在2小时后显示一条消息“Take你的药丸“。所以,基本上这就是我所有的问题,我应该如何在每2小时后(或4,6,无论什么时间)之后显示此信息,我该如何定制时间。
还有一件事,比如说,如果我在WCF服务中使用这种方法,那么会显示此消息,我如何在特定时间调用该服务,甚至是由用户配置(例如有人在10小时后服用药丸?)如何在用户指定的时间之后周期性地传递该服务(服务中的特定方法)?

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

+0

您是否正在寻找一个推送通知某种移动设备的做到这一点?我认为在用户拥有网页的情况下在浏览器中执行此操作并不现实,如果这就是您的想法。 – TimDog 2012-01-16 17:46:14

+0

从服务器端运行调度然后使用类似[Comet](http://en.wikipedia.org/wiki/Comet_(编程))将*消息推送到页面可能更合适。 – 2012-01-16 17:58:36

+0

@TimDog: 实际上,我真正想要做的是让用户设置一个持续时间,然后在很长时间内(2小时,4小时)向用户发送一封邮件(一种提醒) – Razort4x 2012-01-17 06:14:51

回答

6

ASP.NET通常不适合作为任务调度程序。网络的性质是一个请求/响应系统。因此,一个web应用程序只是坐等待一个请求,产生一个响应,并完成。

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

  1. 一个Windows Service
  2. 计划运行(我认为Windows自带的任务调度程序)
控制台应用程序

无论哪种方式都有优点和缺点。例如,Windows服务将从引导时运行,并且没有控制台UI,并且从服务器的角度来看,通常非常易于管理。尽管控制台应用程序传统上更容易编写和调试。

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

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

在后台运行任务是一回事,但在我看来,整个方程的整个一半(向用户显示一条消息)显得有些茫然,并没有真正想过。

+0

是的 - Windows确实带有一个任务调度程序。 – 2012-01-16 18:00:21

+0

好主意的控制台应用程序,以及任务计划。 – Aristos 2012-01-16 18:10:45

+0

@David 首先感谢您的回复。其实,我真正想要做的是让用户设定一段时间,然后在很长时间内(2小时,4小时)发送一封邮件(一种提醒)给用户关于他们的药片。 – Razort4x 2012-01-17 06:13:29