2015-12-17 20 views
-2

我打算创建一个asp.net MVC Web应用程序将执行一个同步作业的asp.net的MVC控制器的操作方法,来实现这一点: -调用使用Windows任务调度程序或其他安排表工具

  1. 我们有一个第三方ERP系统,它会及时生成一个.csv文件,它将在每小时生成一个.csv文件。该.csv文件包含有关本公司的资产,如型号,价格,名称,位置等信息...

  2. 现在,我将开发一个asp.net MVC Web应用程序将读取.csv数据和更新与此数据库数据。

所以我打算做到以下几点: -

  1. 我将创建一个新的数据库,其中将包含的数据。

  2. 我将创建一个新的asp.net mvc-5 web应用程序,它具有SYNC操作方法,该方法将读取.csv数据并更新数据库。

现在我面临的问题是我需要同步作业每小时运行或按照特定的计划运行。现在,从我以前的经验,我可以列出这些方法2调用及时的操作方法: -

  1. 里面的asp.net的MVC的Global.asax中我可以创建运行在每个小时的计划。

  2. 我可以使用第三方工具如Hangfire来安排任务。

现在用任何一种方法都会使这一限制: -

  1. 在Global.asax或第三方工具,如迟发型将应用程序池下运行,如果不执行任何操作在应用程序上,那么计划永远不会运行,因为应用程序池不会处于活动状态。但是在我之前的应用程序中,这并不是一个真正的问题,因为系统在计划任务旁边包含很多视图,所以系统在工作时间内几乎保持100%的活动状态。

但是在我目前的项目中,用户不会访问Web应用程序,因为它只会执行一个同步作业,并且最终用户没有任何其他功能。所以在这种情况下,同步作业永远不会运行,因为应用程序池不会处于活动状态。 因此,谁能意见,如果这些方法听起来有效解决我的问题: -

  1. 创建一个Windows计划任务将每小时被调用的操作方法,网址: -

的schtasks /创建/ tn“我的计划任务”/ tr“powershell -ExecutionPolicy unrestricted -Command \”(New-Object Net.WebClient).DownloadString(\\ http://url .to.be.executed/cron。PHP \\ “)\”/ SC DAILY/ST 7时○○分00秒/ RU系统

  • 要创建的global.asax 2个内安排任务。一个计划任务将每5分钟调用一次应用程序url以保持应用程序池的活跃状态,另一个计划任务每​​小时调用同步操作方法。在这种情况下,应用程序将继续自称为每5分钟,这将迫使应用程序池说活着,同步作业将运行,即使没有用户访问系统中的每个小时...
  • 所以任何人都建议在此请?

    感谢

    +1

    你在寻求什么样的建议?你需要清楚。顺便说一句,你可以配置Hangfire [永远运行](http://docs.hangfire.io/en/latest/deployment-to-production/making-aspnet-app-always-running.html)。 – mason

    +0

    @mason但是,我可以添加一个Windows计划任务,例如每10分钟会调用一次应用程序,并使用hangfire,而不必将其配置为始终运行? –

    +1

    当然,我想你已经知道了。 – mason

    回答

    3

    MVC是所有关于用户交互,并且许多用户与在该相同的应用程序进行交互。如果您只需要按计划运行一项任务,那么您甚至不需要为此提供UI,并且不存在需要处理多个同时发生的远程请求或Web应用程序满足的问题。你可以从字面上创建一个控制台应用程序,并使用Windows任务计划程序。 MVC是完整的矫枉过正,不止于此,不适合这个目的。

    +0

    如果我永远不会在应用程序中添加更多功能,那么您是正确的..但在我们的情况下,我希望将其放在一个asp.net mvc web应用程序中,因为我们可能会在同步作业之外添加额外的功能,所以调用使用Windows任务计划程序的操作方法需要遵循的方法? –

    +1

    使用某种工具是错误的,因为您*可能会*在未来使用功能。如果您稍后需要添加Web类型的东西,则可以创建一个MVC项目*然后*并将此功能迁移到该项目。但是,有一种观点认为这个功能不适用于Web项目。使用MVC的网络东西,并将其作为控制台应用程序。没有什么说你必须有一件事。如果存在交叉,这两件事可以通过类库共享代码。 –

    +0

    所以你的意思是编写一个控制台应用程序并从Windows调度程序调用这个控制台应用程序更好?你是这个意思吗 ?第二个问题,现在我从来没有写过控制台应用程序,所以不知道它将在哪里部署?或者它将作为一个.exe文件运行? –

    相关问题