HangFire简单实践

Hangfire在.net core WebAPI中的简单应用

  • 安装Hangfire

    1. 在visual studio中 工具 >> Nuget包管理器 >> 程序包管理控制器 打开nuget控制台

    2. 输入 Insatll-Package Hangfire 安装HangFire,等待安装完成

      结果如下图:
      在这里插入图片描述

  • 注册及配置Hangfire(使用Sql Server)

    1. appsettings.json 文件中添加数据库连接字符串配置

      (```)

      "ConnectionStrings": {
          "defaultDB": "Server=.;Database=ApiDataBase;uid=sa;pwd=svse;MultipleActiveResultSets=true"
        }
      

      (```)

    2. Startup.cs 文件中的 ConfigureServices 方法中写入代码

      (```)

      	// 为Hangfire使用数据库连接
          services.AddHangfire(configuration => configuration.UseSqlServerStorage(Configuration.GetConnectionString("defaultDB")));
      
          // 注册Hangfire服务
          services.AddHangfireServer();
      

      (```)

      同时在 Configure 方法中写入代码

      (```)

      	// 为Hangfire使用数据库连接
          services.AddHangfire(configuration => configuration.UseSqlServerStorage(Configuration.GetConnectionString("defaultDB")));
      
          // 注册Hangfire服务
          services.AddHangfireServer();
      

      (```)

  • 查看Hangfire管理视图

    1. 运行项目,然后在项目地址后面加上 hangfire 即可查看Hangfire管理视图

      例:项目地址是: https://localhost:44323/weatherforecast ,输入 https://localhost:44323/hangfire即可访问

      在这里插入图片描述

  • 调度代码应用

    1. 支持基于队列的任务处理:任务执行不是同步的,而是放到一个持久化队列中,以便马上把请求控制权返回给调用者。

      var jobId = BackgroundJob.Enqueue(() => function());

    2. 延迟执行任务,不是马上调用方法,而是设定一个未来的时间来执行,延迟作业仅执行一次

      var jobId = BackgroundJob .Schedule(()=> function(),TimeSpan .FromDays(1));//这里设置的是一天后执行

    3. 循环执行,一行代码添加重复执行的任务,其内置了常见的时间循环模式,也可基于CRON表达式来设定复杂的模式。

      RecurringJob.AddOrUpdate(() => function(), Cron.Minutely);//最小单位是分钟,即最低仅可按照一分钟一次执行

    4. 延续性任务执行,可以在第一个任务执行完之后紧接着再次执行另外的任务,指定在某一个任务完成后立即执行你想执行的任务

      BackgroundJob.ContinueWith(jobId, () => function());

  • 部署

    数据库创建

    按照appsettings.json文件中配置的数据库名称建立数据库

    打开sqlserver >> 点击新建查询,然后执行下面代码即可(数据库名需和appsettings.json配置文件中的一致)

    create database 数据库名 go

    .net core webapi部署到iis
    1. 安装.net core runtime,下载地址: https://dotnet.microsoft.com/download
    2. 点击WebApi项目右键->发布,选择IIS为发布目标,点击发布;
    3. 选择文件系统,指定发布路径 ,选择release配置,框架对应项目使用框架,然后保存确定
    4. 打开IIS服务器,添加网站,物理路径选择发布的路径,配置端口号为你想要的端口,确定。
    5. 打开应用程序池,选择对应的同名应用程序池->右键->基本设置->.NET CLR 版本选择无托管代码,确定。然后回到网站列表,重启下网站。
    6. 在浏览器上访问对应端口号,即可。
    .net core webpai部署到windows service上
    1. 先添加nuget包,在nuget程序包管理控制器中执行代码install-packAge Microsoft.Extensions.Hosting.WindowsServices , 需要在项目代码中 Program.cs 文件的 CreateHostBuilder 方法中添加 UseWindowsService()

      在这里插入图片描述

    2. 在项目中重新发布,将整个发布文件拷贝至服务器

    3. 安装.net core runtime,下载地址: https://dotnet.microsoft.com/download (若已安装请忽略)

    4. 在C:\Windows\System32文件夹中找到cmd.exe,以管理员身份运行

    5. 执行命令sc.exe create 服务名称 binPath= 项目地址,(注意:此处binPath=后面需要加上一个空格,否则服务将创建失败)

    6. 执行命令sc.exe start 服务名称 启动服务,然后即可通过http://localhost:5000/访问你的webpai

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hangfire 是一个用于 .NET 平台的开源后台作业管理框架,它允许您在 ASP.NET 应用程序中轻松执行后台作业,如发送电子邮件、生成报告、清理数据库等。 Hangfire 提供了一种简单、直观的方式来定义和执行后台作业。您可以使用 Hangfire 在后台执行方法、定时任务、队列任务等。它还提供了一个基于 WEB 的用户界面,以便您可以轻松地查看、管理和监控您的后台作业。 以下是 Hangfire 的一些主要特点: 1. 随时随地启动、停止或暂停后台任务。 2. 支持定时任务、延迟任务和队列任务。 3. 支持多种存储方式,如 SQL Server、PostgreSQL、Redis 等。 4. 提供了一个 WEB 界面,方便您查看后台任务的执行情况。 5. 支持分布式部署,允许多个应用程序使用同一个任务队列。 下面是一个简单的示例代码,演示了如何使用 Hangfire 在后台执行一个方法: ``` public class MyJob { public void DoJob() { // 执行后台任务 Console.WriteLine("Hello, Hangfire!"); } } // 在 Startup.cs 中配置 Hangfire public class Startup { public void Configuration(IAppBuilder app) { // 配置 Hangfire GlobalConfiguration.Configuration.UseSqlServerStorage("connectionString"); app.UseHangfireDashboard(); app.UseHangfireServer(); // 注册后台作业 var job = new MyJob(); BackgroundJob.Enqueue(() => job.DoJob()); } } ``` 在这个示例中,我们首先定义了一个名为 MyJob 的类,其中包含了一个名为 DoJob 的方法。然后,在 Startup.cs 中配置 Hangfire,指定了使用 SQL Server 存储后台任务,并启用了 Hangfire 的 Dashboard 和 Server。最后,我们使用 BackgroundJob.Enqueue 方法注册了一个后台任务,使其在启动应用程序后立即执行。 使用 Hangfire,您可以轻松地实现后台任务管理,并提高应用程序的可靠性和可扩展性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值