2014-10-18 40 views
3

爲了進行基於時間的事件,最佳設計是什麼?例如,發送提醒給用戶讓我們說,他們上次登錄後60天左右?如何在MVC5網站中創建基於時間的事件?

該系統目前建立在MVC5上,所以我打算在基本控制器的ActionExecuted中添加一些cronjobs,它會觸發所有的檢查和內容,並執行所有基於事件的任務。

我在考慮的另一種方法是實際創建一個桌面應用程序(控制檯應用程序),並讓它始終運行,並從SQL服務器獲取新用戶註冊的推送通知,然後保留該列表並儘快60天內通過發送電子郵件或每天查詢服務器一次以獲取每個人的最後登錄日期,並在需要時爲任何用戶發送電子郵件。

我發現這個(http://www.quartz-scheduler.net)在另一個問題上的SO: MVC - Run scheduled task even if nobody logs into app

,想問問這將是該系統一個更好的選擇嗎?

一個更好的例子是每個月都會發送一封簡報給一些用戶。那將如何實施?

回答

1

所以最後我結束了使用Quartz.NET。我讓MVC應用程序創建觸發器和作業,並且一個單獨的服務器運行一個執行觸發器和作業的控制檯應用程序。

這可以通過Scheduler.Start();在控制檯應用程序中,而不是在Web應用程序中。

此外,作業和觸發器存儲在SQL服務器(Azure SQL)上,而不是RAM,因此兩臺機器都可以訪問它們。

我也必須確保時鐘都同步到第二和更改在Web.config中和App.config中的<quartz>配置部分的一些變量:

<add key="quartz.scheduler.instanceId" value="AUTO" /> 
<add key="quartz.jobStore.clustered" value="true" /> 

兩個系統應該在集羣行動!

相關問題