
Coravel aide les développeurs à obtenir leurs applications .NET en cours d'exécution rapidement en créant des fonctionnalités d'application avancées telles que la planification des tâches / travaux, la file d'attente, la mise en cache, le courrier (et plus!) Accessibles et faciles à utiliser. Livré avec une syntaxe simple, expressive et simple.
Vous pouvez voir les documents officiels ici.

Habituellement, vous devez configurer un travail CRON ou une tâche via le planificateur de tâches Windows pour obtenir des tâches unique ou multiples à exécuter.
Avec Coravel, vous pouvez configurer toutes vos tâches planifiées en un seul endroit en utilisant une syntaxe simple, élégante et fluide - en code!
Coravel vous donne une file d'attente de configuration zéro qui s'exécute en mémoire pour décharger des tâches longues sur l'arrière-plan au lieu d'attendre à vos utilisateurs que leur demande HTTP se termine!
Coravel vous fournit une API facile à utiliser pour la mise en cache dans vos applications .NET Core.
Par défaut, il utilise un cache en mémoire, mais dispose également de pilotes de base de données pour des scénarios plus robustes!
La radiodiffusion des événements de Coravel vous aide à créer des applications maintenables dont les parties sont couplées de manière lâche!
Les e-mails ne sont pas aussi faciles qu'ils le devraient. Heureusement pour vous, Coravel résout cela en offrant:
appsettings.jsonVous pouvez soutenir mes travaux open source en cours sur BuyMeacoffee.
Voici à quelle vitesse vous pouvez utiliser Coravel pour commencer à construire un processus de service de travail qui peut émettre des actions à intervalles prévus:
dotnet new worker -n [NameOfYourApp] -o ./[NameOfYourApp]dotnet add package coravelProgram.cs par ce qui suit: using Coravel ;
Console . OutputEncoding = System . Text . Encoding . UTF8 ;
var builder = Host . CreateApplicationBuilder ( args ) ;
builder . Services . AddScheduler ( ) ;
var host = builder . Build ( ) ;
host . Services . UseScheduler ( s =>
{
s . Schedule ( ( ) => Console . WriteLine ( "It's alive! ?" ) ) . EverySecond ( ) ;
} ) ;
host . Run ( ) ;dotnet runC'est tout - codage heureux!
Si vous créez une application .NET avec Entity Framework, vous voudrez peut-être examiner Coravel Pro. Il s'agit d'un panneau d'administration et d'outils pour faire du maintien et de la gestion de votre application .NET une brise!
Hangfire existe depuis un certain temps - avant le .NET moderne (noyau). C'est un outil fantastique qui a des tonnes de fonctionnalités que Coravel ne fait pas. Notamment: les files d'attente persistantes, les mécanismes de réessayer, le support pour de nombreux conducteurs de stockage, etc.
Cependant, Hangfire Still (à partir de mars 2023) ne soutient pas nativement la vraie async/await (ici et ici). Cela signifie que l'utilisation de HangFire dans une application Web, par exemple, ne sera pas aussi efficace qu'elle pourrait l'être lors de l'utilisation de threads qui effectuent des opérations d'E / S.
Coravel a été créé avec des primitives C # et .NET modernes - comme async/await et les utilitaires d'injection de dépendance intégrés de .NET. Cela signifie que Coravel peut être plus facile à configurer et sera très efficace avec / ne gênera pas les threads que votre application Web doit répondre aux demandes HTTP entrantes.
Quartz est une ancienne bibliothèque Java portée sur .NET. Il ne s'accroche toujours pas bien à bien l'outillage d'injection de dépendance .NET moderne. Certains pensent que les API de Coravel sont beaucoup plus succinctes et compréhensibles.
Par exemple, comparez cet échantillon à partir de leur documentation avec la façon dont le travail avec Coravel est (par exemple, vous n'avez pas besoin de comprendre comment "démarrer" et "arrêter" le planificateur de Coravel, mais vous devez travailler manuellement avec le planificateur de quartz).
Non. Au moins, pas encore.
Coravel traite les éléments en file d'attente en mémoire. Lorsque votre application tombe en panne, elle ne permettra pas à l'application de s'arrêter tant que tous les éléments ne sont pas traités.
La philosophie de Coravel a été de bien fonctionner avec d'autres primitives .NET - ce qui signifie que l'utilisation d'autres bibliothèques est facile.
Coravel ne prend pas en charge les mécanismes de réessayer en interne parce que je fais très attention à ne pas gonfler Coravel avec des choses qui ne sont pas nécessaires. Je veux garder Coravel concentré sur ce qu'il fait le mieux (par exemple, "j'ai besoin de planification d'emploi, de file d'attente, etc. sans nécessiter une infrastructure supplémentaire et une configuration compliquée").
Par exemple, vous pouvez utiliser Polly dans vos invocables pour faire des tentatives. Certaines personnes configureront une classe de base qui hérite d' IInvocable qui a des réchauffages intégrés.
Non. Cependant, cela peut à nouveau être réalisé en utilisant une bibliothèque de verrouillage distribuée à la bataille comme Distributedlock. Vous pourriez créer un invocable Invoke() comme ceci:
public class TestInvocable : IInvocable
{
private ApplicationDbContext _context ;
private IDistributedLockProvider _distributedlock ;
public TestInvocable ( ApplicationDbContext context , IDistributedLockProvider distributedlock )
{
this . _context = context ;
this . _distributedlock = distributedlock ;
}
public async Task Invoke ( )
{
await using ( await this . _distributedlock . AcquireAsync ( ) )
{
await this . _context . Test . AddAsync ( new TestModel ( ) { Name = "test name" } ) ;
await this . _context . SaveChangesAsync ( ) ;
}
}
}