在ASP.NET应用中执行后台任务

为什么要在ASP.NET应用中执行后台任务?

主要是考虑使用后台任务来处理CPU或IO密集的计算。

下面是一些常见的后台任务:

  • 大量的提醒和新闻邮件发送
  • 图片和视频处理(比如批量创建缩略图、格式转换)
  • 从外部文件导入大量数据或导出数据(RSS聚合)
  • 文件操作(创建归档、清理临时文件、日志文件维护)
  • 定时生成自动化报告
  • 数据库维护
  • ……

    ASP.NET不知道任何后台线程比如一个计时器或者其他,它只知道和request相关的操作。事实上,在后台长时间的运行某些任务实在不是web server该做的事情,通常都可以用其他的方式来避免这样做,比如:用console application和Windows任务管理器,或者使用Windows服务等。

   但是有时考虑到 不想单独部署服务器:开发、部署简单,伸缩简单,省钱,确实想在ASP.NET应用中执行后台任务,还是有一些办法的:

   办法1、HostingEnvironment.QueueBackgroundWorkItem

    让你调度小型的后台任务,ASP.NET的运行时会跟踪这些任务,并阻止IIS突然结束工作进程直到其完成。由此让ASP.NET应用程序能够可靠地调度异步任务。

    不过需要把项目配置为使用.NET 4.5.2

    办法2、Hangfire

    HangFire是一个开源的类库,提供简单的方法在ASP.NET中执行后台Long-Running任务。这个类库需要一些额外的存储上的支持,SQLServer,Redis或者MSMQ。HangFire的资料在http://hangfire.io/

 

posted @ 2017-06-26 14:05  理论家  阅读(1217)  评论(0编辑  收藏  举报
点击这里给我发消息