您当前的位置:首页 > 电脑百科 > 程序开发 > 程序员

在.NET和.NET Core应用程序中优雅的实现后台任务——Hangfire

时间:2020-07-16 11:30:25  来源:  作者:
 

 

介绍

Hangfire是.NET平台和.net core平台下的一个优秀的开源定时任务框架,它可以方便轻松地将定时任务集成到你的程序中,而且功能强大,。支持CPU和I / O密集型,长期运行和短期运行的后端作业。无需windows服务/任务计划程序。提供redis,SQL Server,SQL Azure和MSMQ持久化的支持。同事还提供了集成了本地化的可视化界面可以优雅的对任务进行手动管理,且支持中文界面。


在.NET和.NET Core应用程序中优雅的实现后台任务——Hangfire

 


Github地址

https://github.com/HangfireIO/Hangfire

如何安装使用?

在.net 和.net core的C#应用程序中,最方便我们使用的第三方库管理莫过于Nuget了,因此你可以简单的搜索HangFire,截止发文日期,版本是1.7.6,如下图:


在.NET和.NET Core应用程序中优雅的实现后台任务——Hangfire

 


或者在程序包管理器中执行以下命令,两种方式随心所欲

Install-Package Hangfire

快速开始

以下是一个最简单的代码片段,用于配置HangFire,代码是以SQLServer为例的


public void Configuration(IAppBuilder app)
{
 GlobalConfiguration.Configuration.UseSqlServerStorage("<connection string or its name>");
 
 app.UseHangfireServer();
 app.UseHangfireDashboard();
}

功能简介

本文不涉及如何在具体的应用程序如何调用,以下是对其功能进行简单的介绍,也是官方Github上提及的一些常用功能。

  • 即发即消失的任务
BackgroundJob.Enqueue(() => Console.WriteLine("Simple!"));

  • 延时任务

仅在给定的时间后执行的计划的后台任务

BackgroundJob.Schedule(() => Console.WriteLine("Reliable!"), TimeSpan.FromDays(7));

  • 重复的定时任务

重复性的任务就是这么简单,只需调用以下方法即可使用CRON表达式执行任何类型的重复任务,由于支持CRON表达式,所以其是支持到秒级的

RecurringJob.AddOrUpdate(() => Console.WriteLine("Transparent!"), Cron.Daily);

  • 多任务相互协作

允许多个任务之间相互调度,完成更加复杂的调度任务

var id = BackgroundJob.Enqueue(() => Console.WriteLine("Hello, "));
BackgroundJob.ContinueWith(id, () => Console.WriteLine("world!"));

Web作业

你可以在任何兼容OWIN的应用程序框架中处理后台任务,包括ASP.NET MVC,ASP.NET Web API,FubuMvc,Nancy等。

app.UseHangfireServer();

在控制台应用程序,Windows服务,Azure Worker Role等中:

using (new BackgroundJobServer())
{
 Console.WriteLine("Hangfire Server started. Press ENTER to exit...");
 Console.ReadLine();
}

使用情况

以下一些截图是笔者配置在进行中的项目中的一个实例,简单的对其管理面板有一个了解

  • 仪表盘对其任务执行情况一目了然

在.NET和.NET Core应用程序中优雅的实现后台任务——Hangfire

 


  • 作业队列一览

任务队列包括计划的任务、执行中的任务、完成的任务、失败的任务、删除的任务、以及等待中的任务,


在.NET和.NET Core应用程序中优雅的实现后台任务——Hangfire

 


还可以查看执行情况以便于是否需要手动重试


在.NET和.NET Core应用程序中优雅的实现后台任务——Hangfire

 


  • 周期任务的列表管理

定时的周期性任务,在这里很清晰,而且可以手动执行,笔者目前就干了一件事,因为项目初期手动维护一部分基础数据是很有可能的,为了防止一些基础数据缓存的及时性,在更新完数据库后可手动执行任务重建缓存,目前一个任务定了一个月时间,这样就不必每次都重新启动应用程序了。


