ABP官方文檔翻譯 7.2 Hangfire集成


Hangfire集成

介紹

  Hangfire是一個綜合的后台job管理器。你可以 把它集成到ABP,用來取代默認的后台job管理器。Hangfire可以使用相同的后台jobAPI。因此,你的代碼與Hangfire是獨立的。但是,如果你喜歡的話,可以直接使用Hangfire的API。

  Hangfire集成依賴於使用的框架。

ASP.NET Core集成

  Abp.HangFire.AspNetCore包用來集成到ASP.NET Core基礎應用程序。它依賴於Hangfire.AspNetCore。這個文檔描述了如何在ASP.NET Core工程中安裝Hangfire。它和ABP基礎工程相似。首先,在你的工程中安裝Abp.HangFire.AspNetCore包:

Install-Package Abp.HangFire.AspNetCore

  然后你可以為hangfire安裝任何倉儲。最常見的為SQL Server倉儲(參見Hangfire.SqlServer nuget包),當你安裝完這些nuget包之后,就可以配置你的工程使用Hangfire了。

  首先,我們修改Startup類,在ConfigureServices方法中將Hangfire添加到依賴注入系統並配置倉儲、連接字符串:

services.AddHangfire(config =>
{
    config.UseSqlServerStorage(_appConfiguration.GetConnectionString("Default"));
});

  然后,我們可以在Configure方法中添加UserHangfireServer調用:

app.UseHangfireServer();

  如果你想使用hangfire的面板,可以添加它:

app.UseHangfireDashboard();

  如果你想授權面板,你可以按如下所示使用AbpHangfireAuthorizationFilter:

app.UseHangfireDashboard("/hangfire", new DashboardOptions
{
    Authorization = new[] { new AbpHangfireAuthorizationFilter("MyHangFireDashboardPermissionName") }
});

  上面的配置基本上為ASP.NET Core應用程序集成hangfire的標准。對於ABP基礎工程,也可以配置我們的web模塊使用Hangfire取代ABP默認的后台job管理器:

[DependsOn(typeof (AbpHangfireAspNetCoreModule))]
public class MyProjectWebModule : AbpModule
{
    public override void PreInitialize()
    {
        Configuration.BackgroundJobs.UseHangfire();                
    }

    //...
}

  我們添加AbpHangfireAspNetCoreModule作為依賴並使用Configuration.BackgroundJobs.UseHangfire方法使用Hangfire取代ABP的默認后台job管理器。

  Hangfire需要數據庫的模式創建權限,因為首次運行時它會創建自己的模式和表。參見Hangfire文檔了解更多信息。

ASP.NET MVC 5.x集成

  Abp.HangFire nuget包用於ASP.NET MVC 5.x工程:

Install-Package Abp.HangFire

  然后,你可以為Hangfire安裝任何倉儲。一般使用SQLServer倉儲(參見Hangfire.SqlServer nuget包)。當你安裝完這些nuget包之后,可以按如下配置你的工程來使用Hangfire:

[DependsOn(typeof (AbpHangfireModule))] public class MyProjectWebModule : AbpModule
{
    public override void PreInitialize()
    {
 Configuration.BackgroundJobs.UseHangfire(configuration => { configuration.GlobalConfiguration.UseSqlServerStorage("Default"); });
                
    }

    //...
}

  我們添加AbpHangfireModule作為依賴並使用Configuration.BackgroundJobs.UseHangfire方法來啟用和配置Hangfire("Default"是web.config中的默認連接字符串)。

  Hangfire需要數據庫的模式創建權限,因為首次執行時它會創建自己的模式和表。參見Hangfire文檔了解更多信息。

面板授權

  Hangfire可以顯示一個面板實時的顯示所有后台job的狀態。你可以參照它的文檔來配置它。默認,面板頁對所有的客戶可用,無需授權。你可以集成它到ABP的授權系統,然后使用定義在Abp.HangFire包的AbpHangfireAuthorizationFilter類。示例配置:

app.UseHangfireDashboard("/hangfire", new DashboardOptions
{
    Authorization = new[] { new AbpHangfireAuthorizationFilter() }
});

  這會檢查當前用戶是否登錄。如果你想需要一個額外的權限,可以傳遞給他的構造函數:

app.UseHangfireDashboard("/hangfire", new DashboardOptions
{
    Authorization = new[] { new AbpHangfireAuthorizationFilter("MyHangFireDashboardPermissionName") }
});

  注意:UseHangfireDashboard需要在Startup類的授權中間件之后調用。否則,授權會總是失敗。

 

返回主目錄


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM