Quartz.NET:在Asp.Net Web与控制台应用程序中

时间:2015-06-16 18:48:17

标签: asp.net .net quartz-scheduler quartz.net

我需要运行4个背景gobs来清理临时文件并处理一些文件。 我选择了Quart.net 来完成这项工作。

我有一个Asp.Net网站,它接受上传文件,这些文件将在晚上由Quartz Jobs处理。

首先,我考虑为Quartz作业创建一个控制台应用程序,使网站和作业保持完全分离。

但是,我已经看到我需要一些asp.net web.config上的配置值(连接字符串和文件路径)。所以我想到了一个问题:

我应该通过asp.net实例运行作业还是应该在控制台应用程序上执行此操作?

此外,我希望当Quartz作业开始运行时,网站会显示一个特殊页面(例如"我们正在处理文件......)。

我最关心的是性能,我不希望网站受到Quartz工作的影响,也不希望这些工作受到影响。受网站影响的表现。

那么,我该怎么办?你做过这样的事情可以给我一个建议吗?

1 个答案:

答案 0 :(得分:1)

  

我应该通过asp.net实例运行作业还是应该在控制台应用程序上执行此操作?

如果您想每晚必须手动触发它们,请确保。但是使用主机系统的任务调度程序的控制台应用程序似乎是一种更自动化的解决方案。 Web应用程序更像是一个请求/响应系统,它不适合定期或长期运行的操作。在主机上安排某种后台操作,例如预定的控制台应用程序或Windows服务,可以更好地实现这一目的。

请注意,如果确实需要无人值守并且即使没有人登录到服务器控制台也能运行,那么Windows服务可能是比控制台应用程序更理想的方法。

  

我已经看到我需要一些asp.net web.config上的配置值(连接字符串和文件路径)

控制台应用程序具有App.config个文件,这些文件具有相同的用途。你可以使用它。

  

我希望当Quartz作业开始运行时,网站会显示一个特殊页面

你肯定想保持两个去耦合。但是你可以很容易地做到这一点。也许在数据库中有某种状态标志,指示是否有任何特定记录“当前正在处理”。当页面加载并显示该消息时,网站可以简单地查找带有该标志的任何记录。

这里可能有几种不同的状态来同步状态,所选择的并不重要。重要的是系统保持解耦,并且静态保持的任何状态都要小心处理,以避免错误的进程离开不正确的状态。 (例如,后台任务设置“处理”状态,然后以某种方式失败。网站将永远表明它正在处理。)