最佳ASP.NET后台服务实现(Best ASP.NET Background Service Im

2019-07-18 01:40发布

什么是超过一个后台服务在ASP.NET应用程序的最好的实现?

  1. 计时器回调

     Timer timer = new Timer(new TimerCallback(MyWorkCallback), HttpContext, 5000, 5000); 
  2. 线程或线程池

     Thread thread = new Thread(Work); thread.IsBackground = true; thread.Start(); 
  3. 的BackgroundWorker

     BackgroundWorker worker = new BackgroundWorker(); worker.DoWork += new DoWorkEventHandler(DoMyWork); worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(DoMyWork_Completed); worker.RunWorkerAsync(); 
  4. 缓存像http://www.codeproject.com/KB/aspnet/ASPNETService.aspx (位于杰夫·阿特伍德张贴在这里 )

我需要在特定时间运行多个后台“服务”。 一个服务可以运行每5分钟,其中另一个可能是每天一次。 它永远不会同时运行超过10个服务。

Answer 1:

好了,而不是一个“简单的线程”的,你会去一个线程池。

如果是我,我会在Windows服务运行它,并通过MSMQ传达给它。



Answer 2:

您应该执行的任务的一些州。 应用回收后台服务后,应修复损坏的任务。 如果任务之下进行的交易则会有与行为没有任何问题。



Answer 3:

原来海报的建议,没有扩展到多台服务器。

我希望同样的事情:定期调度后台任务的强大和简单易用的方式,并不会影响当前用户请求执行即席重处理(重建缓存等)。

我想在网络运行工作的应用程式背景下,A)从web.config中得到配置(配置避免重复)和b)与Web应用程序(易于部署)来部署。 我需要它的传播到多个服务器的网站工作。

我只发现提供有点我想要的一个方法:

(1)创建为每个任务和设置已安排调用网站上的这一个的.aspx单独的服务器上任务wget的一个.aspx页面。 我已经实现了这种做法,它的工作原理,但我不喜欢它100%,因为该计划的任务依赖的,它并没有给我在后台执行任务重特设的能力



文章来源: Best ASP.NET Background Service Implementation