• .NET常用组件


    • 提供界面和内置库,可以进行定时任务的管理,比如根据crontab表达式定时触发一些任务
    • 类似途牛的调度中心系统,可以作为一个第三方的触发器,定时/实时触发一些接口调用等
    • 好处是,避免了依赖于各个服务器自身的后台服务去定时执行任务(比如Windows服务/Linux的后台进程),只要每个服务器提供任务接口,这个第三方的调度系统统一去定时触发他们。调度系统本身可以在数据库中维护用户在界面上配置的各种任务,专门负责这部分通用功能。
    • Incredibly easy way to perform fire-and-forget, delayed and recurring jobs inside ASP.NET applications. CPU and I/O intensive, long-running and short-running jobs are supported. No Windows Service / Task Scheduler required. Backed by Redis, SQL Server, SQL Azure and MSMQ.
    • Hangfire是一个开源且商业免费使用的工具函数库。可以让你非常容易地在ASP.NET应用(也可以不在ASP.NET应用)中执行多种类型的后台任务,而无需自行定制开发和管理基于Windows Service后台任务执行器。且任务信息可以被持久保存。内置提供集成化的控制台。
    • 功能与特性
      • 支持基于队列的任务处理:任务执行不是同步的,而是放到一个持久化队列中,以便马上把请求控制权返回给调用者。使用方法:BackgroundJob.Enqueue(() => Console.WriteLine("Simple!"));
      • 延迟任务执行:不是马上调用方法,而是设定一个未来时间点再来执行。使用方法:BackgroundJob.Schedule(() => Console.WriteLine("Reliable!"), TimeSpan.FromDays(7));
      • 循环任务执行:只需要简单的一行代码就可以添加重复执行的任务,其内置了常见的时间循环模式,也可以基于CRON表达式来设定复杂的模式。使用方法:RecurringJob.AddOrUpdate(() => Console.WriteLine("Transparent!"), Cron.Daily);
      • 持久化保存任务、队列、统计信息:默认使用SQL Server,也可以配合消息队列来降低队列处理延迟,或配置使用Redis来获得更好的性能表现
      • 内置自动重试机制:可以设定重试次数,还可以手动在控制台重启任务
      • 除了调用静态方法外还支持实例方法
      • 能够捕获多语言状态:即可以把调用者的Thread.CurrentCulture和Thread.CurrentUICulture信息同任务持久保存在一起,以便任务执行的时候多语言信息是一致的
      • 支持任务取消:使用CancellationToken这样的机制来处理任务取消逻辑
      • 支持IoC容器:目前支持Ninject和Autofac比较常用的开源IoC容器
      • 支持Web集群:可以在一台或多台机器上运行多个Hangfire实例以便实现冗余备份
      • 支持多队列:同一个Hangfire实例可以支持多个队列,以便更好的控制任务的执行方式
      • 并发级别的控制:默认是处理器数量的5倍工作行程,当然也可以自己设定
      • 具备很好的扩展性:有很多扩展点来控制持久存储方式、IoC容器支持等
    • 使用
      • 配置dashboard界面
        • 可以在Startup.cs的Configure(IApplicationBuilder app)中使用app.UseHangfireDashboard();或app.UserHangfireDashboard(“”, new DashboardOptions{Authorization = new []{new HangfireDashboardAuthorizationFilter()}});加一些选项。
      • 配置数据存储
        • 不配置的话,就不会存到数据库中,只使用后面代码中定义的recurring job
        • 可以在Startup.cs的Configure(IApplicationBuilder app)中使用GlobalConfiguration.Configuration.UseStorage(new MySqlStorage(connectionString));
          • web.config中要加好connectionString
          • sql server是GlobalConfiguration.Configuration.UseSqlServerStorage(connectionString);
      • 配置服务器设置
        • 可以在Startup.cs的Configure(IApplicationBuilder app)中使用app.UseHangfireServer(new BackgroundJobServerOptions{WorkerCount=10});
      • 定义recurring job。
        • 可以在Startup.cs的Configure(IApplicationBuilder app)中使用RecurringJob.AddOrUpdate(“Job_Name”, job=>job.method(), crontabStr);来指定crontab表达式满足时就出发T类的method()方法
        • 当然T可以是一个interface,那么就要提前定义好注入什么类,比如在Startup.cs的ConfigureServices(IServiceCollection services)中注入services.AddTransient<InterfaceName, ClassName>();
      • 界面
        • 只需要自己建一个website,有一个首页(貌似都是Hangfire提供的),上面自己看着加一些菜单能跳到固定的链接地址就行了,这些地址会跳转到Hangfire提供的界面上
        • 固定的链接地址
          • jobs/enqueued
          • retries
          • recurring
          • servers
        • 操作
          • 可以手动触发job
          • 可以删除job(可以add吗?会add到数据库中?)
  • 相关阅读:
    学习使用linux下tags文件
    uboot常用命令详解
    U-boot中TFTP 解释
    eth0: ERROR while getting interface flags: No such device 没有eth0 有其他的eth
    取消挂载 umount 时出现的 “Device is busy”
    Linux的log日志功能
    oracle的安装
    SOA架构设计分析
    立方体模型
    质量属性的六个常见属性场景(淘宝网)
  • 原文地址:https://www.cnblogs.com/wyp1988/p/14689488.html
Copyright © 2020-2023  润新知