2013-11-28 222 views
1

嗨我有一个网站,我需要处理。一旦用户启动了一个过程,它就需要运行,直到实时温度数据满足特定条件。这个过程可能需要几天的时间才能完成。所以一旦进程开始,它需要在服务器上连续运行。 我不知道如何去做。我阅读了关于后台工作流程的内容,但我不确定自己是否在正确的轨道上。我想尽可能使用asp.net和C#来完成这个任务。 任何人都可以让我走上正轨吗?由于在服务器上的后台进程中运行进程

回答

1

ASP.NET不执行这样的长时间运行的背景工作者一个很好的选择,因为工作进程在一段时间循环一次,以减少内存泄漏的影响(取决于配置,可能是经常)。
但是,您可以实现在服务器上运行并且独立于Web应用程序的Windows Service。 Web应用程序和Windows服务可以通过WCF(或数据库)进行通信。
当然,出于安全原因可能会禁止在Web服务器上安装服务,因此您应该先检查该服务。
与Windows服务相比,更轻量级的替代方法是创建控制台应用程序,并通过调度程序定期运行它(如果这也符合您的要求)。

+0

服务器不是问题。我们有自己的服务器。因此,你建议运行一个Windows服务,保持运行并更新数据库中的数据比UI基本上从数据库读取并显示结果完成后?对于大量运行的进程来说,这是一个很好的方法吗? –

+0

Windows服务应该只收集数据。当你需要它连续运行时,windows服务是一个不错的选择。 UI应该从数据库中获取数据。为了通知用户新数据,一旦向用户添加数据到数据库,Windows服务可以发送带有指向UI的链接的电子邮件。 – Markus

1

使Windows服务运行后台进程和做肮脏的工作。 IIS可以重新启动/应用程序池回收,这将阻止您的任务完成。当用户在web(UI部分)中启动进程时,使用进程间通信(tcp或命名管道)向Windows服务通知它。

+0

感谢您的评论 –