在.NET和.NET Core应用程序中优雅的实现后台任务——Hangfire

 


  • 运行的服务器

由于HangFire是分布式的,可以再仪表盘看到运行的服务器


在.NET和.NET Core应用程序中优雅的实现后台任务——Hangfire

 


总结

HangFire绝对是一个值得使用的分布式任务框架,社区版永久免费,即使是商用情况下也是免费的,大多数情况下社区版本已经够用,除非你有非常复杂的任务需要实现,也可以通过收费版本的,支持的功能更强大!如果你还有更好的推荐可以在评论区留言分享!


在.NET和.NET Core应用程序中优雅的实现后台任务——Hangfire


Tags:应用程序   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
在本文中,我们将学习如何使用 Next.js、 Prisma、 Postgres 和 Fastify 构建一个 Full-stack 应用程序。在本文中,我们将学习如何使用 Next.js、 Prisma、 Postgres 和 Fastif...【详细内容】
2022-07-12  Tags: 应用程序  点击:(9)  评论:(0)  加入收藏
在这个博客中,我们编译了一个基于编程语言和技术堆栈的顶级后端框架列表每天‬分享‬最新‬软件‬开发‬,Devops,敏捷‬,测试‬以及‬项目‬管理‬最新‬,最热门‬的‬文章‬,每天...【详细内容】
2022-06-28  Tags: 应用程序  点击:(11)  评论:(0)  加入收藏
Yew是什么是一个设计先进的Rust框架,目前是使用WebAssembly来创建多线程的web应用。基于组件的框架:可以轻松得创建交互式UI。拥有React或Elm等框架的开发人员在使用Yew时会感...【详细内容】
2022-06-20  Tags: 应用程序  点击:(28)  评论:(0)  加入收藏
中新社多伦多6月17日电加拿大联邦政府6月17日宣布,即日起停止使用官方推出的新冠病毒警报应用程序。加政府表示,通过该程序警告用户可能感染的服务由此被禁用,用户可从手机等设...【详细内容】
2022-06-20  Tags: 应用程序  点击:(23)  评论:(0)  加入收藏
假如你用单片机的串口进行通信的话,这样只需要考虑串口转蓝牙和蓝牙转串口的过程就可以了,主要是二者在通信过程中的编码和解码,当然你具体处理的肯定是比特流,利用现成的蓝牙模...【详细内容】
2022-04-26  Tags: 应用程序  点击:(51)  评论:(0)  加入收藏
稿源:cnBeta去年,有报道称Google正在开发一款"切换到Android"的应用程序,供希望从iPhone跳到运行GoogleAndroid系统的智能手机的iOS用户使用。现在这款应用已经到来。周一,Googl...【详细内容】
2022-04-14  Tags: 应用程序  点击:(53)  评论:(0)  加入收藏
在本教程中,我们将了解 Django 项目和 Django 应用程序之间的区别,以及如何启动一个新的 Django 项目。Django 是构建 Web 应用程序的首选 Python Web 框架。它是一个成熟、功...【详细内容】
2022-03-17  Tags: 应用程序  点击:(142)  评论:(0)  加入收藏
1:下载、开源、使用教程下载地址:https://github.com/cyq1162/AspNetCoreUpdater/tree/main/release开源地址:https://github.com/cyq1162/AspNetCoreUpdater使用教程:解压AspNe...【详细内容】
2022-03-10  Tags: 应用程序  点击:(118)  评论:(0)  加入收藏
一个渐进式的web应用程序与普通的网站没有任何不同&mdash;&mdash;它由HTML、CSS和JavaScript组成,并存在于浏览器中。PWA与常规网站的区别在于,它列出了10个需要实现的关键概...【详细内容】
2021-10-20  Tags: 应用程序  点击:(159)  评论:(0)  加入收藏
你不想担心应用程序不必要地访问您手机的其他部分,您可以通过限制其权限来控制这一点。这意味着您可以更改设置,指定应用程序在查找您的位置、录制视频和音频等方面允许和不允...【详细内容】
2021-10-20  Tags: 应用程序  点击:(124)  评论:(0)  加入收藏
▌简易百科推荐
有人说程序员单调乏味?看过他们的工位黑马君第一个不答应!在程序员的工位上,不仅显示屏多,玩具也特别多,特别是可爱的小黄鸭,(谁能给科普一下程序员为什么那么喜欢小黄鸭吗?△图来源...【详细内容】
2022-07-15  黑马程序员    Tags:程序员   点击:(3)  评论:(0)  加入收藏
因试用期遭劝退,一男子为发泄情绪删光自己在职期间所写系统代码被判刑十个月,如何看待这一审判结果?通过删库来发泄情绪的程序员是最蠢的。聪明的程序员会写一堆只有自己看得...【详细内容】
2022-07-10  多才小胖墩    Tags:代码   点击:(8)  评论:(0)  加入收藏
在当代职场流传着这么一句话,90后:终于进大厂了!00后:我要去国企! 不知何时,对于在职的年轻人而言,国企和大厂成为了最优选择,一个高薪,一个压力小,而两者之间的对比也日益激烈,针对哪...【详细内容】
2022-07-07  学掌门    Tags:程序员   点击:(10)  评论:(0)  加入收藏
让我们面对现实吧,软件工程师的薪水相当高。根据你的薪水,你可以轻松过上非常舒适的生活。然而,一些程序员喜欢探索副收入的想法来补充他们的全职工资。也许你想提前退休?也许您...【详细内容】
2022-07-04  独一无二的小魏同学    Tags:程序员   点击:(6)  评论:(0)  加入收藏
转自:https://www.jdon.com/61280 本文分析了来自 5,508 个软件工程职位列表的数据,以帮助您找出哪些编程语言的薪水最高。 我们分析了RemoteOK(世界上最大的工作委员会)上 5k...【详细内容】
2022-06-30  9i分享客栈    Tags:编程语言   点击:(27)  评论:(0)  加入收藏
【CSDN 编者按】丛纹弨是智能交通和物流领域的连续创业者,二十年的产业技术和创业管理经验,让他成为行业资深专家。本文从智慧物流平台的真正价值为何、如何通过算法解决行业...【详细内容】
2022-06-29    CSDN  Tags:CEO   点击:(22)  评论:(0)  加入收藏
相信很多朋友都想开发一款属于自己的应用,不管是学习还是工作中用,但是对于如何学习并开发完成这过程还存在迷茫点,活到老学到老!我也通过学习别人总结的,再总结一条适合自己的学...【详细内容】
2022-06-23  希里安    Tags:web开发   点击:(25)  评论:(0)  加入收藏
2022年的互联网行业变化挺大,接单可以作为开发者朋友能力变现的一条备选路,今天说说应该怎么判断一个项目是否靠谱以及市面上最常用的一些接单平台。接单需知接触接单的开发...【详细内容】
2022-06-22  程序员客栈    Tags:接单平台   点击:(37)  评论:(0)  加入收藏
一个普普通通的25+女程序员枯燥且忙(bai)碌(mang)的一天✅7:40 闹钟不响绝对不起床[偷笑R],穿衣、刷牙、洗脸(平时上班不化妆)✅8:00 出门(骑电驴+地铁+班车+5分钟步行)✅8:40...【详细内容】
2022-06-22  香菜真好吃ii    Tags:女程序员   点击:(18)  评论:(0)  加入收藏
自由职业者:程序员是当今最不受约束的自由职业者,可以帮助人们了解他们的网站和应用程序。 博客:程序员可以轻松地拥有一个专注于人们面临的技术问题和困难的博客。 主题和模...【详细内容】
2022-06-22  独一无二的小魏同学    Tags:程序员   点击:(33)  评论:(0)  加入收藏
站内最新
站内热门
站内头条