MVP 2015社区大讲堂之:在ASP.NET应用中执行后台任务

昨天下午,在微软的MVP 2015社区大讲堂上给大家分享了一个题目:在ASP.NET应用中执行后台任务。这是一点都不高大上,并且还有点土气的技术分享。不过我相信很多人都遇到过这样的问题。

虽然是一个很简单的技术,不过来课堂上听讲的同学还是很多,在此再次感谢大家的捧场。

在这个分享中我主要介绍了三种解决方案:

  1. QueueBackgroundWorkItem

  2. Hangfire
  3. Azure WebJobs

也同步演示了这三种方案的基本用法,但是由于是现场演示,所以代码的讲解都是一笔带过。不过还算这三个技术的使用都不复杂,所以大家可以看一下官方文档的说明,应该很快就可以上手的。

在演示WebJob是提醒机制的时候,由于是存储的代码讲解,可能有些同学没有太理解,所以我特意在这里补充一个时序图:

下面是PPT中给出的一些参考链接:

邮件发送代码示例:https://github.com/heavenwing/MailSender

QBWI:参考1参考2

http://hangfire.io/

Azure WebJobs推荐资源

另外,关于在真实案例中的“接下来需要完善的地方”,由于时间关系,我只谈到了要开发一个抽象层来在不同的部署条件下适配使用不同的技术,没有见到还需要在任务中实现重启的功能(即“断点续传”)。

最后,这个演讲的PPT分享在:http://pan.baidu.com/s/1eQpKURK

时间: 2024-09-30 04:54:40

MVP 2015社区大讲堂之:在ASP.NET应用中执行后台任务的相关文章

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

为什么要在ASP.NET应用中执行后台任务? 主要是考虑使用后台任务来处理CPU或IO密集的计算. 下面是一些常见的后台任务: 大量的提醒和新闻邮件发送 图片和视频处理(比如批量创建缩略图.格式转换) 从外部文件导入大量数据或导出数据(RSS聚合) 文件操作(创建归档.清理临时文件.日志文件维护) 定时生成自动化报告 数据库维护 -- ASP.NET不知道任何后台线程比如一个计时器或者其他,它只知道和request相关的操作.事实上,在后台长时间的运行某些任务实在不是web server该做的事

Asp.Net Page_Load中执行耗时操作,不影响页面展现。

实际应用中要实现A页面跳转到B页面,B页面Load中执行一些耗时的图片处理操作,然后将处理后的图片显示出来,为了让B页面先正常展现,让后再加载数据,需要使用到VS2010中的AJAX控件:ScriptManager,UpdatePanel,Timer,UpdateProgress. B页面代码: <form id="form1" runat="server">     <div style="margin:0 auto;">

asp优化:改进 ASP 应用程序中的字符串处理性能

摘要:大多数 Active Server Pages (ASP) 应用程序都要通过字符串连接来创建呈现给用户的 HTML 格式的数据.本文对几种创建此 HTML 数据流的方法进行了比较,在特定情况下,某些方法在性能方面要优于其他方法.本文假定您已经具备一定的 ASP 和 Visual Basic 编程方面的知识. 简介 编写 ASP 页面时,开发人员实际上是创建一个格式化的文本流,通过 ASP 提供的 Response 对象写入 Web 客户端.创建此文本流的方法有多种,而您选择的方法将对 We

从KRE到XRE:ASP.NET 5中正在消失的那些K

前几天写了篇博客ASP.NET 5中的那些K,刚把ASP.NET 5中的那些K搞明白了些,昨天发现微软正在让那些K消失. 首先是在 KRuntime 的git日志中发现的: * Runtime renaming (2015-1-17) - Rename klr to dotnet - Support both DOTNET_ and KRE_ prefixed env vars - Simplify dotnet usage in kpm - Change HelloWorld tests to

ASP.NET 5 中的依赖项管理

ASP.NET 5 中的依赖项管理? 提示 本文链接: http://cnblogs.com/qin-nz/p/5034398.html 或 http://blog.qin.nz/aspnet5/aspnet5-dependency-management.html 做过实际开发的都知道,我们需要引用各种各样的类库来帮助我们完成项目的开发. 本文将从服务器端和浏览器端两个方面介绍ASP.NET 5 中的依赖项管理. 服务器端代码使用 Nuget 作为包管理器? 对于已经习惯使用 Visual St

如何在ASP.NET Core中实现一个基础的身份认证

注:本文提到的代码示例下载地址> How to achieve a basic authorization in ASP.NET Core 如何在ASP.NET Core中实现一个基础的身份认证 ASP.NET终于可以跨平台了,但是不是我们常用的ASP.NET, 而是叫一个ASP.NET Core的新平台,他可以跨Windows, Linux, OS X等平台来部署你的web应用程序,你可以理解为,这个框架就是ASP.NET的下一个版本,相对于传统ASP.NET程序,它还是有一些不同的地方的,比

在ASP.NET MVC5中实现具有服务器端过滤、排序和分页的GridView

背景 在前一篇文章<[初学者指南]在ASP.NET MVC 5中创建GridView>中,我们学习了如何在 ASP.NET MVC 中实现 GridView,类似于 ASP.NET web 表单的功能.通过前文,我们已经了解到使用 jQuery 插件的数据表可以很容易地实现具有搜索.排序和分页等重要功能的表格. 前文中需要注意的是,所有通过插件实现的特性都是客户端的,这意味着所有的数据都首先在页面载入,然后由插件来处理客户端搜索.分页和排序的数据.如果数据表不是特别大,这么做是可以的:但是,如

ASP.NET 5中的ASP.NET Bundles跑到哪里去了?

(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 众所周知,在ASP.NET MVC中很早就存在一个所谓的"bundling and minification"的特性,那么在ASP.NET 5中,这个特性跑哪里去了?待今天推荐的文章来分解. 在使用ASP.NET MVC4.5开发Web应用的时候,为了加速加载客户端的一些资源(比如js和css),需要对这些js和css进行打包和压缩来减少浏览器对服务器的请求次数.具体做法就是在A

在Asp.Net MVC 中配置 Serilog

Serilog 是一种非常简便记录log 的处理方式,使用Serilog可以生成本地的text文件, 也可以通过 Seq 来在Web界面中查看具体的log内容. 接下来就简单的介绍一下在Asp.Net MVC中如何配置是Serilog 生效: 1):下载并且安装Seq,具体的下载URL 为 [http://getseq.net/Download],安装到默认的路径之后,实际上时候启动了一个Win Service,并且监听的端口号默认为 5341. 安装的最后一步截图如下: 然后我们到Servic