Hangfire允许您以非常简单但可靠的方式在请求处理管道外调用方法。这些方法调用是在后台独立线程中执行的,我们称之为后台任务。
HangFire库实现原理由三个主要组件组成:客户端,存储和服务器。以下是一个小图,描述了Hangfire中的主要进程:
Hangfire不受特定.NET应用程序类型的限制。您可以在ASP.NET Web应用程序,non-ASP.NET web applications,控制台应用程序或Windows服务中使用它。以下是适用平台:
您可以使用Hangfire创建任何类型的后台任务:fire-and-forget(释放方法调用),延迟(在一段时间后执行)和循环(按时间循环执行等)。
Hangfire不需要你创建特殊的类。后台任务可以基于常规静态或实例方法调用。如下是实例方法调用:
var client = new BackgroundJobClient(); client.Enqueue(() => Console.WriteLine("Easy!")); client.Delay(() => Console.WriteLine("Reliable!"), TimeSpan.FromDays(1));
还有更简单的方法来创建后台任务 - BackgroundJob类
允许您使用静态方法完成方法的创建。如下是静态方法调用:
BackgroundJob.Enqueue(() => Console.WriteLine("Hello!"));
在Hangfire序列化给定信息注并将其保存在持久化库中后,会控制权返回给一调用者。
给定信息:就是传递给HangFire的参数,方法体,执行间隔等
HangeFire在一个持久化库保存后台任务和其他涉及后台任务运行的信息。持久化库有助于后台作业在应用程序重新启动后恢复任务列表。这是使用CLR的线程池和Hangfire执行后台任务的主要区别。HangFire支持不同的存储后台:
SQL Server存储可以通过MSMQ或RabbitMQ授权来降低处理延迟。
GlobalConfiguration.Configuration.UseSqlServerStorage("db_connection");
后台任务由Hangfire Server 处理。它被实现为一组专用(非线程池的)后台线程,它从存储器中获取作业任务并处理它们。服务器还负责保持存储干净,并自动删除旧数据。
你需要做的是创建一个BackgroundJobServer
类的实例并开始处理一些事情:
using (new BackgroundJobServer()) { Console.WriteLine("Hangfire Server started. Press ENTER to exit..."); Console.ReadLine(); }
Hangfire为每个存储后台使用可靠的提取算法,因此您可以在Web应用程序中启动后台处理程序,而不会在应用程序重新启动或进程终止等情况下丢失后台任务。
原先我们处理后台任务,一般是有自己独立的Windows Service,负责Windows Service的运行,维护后台任务的运行,审计记录,错误处理,还有后台任务有关的参数的保存,现在有了HangFire可以把这些任务都给HangFire,我们只需要处理业务,可以简化我们的工作量。
下载说明
☉本站所有源码和资源均由站长亲自测试-绝对保证都可以架设,运营!
☉如源码和资源有损坏或所有链接均不能下载,请告知管理员,
☉本站软件和源码大部分为站长独资,资源购买和收集,放心下载!
☉唯一站长QQ:1004003180 [人格担保-本站注重诚信!]
☉购买建议E-mail:1004003180@qq.com 源码收购 E-mail:1004003180@qq.com
☉本站文件解压密码 【文章内都自带解压密码,每个密码不同!】