
Coravel ayuda a los desarrolladores a obtener sus aplicaciones .NET en funcionamiento rápidamente al hacer características avanzadas de aplicaciones como programación de tareas/trabajo, cola, almacenamiento en caché, correo (¡y más!) Accesible y fácil de usar. Viene con sintaxis simple, expresiva y directa.
Puede ver los documentos oficiales aquí.

Por lo general, debe configurar un trabajo cron o una tarea a través del programador de tareas de Windows para obtener una sola o múltiples tareas recurrentes para ejecutarse.
Con Coravel, puede configurar todas sus tareas programadas en un lugar utilizando una sintaxis simple, elegante y fluida, ¡en código!
¡Coravel le brinda una cola de configuración cero que se ejecuta en memoria para descargar tareas de largo aliento en el fondo en lugar de hacer que sus usuarios esperen a que finalice su solicitud HTTP!
Coravel le proporciona una API fácil de usar para almacenar en caché en sus aplicaciones .NET Core.
Por defecto, utiliza un caché en memoria, ¡pero también tiene controladores de bases de datos para escenarios más robustos!
¡La transmisión de eventos de Coravel lo ayuda a construir aplicaciones mantenibles cuyas piezas se acoplan libremente!
Los correos electrónicos no son tan fáciles como deberían ser. Afortunadamente para ti, Coravel resuelve esto ofreciendo:
appsettings.jsonPuede apoyar mi trabajo de código abierto en curso en BuyMeacOffee.
Así es como rápido puede usar Coravel para comenzar a construir un proceso de servicio de trabajadores básicos que pueda emitir acciones a intervalos programados:
dotnet new worker -n [NameOfYourApp] -o ./[NameOfYourApp]dotnet add package coravelProgram.cs con lo siguiente: 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 runEso es todo, ¡feliz codificación!
Si está creando una aplicación .NET con Entity Framework, es posible que desee buscar Coravel Pro. ¡Es un panel de administración y herramientas para que el mantenimiento y la administración de su aplicación .NET sea muy fácil!
Hangfire ha existido por un tiempo, antes de .NET moderno (núcleo). Es una herramienta fantástica que tiene toneladas de características que Coravel no. Notablemente: colas persistentes, mecanismos de reintento, soporte para muchos controladores de almacenamiento, etc.
Sin embargo, Hangfire todavía (a partir de marzo de 2023) no admite de forma nativa el verdadero async/await (aquí y aquí). Esto significa que el uso de Hangfire dentro de una aplicación web, por ejemplo, no será tan eficiente como podría ser cuando se usa subprocesos que realizan operaciones de E/S.
Coravel fue creado con las primitivas modernas de C# y .NET, como async/await y las utilidades de inyección de dependencia incorporadas de .NET. Esto significa que Coravel puede ser más fácil de configurar y será muy eficiente con / no acosar los subprocesos que su aplicación web necesita para responder a las solicitudes HTTP entrantes.
Quartz es una biblioteca Java más antigua portada a .NET. Todavía no se conecta a las modernas herramientas de inyección de dependencia de .NET. Algunos piensan que las API de Coravel son mucho más sucintas y comprensibles.
Por ejemplo, compare esta muestra de su documentación con cómo es trabajar con Coravel (por ejemplo, no necesita comprender cómo "comenzar" y "detener" el programador de Coravel, pero tiene que trabajar manualmente con el programador de cuarzo).
No. Al menos, todavía no.
Coravel procesa elementos en cola en memoria. Cuando su aplicación disminuya, no permitirá que la aplicación se apague hasta que se procesen todos los elementos.
La filosofía de Coravel ha sido funcionar bien con otras primitivas .NET, lo que significa que usar otras bibliotecas es fácil.
Coravel no admite los mecanismos de reintento internamente porque tengo mucho cuidado de no hinchar Coravel con cosas que no son necesarias. Quiero mantener a Coravel enfocado en lo que mejor hace (por ejemplo, "necesito programación de trabajo, cola, etc. sin requerir infraestructura adicional y configuración complicada").
Por ejemplo, puede usar Polly dentro de sus invocables para hacer reintentos. Algunas personas configurarán una clase base que herede de IInvocable que tiene reintentos incorporados.
No. Sin embargo, esto se puede lograr nuevamente utilizando una biblioteca de bloqueo distribuida probada en batalla como Distributedlock. Puede crear un Invoke() como este:
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 ( ) ;
}
}
}