Hangfire:.NET 开发者的后台任务利器
2025-03-28
25 0在现代应用程序开发中,处理后台任务是常见需求,例如发送邮件、生成报告或清理数据等。Hangfire 是一个适用于 .NET 的开源库,旨在简化后台任务的创建、处理和管理。它无需依赖 Windows 服务或额外的进程,支持任务的持久化存储,并提供直观的可视化界面,方便监控和管理任务。
Hangfire 官网:https://www.hangfire.io/
Hangfire 的核心组件
Hangfire 的架构主要由以下三个部分组成:
客户端(Client): 负责创建各种类型的后台作业,并将其信息存储到持久化存储中。
存储(Storage): 用于保存后台作业及其相关信息,确保任务在应用程序或服务器重启后仍能继续执行。
服务器(Server): 从存储中获取并执行后台作业,支持分布式作业处理和自动重试机制。
Hangfire 的任务类型
Hangfire 支持多种类型的后台任务,包括:
立即执行的任务(Fire-and-forget): 任务在创建后会被立即执行一次。
延迟任务(Delayed): 任务在指定的时间延迟后执行。
定时任务(Recurring): 任务按照设定的时间间隔或特定时间点重复执行。
连续任务(Continuations): 在一个任务完成后,紧接着执行的后续任务。
Hangfire 的可视化界面
Hangfire 提供了内置的可视化仪表板,允许开发者在浏览器中查看任务的执行情况、日志和统计信息。通过访问 http://localhost:端口号/hangfire/,可以直观地监控和管理后台任务,确保任务的正常运行。
Hangfire 使用示例
以下是在 ASP.NET Core 项目中集成 Hangfire 的基本步骤,适用于使用 Program.cs 而非 Startup.cs 的新式项目结构:
1. 安装 Hangfire: 在项目中添加 Hangfire 的 NuGet 包。
2. 配置服务和中间件: 在 Program.cs 文件中,添加 Hangfire 服务并配置其使用的存储方式,例如使用 SQL Server:
using Hangfire;
using Hangfire.SqlServer;
var builder = WebApplication.CreateBuilder(args);
// 配置 Hangfire 服务
builder.Services.AddHangfire(config => config
.SetDataCompatibilityLevel(CompatibilityLevel.Version_170)
.UseSimpleAssemblyNameTypeSerializer()
.UseRecommendedSerializerSettings()
.UseSqlServerStorage(builder.Configuration.GetConnectionString("HangfireConnection")));
// 添加 Hangfire 服务器
builder.Services.AddHangfireServer();
var app = builder.Build();
// 配置 Hangfire 仪表板
app.UseHangfireDashboard();
app.Run();
在上述代码中,UseSqlServerStorage 方法用于指定 Hangfire 使用 SQL Server 作为持久化存储。请确保在应用程序的配置文件中定义了名为 HangfireConnection 的连接字符串。
3. 创建并调度任务: 在应用程序中,使用 Hangfire 提供的 API 创建并调度后台任务。例如,创建一个立即执行的任务:
BackgroundJob.Enqueue(() => Console.WriteLine("Hello, Hangfire!"));
4. 创建一个每天执行一次的定时任务:
RecurringJob.AddOrUpdate("daily-job", () => Console.WriteLine("Daily job executed"), Cron.Daily);
通过上述步骤,您可以在 ASP.NET Core 项目中轻松集成 Hangfire,实现对后台任务的管理和调度。Hangfire 的灵活性和易用性,使其成为 .NET 开发者处理后台任务的强大工具。
您可能感兴趣: