Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Quartz.NET:在Asp.NET Web vs控制台应用程序中_Asp.net_.net_Quartz Scheduler_Quartz.net - Fatal编程技术网

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

Quartz.NET:在Asp.NET Web vs控制台应用程序中,asp.net,.net,quartz-scheduler,quartz.net,Asp.net,.net,Quartz Scheduler,Quartz.net,我需要运行4个后台清理临时文件和处理一些文件我已选择Quart.net来做这项工作 我有一个Asp.Net网站,它接受上传文件,这些文件将在晚上由Quartz作业处理 首先,我考虑为Quartz作业制作一个控制台应用程序,使网站和作业完全解耦 但是,我发现我需要asp.net web.config上的一些配置值(connectionstring和文件路径)。于是我想到一个问题: 我应该通过asp.net实例运行作业,还是应该在控制台应用程序上运行作业? 此外,我希望当Quartz作业开始运行时,

我需要运行4个后台清理临时文件和处理一些文件我已选择Quart.net来做这项工作

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

首先,我考虑为Quartz作业制作一个控制台应用程序,使网站和作业完全解耦

但是,我发现我需要asp.net web.config上的一些配置值(connectionstring和文件路径)。于是我想到一个问题:

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

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

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

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

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

如果你想每天晚上手动触发它们,当然可以。但是使用主机系统的任务调度器的控制台应用程序似乎是一个自动化程度更高的解决方案。web应用程序更像是一个请求/响应系统,它并不真正适合于周期性或长时间运行的操作。在主机上安排某种后台操作作为一个调度控制台应用程序或windows服务,ch将更好地达到这一目的

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

我已经看到,我需要asp.net web.config上的一些配置值(connectionstring和文件路径)

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

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

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


这里可能有两种不同的同步状态的方法,您选择什么并不重要。重要的是系统保持解耦,并且对静态持久化的任何状态都要谨慎处理,以避免错误的进程留下不正确的状态。(例如,后台任务将状态设置为“正在处理”,然后以某种方式失败。网站将永远指示它正在处理。)

您可以创建一个windows服务,让windows服务运行quartz作业。当quartz作业运行时,您可以在表中存储一个表示quartz作业正在运行的标志,在asp.net页面中,只要读取该标志并显示一个页面,如果该标志为真,则说明作业正在运行。您可以使用jquery ajax检查把国旗挂起来。