2012-01-16 227 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