每天安排一个任务,我有一个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