
Coravel hilft Entwicklern dabei, ihre .NET -Anwendungen schnell und auszuführen, indem sie erweiterte Anwendungsfunktionen wie Aufgaben-/Jobplanung, Warteschlangen, Caching, Mailing (und mehr!) Ergänglich und einfach zu bedienen erstellen. Kommt mit einfacher, ausdrucksstarker und einfacher Syntax.
Sie können die offiziellen Dokumente hier anzeigen.

Normalerweise müssen Sie einen Cron-Job oder eine Aufgabe über Windows Task Scheduler konfigurieren, um eine einzelne oder mehrere wiederkehrende Aufgaben auszuführen.
Mit Coravel können Sie alle Ihre geplanten Aufgaben an einem Ort mit einer einfachen, eleganten, fließenden Syntax in Code einrichten!
Coravel gibt Ihnen eine Null-Konfigurations-Warteschlange, in der es sich um einen Memory handelt, um langatmige Aufgaben auf den Hintergrund zu laden, anstatt Ihre Benutzer auf ihre HTTP-Anfrage zu warten, um fertig zu werden!
Coravel bietet Ihnen eine einfach zu verwendende API zum Zwischenspeichern in Ihren .NET -Kernanwendungen.
Standardmäßig verwendet es einen In-Memory-Cache, verfügt jedoch auch über Datenbanktreiber für robustere Szenarien!
Coravels Event Broadcasting hilft Ihnen beim Erstellen von Wartungsanwendungen, die die Teile lose gekoppelt sind!
E-Mails sind nicht so einfach, wie sie sein sollten. Zum Glück für Sie löst Coravel dies durch Angebot:
appsettings.jsonSie können meine laufenden Open-Source-Arbeiten bei Buymeacoffee unterstützen.
Hier erfahren Sie, wie schnell Sie Coravel verwenden können, um einen grundlegenden Arbeiterserviceprozess zu erstellen, mit dem Aktionen in geplanten Intervallen ausgestellt werden können:
dotnet new worker -n [NameOfYourApp] -o ./[NameOfYourApp]dotnet add package coravelProgram.cs durch folgende: 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 runDas war's - Happy Coding!
Wenn Sie eine .NET -Anwendung mit Entity Framework erstellen, sollten Sie sich in Coravel Pro untersuchen. Es handelt sich um ein Administrator -Panel & Tools, um die Wartung und Verwaltung Ihrer .NET -App zum Kinderspiel zu machen!
Haftfire gibt es schon eine Weile - vor dem modernen .NET (Kern). Es ist ein fantastisches Werkzeug, das jede Menge Funktionen enthält, die Coravel nicht hat. Bemerkenswerterweise: anhaltende Warteschlangen, Wiederholungsmechanismen, Unterstützung für viele Speicherfahrer usw.
Hangfire stützt jedoch (ab März 2023) jedoch nicht nativ, um echte async/await (hier und hier) zu erwarten. Dies bedeutet, dass die Verwendung von Hangfire in einer Webanwendung beispielsweise nicht so effizient ist wie bei der Verwendung von Threads, die E/A -Operationen ausführen.
Coravel wurde mit Blick auf moderne C #- und .NET -Primitiven erstellt - wie async/await und .NETs integrierte Abhängigkeitsinjektionsversorger. Dies bedeutet, dass Coravel einfacher zu konfigurieren sein kann und mit / keine Schweinesthreads, die Ihre Webanwendung benötigt, um auf eingehende HTTP -Anfragen zu reagieren, sehr effizient ist.
Quartz ist eine ältere Java -Bibliothek, die auf .NET portiert ist. Es wird immer noch nicht in das moderne Injektionsinstrument der .NET -Abhängigkeit eingerichtet. Einige denken, dass Coravels APIs viel prägnanter und verständlicher sind.
Vergleichen Sie beispielsweise dieses Beispiel aus ihrer Dokumentation mit der Arbeit mit Coravel (z. B. müssen Sie nicht verstehen, wie man den Scheduler von Coravel "starten" und "stoppen", aber Sie müssen manuell mit dem Quartz -Scheduler arbeiten).
Zumindest noch nicht.
Coravel verarbeitet sich in der Memory. Wenn Ihre Anwendung sinkt, kann die Anwendung erst dann heruntergefahren werden, wenn alle Elemente verarbeitet werden.
Die Philosophie von Coravel war es, gut mit anderen .NET -Primitiven zusammenzuarbeiten - was bedeutet, dass die Verwendung anderer Bibliotheken einfach ist.
Coravel unterstützt nicht intern die Wiederholungsmechanismen, weil ich sehr vorsichtig bin, Coravel nicht mit Dingen aufzublähen, die nicht notwendig sind. Ich möchte Coravel auf das konzentrieren, was es am besten kann (zB "Ich brauche Arbeitsplanung, Warteschlange usw., ohne zusätzliche Infrastruktur und komplizierte Konfiguration zu erfordern").
Beispielsweise können Sie Polly in Ihren Invocables verwenden, um Wiederholungen durchzuführen. Einige Leute konfigurieren eine Basisklasse, die von IInvocable erbt, bei denen die Wiederholungen integriert sind.
Nein. Dies kann jedoch erneut erreicht werden, indem eine katt getestete verteilte Verriegelungsbibliothek wie DistributedLock verwendet wird. Sie können einen Invocable's Invoke() wie folgt erstellen:
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 ( ) ;
}
}
}