MVC 3与Quartz.Net

3
我目前在MVC 3中拥有一个UI,允许用户和管理员配置和创建作业、任务和特定的配置值到应用程序中。我想实现Quartz.Net来进行调度、启动和记录作业执行。我正在寻求一些帮助来配置MVC 3应用程序以使用quartz。我应该把Quartz.Net配置值放在哪里?Web.Config?还是单独的Quartz.Config文件?我计划使用AdoJobStor。我是否必须实现一个Singleton类来在我的MVC 3应用程序的各个区域中使用Quartz.Net Scheduler?谢谢帮忙.....
2个回答

6
我建议你从教程开始学习。该教程包含了你需要了解的所有内容。你可以通过配置文件或编程方式来配置quartz.net,详情请参见此处。在S.O.上有大量有用的信息如下:
- 配置ADOJobStore与Quartz.net。 - 有关Quartz.net的更多信息,请访问此处此处。 - 如何配置日志记录。 - 如果你想在asp.net中使用Quartz.net,则必须使用单例调度程序

我已经成功配置了Quartz.Net,但是我有点困惑如何让它能够被多个客户端集中使用。我基本上希望确保作业能够及时执行,而不会影响我的Web应用程序的性能。 - M4V3R1CK
@M4V3R1CK:在我的一个项目中,我创建了一个Web应用程序(asp.net MVC),负责创建作业和计划,然后我选择创建自定义Windows服务来处理这些计划。我没有使用Quartz.net服务,而是决定从头开始构建一个。 - LeftyX
@LeftyX,我正在处理M4V3R1CK提出的类似需求。由于IIS回收问题,quartz.net调度程序停止工作:( 你有什么解决方案吗?另外,你能提供更多的实现细节吗?我们如何使用单独的服务进行计划,并在asp.net中使用Quartz.net进行作业?有任何文章可以参考吗?我正在使用ASP.Net MVC4。 - Billa
1
@Billa,你可以在Windows服务中运行你的Quartz.net调度程序。你的ASP.NET MVC应用程序将基本上创建作业和触发器,这些作业和触发器将由服务处理。你必须使用ADOJobStore。我会尝试更新我的答案并提供一些代码。 - LeftyX
@LeftyX,是的,最后我正在尝试使用Application_End方法,就像我在这个问题中解释的那样http://stackoverflow.com/questions/24326172/detect-site-login-url-in-application-end - Billa
显示剩余2条评论

6
我不会在托管于IIS的应用程序上放置调度程序,因为它最终会被回收。这将导致调度程序停止,直到当网站被请求时IIS进程重新创建。这可能对高活动网站来说听起来还不错,但请记住,IIS可能会在意料之外的时间(如执行任务中)决定回收您的调度程序。您应该将调度程序部分移动到Windows服务中。
编辑:http://hangfire.io/似乎是在ASP.Net中运行计划任务的好方法。
编辑2:实际上,我正在一个项目中使用HangFire。它非常易于使用和强大。

请问您能否为我指出 Hangfire (.Net 4.0) 的文档/帮助/教程/示例? - bjan
我认为这些是针对支持.Net 4.5的1.5版本,不适用于.Net 4.0。主要是我找不到GlobalConfiguration.Configuration - bjan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接