zoukankan      html  css  js  c++  java
  • 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类的授权中间件之后调用。否则,授权会总是失败。

    返回主目录

  • 相关阅读:
    超有爱的并查集
    写给想当程序员的朋友
    POJ 1961 字符串 KMP (i-next[i])
    POJ 2406 KMP算法next数组理解
    POJ 2387 Bellman双重边
    POJ 1917 字符串替换
    POJ 1062 坑爹的聘礼(枚举等级差选择性找边)
    Linux下libxml2的使用
    浙大pat 1003
    判定一棵二叉树是否是二叉搜索树
  • 原文地址:https://www.cnblogs.com/xajh/p/7124028.html
Copyright © 2011-2022 走看看