Hangfire 和 Quartz.NET 是两种常见的 C# 任务调度库,它们有不同的特点和使用场景。以下是这两个库的详细对比,包括它们的主要功能、适用场景以及关键区别。
目录
Hangfire
主要功能
适用场景
示例代码
Quartz.NET
主要功能
适用场景
示例代码
关键区别
选择建议
public void ConfigureServices(IServiceCollection services) { services.AddHangfire(x => x.UseSqlServerStorage("YourConnectionString")); services.AddHangfireServer(); } public void Configure(IApplicationBuilder app, IBackgroundJobClient backgroundJobs) { app.UseHangfireDashboard(); backgroundJobs.Enqueue(() => Console.WriteLine("Hello, Hangfire!")); }
public class HelloJob : IJob { public Task Execute(IJobExecutionContext context) { Console.WriteLine("Hello, Quartz.NET!"); return Task.CompletedTask; } } public void ConfigureServices(IServiceCollection services) { services.AddQuartz(q => { q.UseMicrosoftDependencyInjectionJobFactory(); var jobKey = new JobKey("helloJob"); q.AddJob(opts => opts.WithIdentity(jobKey)); q.AddTrigger(opts => opts .ForJob(jobKey) .WithIdentity("helloJob-trigger") .WithCronSchedule("0/5 * * * * ?")); }); services.AddQuartzHostedService(q => q.WaitForJobsToComplete = true); }
目标用途:
持久化:
可视化管理:
调度配置:
集群支持:
选择 Hangfire:
选择 Quartz.NET:
总之,Hangfire 更适合简单的后台任务处理和定时任务,而 Quartz.NET 则适合需要复杂调度和分布式环境的高级任务调度需求。选择哪一个库取决于具体的应用场景和需求。