搜公众号
推荐 原创 视频 Java开发 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库
Lambda在线 > 跟着阿笨一起玩NET > .NET开源作业调度框架(Quartz.NET和FluentScheduler)实战项目演练

.NET开源作业调度框架(Quartz.NET和FluentScheduler)实战项目演练

跟着阿笨一起玩NET 2019-01-03
举报

一、课程介绍

明人不说暗话,跟着阿笨一起玩NET 。本次分享课程属于《C#高级编程实战技能开发宝典课程系列》中的一部分,阿笨后续会计划将实际项目中的一些比较实用的关于C#高级编程的技巧分享出来给大家进行学习,不断的收集、整理和完善此系列课程!本次分享课程给大家带来的是《.NET开源作业调度框架实战项目演练》实战技能课程,如果您对本次分享课程感兴趣的话,那么请跟着一起学习吧!

1.1、课程内容以及知识点?

一般的项目中都会需要处理的后台定时作业任务,有时候当我们的定时任务计划比较多的情况时候,你是否还在为重复和繁琐的数据项保存功能开发工作而感到烦恼?我们能否有一种优雅的通用处理框架来解决呢?答案是肯定的!阿笨根据自己的实际工作经验出发,站在第一线开发者的从业角度出发,从而避免大家重复造轮子,阿笨分享的干货内容,希望大家学完本次分享课程后,能够现学现用直接运用到实际项目去。

本次分享课程包含知识点如下:

1)、Quartz.NET牛刀小试(ABenNet.QuartzNet.Practice)。

2)、基于Quartz.Net工厂封装实现一行代码搞定作业调度。

3)、 如何优雅的封装FluentScheduler实现作业调度框架( 基于Topshlf+Quartz.Net封装的实际项目场景运用 ) 。

4)、FluentScheduler牛刀小试(ABenNet.FluentScheduler.Practice)。

5)、 如何优雅的封装FluentScheduler实现作业调度框架(基于Topshlf+FluentScheduler封装的实际项目场景运用)。

1.2、一句话总结今天我们要解决的问题?

如何通过优雅的方式来处理我们实际工作中的后台定时任务。

今天阿笨跟大家分享两款开源的Job作业调度框架,重量级Quartz.NET 轻量级FluentScheduler,哪怕您之前对Quartz.NET 完全不了解或者了解的不够深刻,阿笨分享的干货,保证让你快速上手撸起袖子就是干!  带领大家直接从实战的角度出发,如何快速的优雅的使用这两款组件,一切只讲理论知识不结合实战项目演练的技术分享课程都是耍流氓! 

废话不多说,直接上干货,我们不生产干货,我们只是干货的搬运工。

二、Quartz.NET基础入门篇

2.1、Quartz.NET概念含义名称解释

Quartz.NET是一个强大、开源、轻量的作业调度框架,是 OpenSymphony 的 Quartz API 的.NET移植,用C#改写,可用于winform和asp.net应用中。它灵活而不复杂。你能够用它来为执行一个作业而创建简单的或复杂的作业调度。它有很多特征,如:数据库支持,集群,插件,支持cron-like表达式等等。

通俗说它的功能是:比如说我想每天晚上2点让程序或网站执行某些代码,或者每隔5秒种我想查看是否有新的任务要处理等。

官网:http://www.quartz-scheduler.net/

源码:https://github.com/quartznet/quartznet

示例:http://www.quartz-scheduler.net/documentation/quartz-2.x/quick-start.html

2.2、Quartz.NET牛刀小试

.NET开源作业调度框架(Quartz.NET和FluentScheduler)实战项目演练

Quartz.NET牛刀小试


2.3、如何基于Quartz.NET封装实现优雅的作业调度执行框架(ABenNet.QuartzNet.Practice)

https://www.cnblogs.com/best/p/7658573.html#_label0

https://www.cnblogs.com/uptothesky/p/5633421.html

https://www.cnblogs.com/mushroom/p/4067037.html

2.4、Quartz中,对job和trigger都要定义一个组名字(group),这个组有什么用处?

https://segmentfault.com/q/1010000004089170

 group 是用于分类的,相当于一个命名空间。

2.5、聊一聊CRON表达式

在线CRON表达式生成器:

http://www.cronmaker.com/

 https://www.shnydb.com/    

http://www.bejson.com/othertools/cron/(推荐)

http://cron.qqe2.com/(推荐)

Cron表达式范例

每隔5秒执行一次:*/5 * * * * ?

每隔1分钟执行一次:0 */1 * * * ?

每天23点执行一次:0 0 23 * * ?

每天凌晨1点执行一次:0 0 1 * * ?

每月1号凌晨1点执行一次:0 0 1 1 * ?

每月最后一天23点执行一次:0 0 23 L * ?

每周星期天凌晨1点实行一次:0 0 1 ? * L

在26分、29分、33分执行一次:0 26,29,33 * * * ?

每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?

每隔5分钟执行一次:0 0/5 * * * ?

Quartz.NET Cron表达式用法一览

https://blog.csdn.net/mss359681091/article/details/58592663

https://www.cnblogs.com/CoreXin/p/5629760.html

https://www.cnblogs.com/jgjgjg23/p/5541467.html

https://www.cnblogs.com/javahr/p/8318728.html

https://www.cnblogs.com/lojun/articles/7440144.html

https://www.cnblogs.com/hongwz/p/5831036.html

三、FluentScheduler基础入门篇

3.1、FluentScheduler概念含义名称解释

FluentScheduler 是一个简单易用、基于C#语言、开源的全自动任务调度组件。

3.2、FluentScheduler牛刀小试(ABenNet.FluentScheduler.Practice)

.NET开源作业调度框架(Quartz.NET和FluentScheduler)实战项目演练

FluentScheduler牛刀小试


四、阿笨分享的高级实战干货篇

4.1、基于Quartz.Net任务工厂一行代码搞定作业调度实现动态添加、修改和删除定时任务。

.NET开源作业调度框架(Quartz.NET和FluentScheduler)实战项目演练

基于Quartz.Net工厂封装实现一行代码搞定作业调度。


4.2、如何优雅的封装Quartz.NET实现作业调度框架(基于Topshlf+Quartz.Net封装的实际项目场景运用)

TopShelf框架,可以你让 console application 封装为 windows service,这样你就非常方便的开发和调试 windows service。TopShelf框架的官网:http://topshelf-project.com

.NET开源作业调度框架(Quartz.NET和FluentScheduler)实战项目演练

基于Topshlf+Quartz.Net封装的实际项目场景运用


4.3、如何优雅的封装FluentScheduler实现作业调度框架(基于Topshlf+FluentScheduler封装的实际项目场景运用)

.NET开源作业调度框架(Quartz.NET和FluentScheduler)实战项目演练

基于Topshlf+FluentScheduler封装的实际项目场景运用


五、课后思考与总结

1、如何防止IIS回收应用程序进程。

2、如何防止作业调度任务并发执行。坚决摒弃lock机制实现方式!

3、记住一点:IIS工作线程是用于处理请求的,不适合运行后台任务,当应用程序池回收的时候,会丢掉。

4、如果项目中有很多的后台定时任务,阿笨建议还是采用服务自治原理:不要将作业调度服务程序与项目应用程序耦合的在一起,我们应该采用后台Windows服务方式宿主或者独立运行作业调度进行自我托管。通俗一点就是我们不要讲后台定时任务写在Web项目后台进行运行。

5、推荐大家另外一款高大上的后台任务利器之Hangfire

希望学完本次分享课程后,能够在阿笨的从实战的角度带领下,快速的灵活且优雅的在大家实际项目中使用这两款组件。一切只讲理论知识不结合实战项目演练的技术分享课程都是耍流氓!  



在线观看


不信的话,扫一扫


版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《.NET开源作业调度框架(Quartz.NET和FluentScheduler)实战项目演练》的版权归原作者「跟着阿笨一起玩NET」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

举报