我有一个asp.net MVC Web应用程序,需要安排任务。 (安排了大量功能)
我使用Quartz.net作为我的调度程序,目前正在将其作为Windows服务运行。 群集以处理负载并在高峰时段执行资源密集型任务
我面临的问题是能够安排所有必需的功能,包括调度程序服务中的所有内容,包括所有程序集和大多数mvc基础(例如,使用MVC视图生成电子邮件提醒模板),以便服务成为Web应用程序的重复项,带有许多额外的代码,使其发挥得很好。这变得有点噩梦。
我可以吗?
1)将调度程序配置为在asp.Net MVC中工作。
2)使用调用所需网页的Widows服务。
3)使用当前的服务设计。
我的偏好可能是#1,因为这将解决所有上述问题,但如果一段时间内没有活动,Web应用程序将被回收/停止,这意味着可能无法执行预定作业(仅当有应该运行工作时的一些活动)。 Quartz.net setup in an asp.net website
关于哪种方法是最佳方法还是其他替代方案的任何想法/建议?
答案 0 :(得分:3)
我绝对会避免选项1.您的网站应该是请求和响应,仅此而已。
如果您的服务执行的操作不是“长时间运行”并且可以合理地作为HTTP请求的请求/响应周期的一部分执行,则选项2是合理的。这应该是一个Web服务而不是网页调用(但是在OpenRasta中这更容易做到,它不区分网站和Web服务)。
如果您的预定行动是密集/长期运行,那么它应该在网站外完成,您当前的架构可能还可以。组件的复制实际上不是问题(磁盘空间很便宜)。