我需要运行4个后台谷歌清理临时文件和处理一些文件。我选择了Quart.net做这份工作。
我有一个Asp.Net网站,它接受上传文件,将在晚上由石英乔布斯处理。
首先,我考虑为Quartz作业制作一个控制台应用程序,使网站和作业完全解耦。
但是,我已经看到,我需要asp.net web.config上的一些配置值(连接字符串和文件路径)。所以我想到了一个问题:
是通过asp.net实例运行作业,还是应该在控制台应用程序上运行?
此外,我希望当Quartz作业开始运行时,网站会显示一个特殊的页面(比如“我们正在处理文件.”)。
我最关心的是表现,我不希望网站受到石英作业的影响,也不希望网站的表现受到影响。
那我该怎么办?你做过这样的事,能给我一个建议吗?
发布于 2015-06-16 18:57:12
我应该通过asp.net实例运行作业,还是应该在控制台应用程序上这样做?
如果你想每天晚上都要手动触发,当然。但是使用主机系统的任务调度器的控制台应用程序似乎是一个更自动化的解决方案。web应用程序更像是一个请求/响应系统,它并不真正适合定期或长时间运行的操作。在主机上调度某种背景操作,例如调度控制台应用程序或windows服务,将更好地满足这一目的。
注意,如果它确实需要无人值守并运行,即使没有人登录到服务器控制台,windows服务也可能是比控制台应用程序更理想的方法。
我已经看到,我需要一些asp.net web.config上的配置值(连接字符串和文件路径)
控制台应用程序具有同样用途的App.config文件。你可以用这个。
我希望当Quartz作业开始运行时,网站会显示一个特殊的页面。
你肯定想让这两个人脱钩。但你也许能很容易地做到这一点。可能在数据库中有某种状态标志,它指示是否有任何特定记录正在“当前正在处理”。当页面加载并显示该消息时,该网站可以简单地查找带有该标志的任何记录。
这里可能有几种不同的状态同步方式,您选择什么并不重要。重要的是,系统保持解耦,静态持久化的任何状态都要谨慎处理,以避免错误的进程离开不正确的状态。(例如,后台任务设置“处理”状态,然后以某种方式失败。该网站将永远表明它正在处理。)
https://stackoverflow.com/questions/30875782
复制相似问题