每天安排一個任務,我有一個ASP.NET MVC應用程序,讓用戶存儲喜歡的視頻和照片的媒體。有道在C#.NET Web應用程序
該應用程序還允許用戶刪除存儲在服務器的媒體。要做到這一點我想實現一個「兩步」的過程中,第一個(當選擇媒體被刪除),在該數據庫中的媒體項目將得到一個時間戳表明該條目在一段時間內被刪除(例如一個月);如果該時間戳在那段時間內未被刪除,則應該有一個每天執行的預定方法,並檢查媒體條目是否具有足夠的時間戳以被刪除。
我的問題是關於調度: 我readed,有一些框架,如FluentScheduler或Quartz.NET實現那種工作。由於該應用程序是在IIS中部署的Web應用程序,因此我不敢使用適當的方式,框架或方法來實現它。由於IIS可以在任何時間,因爲,預定的方法將執行寫入數據庫,並在IO文件系統刪除數據庫條目和物理文件關閉我的應用程序,這對我非常重要,該方法完全執行或不執行所有,以保持數據庫與存儲在hd的文件保持一致。
我的第一個賭注是FluentScheduler,但我需要知道,如果使用框架一樣,是最好的解決方案。
我知道,這樣的問題是不是在StackOverflow的歡迎。這不是一個意見問題,我只想閱讀解決方案並選擇最適合我的要求的解決方案。
這是某種的會是什麼,預定的方法內的僞代碼:
using(ViewMediaDBUnitOfWork uw = new ViewMediaDBUnitOfWork())
{
var today = DateTime.Now.Date;
List<Media> mediaToDelete = uw.MediaRepository.Get(m => (m.ToDelete - today).value.Days > 30);
mediaToDelete.ForEach(m =>
{
try
{
//Deletes from DB
uw.MediaRepository.Delete(m);
//Deletes the file
File.Delete(m.Path);
//If everything is ok, savechanges
uw.MediaRepository.SaveChanges();
}
catch(Exception e)
{
LogManager.GetCurrentClassLogger().Error("Error deleting. " + m.Path, e);
}
});
}
我不會在Web應用程序中安排任務。我會創建一個單獨的應用程序,由服務器上的任務調度程序執行清理。 – itsme86
你能否擴大你的答案?如何在服務器上實現任務調度程序...或者可以鏈接到您想要的更多信息。 – MorgoZ
我只是談論標準的Windows服務器任務調度器:https://technet.microsoft.com/en-us/library/cc748993(v=ws.11).aspx – itsme86