使用Windows任务计划或使用quartz来调用c#控制台应用程序的程序之间的差异

时间:2016-02-22 17:56:32

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

我开发了一个c#控制台应用程序,它实现了一个长时间运行的过程(大约需要30-40分钟才能完成)。 现在我想在我的asp.net mvc Web应用程序中创建一个简单的GUI,它允许用户设置运行此控制台应用程序的时间表。 因此,如果我们考虑这两个一般要求,不确定我应该考虑采用哪种方法: -

  1. 调用c#console应用程序。
  2. 能否在我的ap.net mvc网络应用程序中创建视图,允许用户管理计划设置?
  3. 那么这两种方法的优点和缺点是什么?

    1. 使用石英等第三方工具来安排控制台应用程序的执行?
    2. 或者使用Windows任务调度程序(我们使用的是Windows服务2012 R2)?
    3. 由于

2 个答案:

答案 0 :(得分:1)

第一种方法的优点是您不依赖于Windows特定功能,并希望有一天能够在Core CLR下移植您的代码并在其他平台(例如Linux)上运行它。显然,如果你采用第一种方法,你不应该将Quarz放在ASP.NET MVC应用程序中,而应该使用单独的Windows服务。原因是因为长时间运行的线程肯定是Web应用程序中不需要的,因为您无法控制何时可以回收AppPool。

另一方面,Windows任务调度程序的第二种方法可能更容易实现。

答案 1 :(得分:1)

这些机制之间的主要区别在于Windows Tasks Scheduler作为Windows的内部组件连续运行,而Quartz是一个允许在应用程序域内运行调度程序的库。这意味着当您使用Quartz时,调度程序依赖于应用程序池的回收。

换句话说,Windows Tasks Scheduler更稳定,但Quartz使用起来更灵活。我建议你使用Quartz,但要特别注意应用程序池设置(空闲超时),以避免意外的调度程序停止。