我正在使用电子商务平台,我的任务是与某些远程会计软件同步。该任务需要同步订单,产品,库存等。在同步大量数据的情况下,该过程可能需要一段时间。所以,我不认为asp.net应用程序是处理这个问题的最佳场所。所以,要求是:
问题:无法使用Windows服务,因为该网站是在共享服务上远程托管的,并且主机不允许提供服务。
想法:我很难找到最适合处理这个符合所有要求的外部asp.net的方法,但我确实可以访问他们的FTP并且可能想到一个托管网络的控制台应用程序 - 服务可能会起作用,我可以将Quartz调度程序放在全局文件中以从站点启动服务。
无论如何,如果你有哪些方法适合你,请提供一些想法和经验。
答案 0 :(得分:2)
无法使用Windows服务,因为该网站是在共享服务上远程托管的,并且主机不允许提供服务。
这可能是个问题。此托管服务是否提供任何其他类型的计划功能?如果没有,那么您可能需要考虑更改您的托管服务。
您更正确的是,ASP.NET 不是您用于安排任务的工具 。 Web应用程序是一个请求/响应系统(并且非常受托管进程的影响,IIS通常用于ASP.NET)。所以你需要一些方法来安排任务定期执行。 Windows服务,Windows任务计划程序或其他一些任务计划工具。
至于能够手动调用进程的要求,这是将逻辑调用与逻辑本身分开的简单问题。请注意以下组件:
一旦您完成了如何安排控制台应用程序的安排,只需安排它并完成所有设置。如果该过程返回一些信息,则控制台应用程序还可以执行任何必要的通知,以通知人们该信息。
然后,Web应用程序也可以在某处手动调用该进程。由于过程"可能需要一段时间"那么你当然不希望界面等待它完成。这可能导致超时并使系统处于未知状态。相反,您希望将UI返回给用户,指示该进程已启动(或已排队),并且在完成时将通知结果。这有两个选择...
BackgroundWorker
来实际调用该过程。该过程完成后,向调用它的用户发送通知。无论哪种方式都有利弊,这取决于你是如何进行的。最终,你会在这里看两件主要的事情: