Hangfire是一个开放源代码平台,可帮助您生成,处理和管理自己的桌面任务,即,您不想放入请求处理管道中的手术:
大量通知/新闻稿;
从XML,CSV,JSON批量导入;
档案制作;
射出网钩;
删除用户;
绘制清晰的图表;
图像/视频处理;
清除临时文件;
定期自动报告;
数据库维护。
各种背景工作
Hangfire支持各种后台作业-短期运行和长期运行,CPU密集型和I / O密集型,一次拍摄并继续。您无需重新发明准备使用的轮子。
Hangfire Guru是一组扩展程序包,可增强性能并简化大型应用程序中桌面作业处理的维护。Hangfire Pro套件是在付费订阅下提供的。购买后,您将获得二进制文件,并访问GitHub上的个人NuGet feed和个人存储库。
Hangfire Pro和Hangfire Pro Redis的主要功能:
Hangfire Crack基于队列的处理
与其同步调用方法,不如将其放在持久队列中,Hangfire工作线程将采用该方法并在其自己的执行上下文中执行:
此方法在存储中创建一个作业,并立即将控制权返回给调用者。Hangfire保证即使在主机进程异常终止后也将调用指定的方法。
延迟的方法调用
您可以将执行时间推迟指定的时间,而不是立即调用方法:
该调用还保存了一个作业,但是没有将其放入队列中,而是将作业添加到了持久计划中。给定时间过去后,您将作业添加到其队列中。同时,您可以重新启动应用程序–无论如何您都将执行它。
SQL Server和Redis支持
Hangfire使用永久性存储来存储作业,队列和统计信息,并在应用程序重新启动后使它们幸免于难。存储子系统足够抽象,可以同时支持经典SQL Server和快速Redis。
SQL Server提供简化的安装以及常规的维护计划。
Redis提供了惊人的速度,尤其是与SQL Server相比,但需要额外的知识。
Hangfire Crack自动重试
如果您的方法遇到瞬时异常,请放心-它将在几秒钟内自动重试。如果所有重试尝试均已用尽,则可以从集成的Web界面手动重新启动它。
您还可以使用AutomaticRetryAttribute类控制重试行为。只需将其应用于您的方法即可告知Hangfire重试尝试的次数:
Hangfire的创建是基于托管环境可以杀死每条线路上的所有线程的知识。因此,它不会在作业完成之前将其删除,并且包含不同的隐式重试逻辑以在中止其处理时执行该作业。
实例方法调用
上面的所有示例都使用静态方法调用,但也支持实例方法:
当工作人员看到给定的方法是实例方法时,它将首先激活其类。默认情况下,使用该方法,因此默认情况下仅支持具有默认构造函数的类。但是您可以插入IoC容器,并通过构造函数传递依赖关系。
文化捕捉
将方法调用编组到另一个执行上下文时,应保留一些环境设置。他们中有些人-Thread.CurrentCulture 以及 Thread.CurrentUICulture 将自动为您拍摄。
它是由默认情况下应用于所有方法的类完成的。
取消令牌
Hangfire可以告知您的方法由于关闭事件而被中止或取消,因此您可以使用与常规CancellationToken 类相似的作业取消令牌正常地停止它们 。
IoC容器
如果要提高作业类的可测试性,或者不想使用大量不同的工厂,则应使用实例方法而不是静态方法。但是您要么需要以某种方式将依赖项传递给这些方法,并且默认的作业激活器不支持参数构造函数。
不用担心 您可以使用喜欢的IoC容器来实例化您的类。有两个软件包,Hangfire。Ninject和Hangfire.Autofac分别用于它们的容器。如果您使用的是其他容器,请自己编写(基于给定的程序包),然后为Hangfire项目做出贡献。
Hangfire Crack记录中
Hangfire使用Common。记录库记录其所有事件。它是一个通用库,您可以使用适配器将其插入到日志记录框架中。请在NuGet Gallery上查看可用适配器的列表。
网络花园和网络农场友好
您可以在同一台或不同的计算机上运行多个Hangfire实例。它使用分布式锁定来防止竞争情况。每个Hangfire实例都是冗余的,您可以无缝添加或删除实例(但可以控制它们侦听的队列)。
多队列处理
Hangfire可以处理多个队列。如果您想确定工作的优先级或在服务器之间划分处理流程(某些流程是存档队列,其他流程–图像队列等),则可以告诉Hangfire您的决定。
要将作业放入另一个队列,请在您的方法上使用QueueAttribute类:
要开始处理多个队列,您需要更新OWIN引导程序的配置操作:
顺序很重要;worker将首先从关键队列中获取作业,然后再从默认队列中获取作业。
并发级别控制
Hangfire使用其自己的固定工作线程池来使用排队的作业。默认工作程序计数设置为Environment.ProcessorCount *5。此数目针对CPU密集型任务和I / O密集型任务进行了优化。如果遇到过多的等待或上下文切换,则可以手动配置工作者数:
随时随地处理作业
默认情况下,作业处理是在ASP.NET应用程序中进行的。但是您可以在控制台应用程序,Windows Service或其他任何地方处理作业。
Hangfire Crack可扩展性
Hangfire建立得尽可能通用。您可以扩展以下部分:
存储实现;
状态子系统(包括创建新状态);
工作创造过程;
工作表现过程;
状态改变过程;
作业激活过程。
扩展了一些核心组件:QueueAttribute,PreserveCultureAttribute,AutomaticRetryAttribute,SqlServerStorage,RedisStorage,NinjectJobActivator,AutofacJobActivator,ScheduledState。