【问题标题】:What is the best way to implement scheduling in asp.net MVC在asp.net MVC中实现调度的最佳方法是什么
【发布时间】:2011-11-10 07:33:27
【问题描述】:

我有一个需要计划任务的 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

关于哪种方法是最佳方法或任何替代方法的任何想法/建议?

【问题讨论】:

  • 在 onlinecronservices.com 查看在线服务

标签: c# asp.net-mvc quartz.net


【解决方案1】:

我绝对会避免选项 1。您的网站应该是请求和响应,仅此而已。

如果您的服务执行的操作不是“长时间运行”并且可以合理地作为 HTTP 请求的请求/响应周期的一部分执行,那么选项 2 是合理的。然而,这实际上应该是一个 Web 服务而不是网页调用(这在 OpenRasta 中更容易做到,它不区分网站和 Web 服务)。

如果您计划的操作是密集的/长时间运行的,那么它应该在网站之外完成,并且您当前的架构可能没问题。程序集的复制并不是真正的问题(磁盘空间很便宜)。

【讨论】:

  • 感谢您的回复,这不仅仅是程序集的复制,它的缓存和大量不需要的代码
  • 在这种情况下,问题更可能出在程序集的组织上。我可能会考虑重新组织组件,以便可以有效地重复使用公共部件,而不会带来太多的包袱。
  • +1 仅用于第一句话。 MVC 应用没有运行计划任务的业务。
猜你喜欢
  • 2010-09-13
  • 2011-04-27
  • 2010-09-07
  • 1970-01-01
  • 1970-01-01
  • 2011-08-25
  • 2011-07-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多