MVC3网站内的作业调度程序



我正在寻找一些关于在MVC3网站内部使用Job Scheduler设置的指导。我一直在看Quartz.NET,但我很难在网上找到指导,因为它的设置可以确保它在网站运行时运行。

考虑到上述信息。我知道在IIS中设置作业调度程序有几个"缺点"。我想要设置的工作是简单的清理工作,时间安排并不重要,所以如果IIS通过并回收网站的线程,那就没什么大不了的了。ie.如果由于回收/重新启动网站线程,它每天运行10次,那就好了/如果由于线程没有启动,它每月运行一次,那也好(尽管不太可能)。

我似乎记得SO上的一个问题,或者谷歌上的一篇帖子,显示在Global.asaxApplication_Start()中设置了它,但现在在任何地方都找不到这些信息。有人对如何实现与我所说的类似的东西有什么建议吗?

经过进一步的搜索,我在SO上发现了这个问题,它谈到了在global.asax文件中实现Quartz.NET。

为了实现它,我在新的(在本文发布时)下载包中简单地引用了Quartz.dll,并使用了以下代码。。。

    protected void Application_Start()
    {
        /*
         * Include other Application_Start() code...
         */
        //Job Scheduling
        try {
            //Setup the new Scheduler
            var sf = new StdSchedulerFactory();
            var sched = sf.GetScheduler();
            sched.Start();
            //Setup the Job
            var jobDetail = new JobDetailImpl( "myJob", null, typeof( DocCleanup ) );
            //Create 1 week trigger that will go on forever
            var trigger = new SimpleTriggerImpl( "jobTrigger", SimpleTriggerImpl.RepeatIndefinitely, new TimeSpan( 168, 0, 0 ) );
            trigger.StartTimeUtc = DateTimeOffset.Now;
            //Add the job to the scheduler
            sched.ScheduleJob( jobDetail, trigger );
        } catch (Exception ex) { //Implement Exception code... }
    }

我不想为这个特殊的需求创建控制台应用程序/sql作业等。这主要是由于我的问题中提到的极端不可靠性。话虽如此,如果你需要任何关于作业何时运行的保证,我怀疑你是否会想以这种方式实现Quartz.NET。

您可以创建一个控制台应用程序来完成清理工作(我不确定您想做什么样的清理)。您可以使用Windows任务调度程序在特定的时间间隔内调用此应用程序来完成您的工作

另一个选项是创建一个SQL作业,该作业将在特定的时间间隔内执行。作业中的存储过程可以调用托管代码。所以你可以从中调用你的点网代码。

如果只是清理SQL表,只需编写一个SQL作业即可。

最新更新