在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/

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值