ABP官方文档(四十五)【集成Hangfire】

7.2 ABP后台服务 - 集成Hangfire

7.2.1 简介

Hangfire是一个综合性的后台作业管理工具。你可以用Hangfire来替换ABP中默认实现的后台作业管理者。你可以对Hangfire使用相同的后台作业API。因此,你的代码将独立于Hangfire。但是,如果你喜欢,你也可以直接的使用 Hangfire 的API。

Hangfire的集成依赖于你所使用的框架。

7.2.2 ASP.NET Core集成

基于ASP.NET Core的应用程序,我们需要引用Abp.HangFire.AspNetCore包。它依赖于 Hangfire.AspNetCore。这个文档说明了安装hangfire到ASP.NET Core项目。它类似基于ABP的项目。首先需要在web项目中安装Abp.HangFire.AspNetCore

Install-Package Abp.HangFire.AspNetCore

对于Hangfire你可以使用何类型的存储方式。最常用的一个方式是使用SQL Server 作为存储(请查询Hangfire.SqlServer)。在你安装完这些nuget包后,你可以配置你的项目来使用Hangfire。

首先,我们更改Startup类的 ConfigureServices 方法来添加Hangfire的依赖注入,并且配置存储方式以及连接字符串。

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

然后我们可以在 Configure 方法中添加对UseHangfireServer的调用。

app.UseHangfireServer();

如果你想使用Hangfire的Dashboard,你也可这样做:

app.UseHangfireDashboard();

如果你想要授权认证dasboard,你可以像下面一样使用AbpHangfireAuthorizationFilter:

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

上面的配置是集成hangfire到ASP.NET Core应用的标准配置。我们也应该配置web模块来替换ABP默认的后台工作管理器。

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

    //...
}

我们添加 AbpHangfireModule 作为依赖,并使用 Configuration.BackgroundJobs.UseHangfire 方法来替换ABP默认的后台工作管理器。

注意:Hangfire需要在数据库中有创建Schema的权限,因为在首次运行后,它会创建自己的架构和表。

详细请查阅HangFire文档

7.2.3 ASP.NET MVC 5.X 集成

对于ASP.NET MVC 5.x 项目,我们可以使用 Abp.HangFire

Install-Package Abp.HangFire

对于Hangfire你可以使用何类型的存储方式。最常用的一个方式是使用SQL Server 作为存储(请查询Hangfire.SqlServer)。在你安装完这些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需要在数据库中有创建Schema的权限,因为在首次运行后,它会创建自己的架构和表。

详细请查阅HangFire文档

7.2.4 Hangfire Dashboard 授权

Hangfire可以显示一个 Dashboard 页面来查看所有后台工作的实时状态。你可以按照文档中描述的来配置。默认该页面对所有用户都是可用的,没有权限限制。使用Abp.HangFire包中的 AbpHangfireAuthorizationFilter 类,你可以集成它到ABP的权限认证系统。示例配置如下:


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

这个可以检查当前用户是否登录到该应用。如果你想要一个额外的许可,你可以传递一个参数到它的构造函数:


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

注意:在你的启动类的(可能是最后一行)授权中间件之后 UseHangfireDashboard 应该被调用,否则身份认证将会失败。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ABP (ASP.NET Boilerplate) 是一个流行的开源框架,提供了一些常用功能的实现,包括实体框架、用户认证、权限管理等。实现 Word 文档导出可以使用开源库 NPOI。 以下是基本的步骤: 1. 安装 NPOI 包。可以使用 NuGet 命令行工具,输入以下命令: ``` Install-Package NPOI ``` 2. 创建一个类,用于表示要导出的数据。 ``` public class MyData { public string Name { get; set; } public int Age { get; set; } //... } ``` 3. 创建一个方法,用于创建 Word 文档。在该方法中,使用 NPOI 创建一个新的文档,并将数据填充到表格中。 ``` using NPOI.XWPF.UserModel; using NPOI.OpenXmlFormats.Wordprocessing; public void ExportToWord(List<MyData> data) { // Create a new document from scratch XWPFDocument doc = new XWPFDocument(); // Create a table with headers XWPFTable table = doc.CreateTable(data.Count + 1, 2); table.GetRow(0).GetCell(0).SetText("Name"); table.GetRow(0).GetCell(1).SetText("Age"); // Fill in the data for (int i = 0; i < data.Count; i++) { table.GetRow(i + 1).GetCell(0).SetText(data[i].Name); table.GetRow(i + 1).GetCell(1).SetText(data[i].Age.ToString()); } // Save the document to a file FileStream file = new FileStream("output.docx", FileMode.Create); doc.Write(file); file.Close(); } ``` 这个方法将数据填充到一个包含两列的表格中,第一列为“Name”,第二列为“Age”。然后,将文档保存到名为“output.docx”的文件中。 4. 调用导出方法,将数据传递给它。 ``` List<MyData> data = GetDataFromDatabase(); ExportToWord(data); ``` 在这个例子中,我们从数据库中获取数据,并将它传递给导出方法。 这是最基本的示例。你可以根据需要自定义文档的外观和内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值