如何通过新的 .NET 8 后台服务功能在 .NET 8 中使用 Hangfire 服务

问题描述 投票:0回答:1

我们一直在 .NET Framework 4.7.2 Windows 服务中运行 Hangfire,并在单独的 ASP.NET MVC 网站中运行 TopShelf 和仪表板 UI。这一直工作得很好,但现在我们想升级到 .NET 8。

考虑到 .NET Core 的新内置

BackgroundService
,推荐的方法是什么?我认为不再需要普通的 Windows 服务?

asp.net-core hangfire .net-8.0
1个回答
0
投票

Hangfire 现在有新的包

Hangfire.AspNetCore
核心,完全支持 Microsoft DI。要将其设置为 .NET8 中 Windows 服务的一部分:

var host = hostbuilder.UseWindowsService()
.ConfigureServices((hostContext, services) => {
  
        // Add Hangfire services.
        services.AddHangfire(configuration => configuration
            .UseSimpleAssemblyNameTypeSerializer()
            .UseRecommendedSerializerSettings()
            .UseSqlServerStorage(Configuration.GetConnectionString("HangfireConnection")));
    
        // Add the processing server as IHostedService
        services.AddHangfireServer();
    
    })

不再需要自定义

JobActivator
,因为 Microsoft DI 内置了 Activator,它创建了一个范围来解决所有作业依赖关系。

对于你的问题,你是否将其保留为 Windows 服务 - 在我看来,对于 Hangfire 服务器来说,大是的,仪表板仍然可以在 API 上。

但是您也可以将其移至 API 的一部分。

我们已经迁移到 .NET8,我们的

Hangfire
服务器仍然是 Windows 服务并且工作得非常顺利。

如果您的 Hangfire 模式远远落后,现在已经是 9 - 如果您想迁移到最新的 Hangfire SQL 模式 - 启用大量迁移。 迁移指南。

© www.soinside.com 2019 - 2024. All rights reserved.