Windows服务与带有线程/计时器的asp.net Application_BeginRequest事件

时间:2008-11-20 15:22:33

标签: asp.net multithreading windows-services timer

使用以下方法运行基于时间的作业有哪些优点/缺点:

  1. Windows服务

  2. Application_BeginRequest启动单独的线程/计时器。

  3. 在asp.net web应用程序的上下文中运行作业的一个缺点是在.net回收过程中,必须再次设置其他内容吗?

2 个答案:

答案 0 :(得分:1)

在我看来,在网络应用中做基于时间的事情并没有什么好处。直接进入Windows服务。你知道这个过程应该一直在运行。

ASP.NET站点可能只是卸载,并且只有在有人开始浏览时才会再次运行。生命周期是错误的 - 它比服务更“笨拙”。

最后,服务并不是很难创建。

答案 1 :(得分:0)

如果您具有对服务器的管理访问权限,我将根据您要实现的目标运行Windows服务或计划的SQL作业。

很高兴能够独立于您的Web应用程序停止/启动和记录这些作业。此外,如果您在工作中遇到问题或错误,可能会对您的网站产生负面影响。

最后,您强制Web应用程序在每个请求中查看代码,以查看计时器是否已经过去,这是一个不必要的开销。

正如我所说,实施取决于工作是什么。如果只是更新大量数据库记录,我将在SQL Server中使用预定作业。如果您需要文件I / O或访问外部服务,则Windows服务可能更合适。

值得注意的是,您需要在Windows服务中构建自己的调度和线程安全性。另一种方法是构建一个控制台应用程序,并使用FireDaemon等应用程序进行调度。