我会尽量简短。
从asp.net Web应用程序调用例程启动必须运行的冗长“后台”进程的最佳做法是什么?
例如,我想点击我的网页上的“运行数据转换”按钮(例如)。这个数据转换例程可能需要20-40分钟才能运行,因此在我看来,将所有代码放入asp.net网页是不可行的方式....没有必要通过以下方式运行此后台进程IIS服务器。 sperate服务或app等似乎是最佳选择...
Web应用程序和后台进程都将在我的专用Win2003服务器上运行,因此我有很多选择 - 但最好的选项是什么?
答案 0 :(得分:4)
如果您控制服务器,我建议您创建一个Windows服务 - 完全从ASP.NET外部执行数据转换任务;你不希望ASP.NET在40分钟转换例程中途重启。
答案 1 :(得分:1)
有很多选项,基本上归结为你需要任何可以与之沟通的过程。我能想到的选择是:在另一个应用程序池下运行的Web服务;一个Windows服务;由ASP.NET代码启动的命令行进程。
下一个问题是如何与其他流程进行通信。如果您正在使用数据库,则可以设置两个进程都可以访问的公用表。该网站将把工作请求放入第二个流程将监控的表中。然后可以将第二个表用于结果,网站将监视该结果。另一种选择是使用类似Windows Communication Foundation (WCF)或.NET远程处理的方法在进程之间发送事件。