最佳ASP.NET后台服务实现
ASP.NET应用程序中多个后台服务的最佳实现是什么最佳ASP.NET后台服务实现,asp.net,multithreading,background,backgroundworker,timer,Asp.net,Multithreading,Background,Backgroundworker,Timer,ASP.NET应用程序中多个后台服务的最佳实现是什么 计时器回调 Timer timer = new Timer(new TimerCallback(MyWorkCallback), HttpContext, 5000, 5000); 线程或线程池 Thread thread = new Thread(Work); thread.IsBackground = true; thread.Start(); 幕后工作者 BackgroundWorker worker = new Backgro
Timer timer = new Timer(new TimerCallback(MyWorkCallback), HttpContext, 5000, 5000);
Thread thread = new Thread(Work);
thread.IsBackground = true;
thread.Start();
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += new DoWorkEventHandler(DoMyWork);
worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(DoMyWork_Completed);
worker.RunWorkerAsync();
我需要在给定的时间运行多个后台“服务”。一项服务可能每5分钟运行一次,而另一项服务可能每天运行一次。一次运行的服务永远不会超过10个。好吧,与其使用“简单线程”,不如使用线程池
如果是我,我会在Windows服务中运行它,并通过MSMQ与之通信。您应该实现一些任务状态。应用程序回收后,后台服务应修复损坏的任务。如果任务在事务中,则该行为不会有问题。原始海报中的任何建议都不会扩展到多个服务器 我想要同样的东西: 这是一种健壮且易于使用的方法,用于调度常规后台任务,并在不影响当前用户请求的情况下执行特别繁重的处理(重建缓存等) 我想让任务在web应用上下文中运行,a)从web.config获取配置(避免重复配置),b)与web应用一起部署(轻松部署)。 我需要它的网站传播到多个服务器的工作 我只找到了一种能满足我需求的方法:
(1) 为每个任务创建一个.aspx页面,并在一个单独的服务器上设置一个wget计划任务,该服务器在网站上调用此.aspx。我已经实现了这种方法,它很有效,但我不喜欢100%,因为它依赖于计划任务,而且它不能让我在后台临时执行繁重的任务我也会运行Windows服务,但是如果您不确定最终用户是否有这种能力,例如在共享主机环境中,我仍然想确保我仍然可以托管这些“服务”。我还找到了第四个选择-。再次感谢您的回复!关于这一选择;有人提醒我,只有当有人访问该网站时,它才会起作用。如果没有人访问,它可能不会从缓存中删除该项并执行任务。在使用它之前,我会亲自检查一下(我没有)。当然,Windows服务是最稳定的,如果它作为一个选项存在的话。对于在多台服务器上运行的服务,我强烈建议将其分解为一个Windows服务,该服务与类似MSMQ的消息队列进行交互。那是你最好的选择。我想要的是一个共享托管环境,而不是一个自托管或虚拟托管环境。