
Coravel은 작업/작업 스케줄링, 대기열, 캐싱, 우편물 (및 기타) 과 같은 고급 응용 프로그램 기능을 만들어 개발자가 .NET 애플리케이션을 시작하고 빠르게 실행할 수 있도록 도와줍니다. 간단하고 표현력이 뛰어나고 간단한 구문이 제공됩니다.
여기에서 공식 문서를 볼 수 있습니다.

일반적으로 Windows 작업 스케줄러를 통해 CRON 작업 또는 작업을 구성하여 단일 또는 여러 번의 재발 작업을 실행할 수 있습니다.
Coravel을 사용하면 단순하고 우아하고 유창한 구문을 코드로 사용하여 예정된 모든 작업을 한 곳에 설정할 수 있습니다!
Coravel은 사용자가 HTTP 요청을 마치기를 기다리는 대신 배경에 긴 씨족 작업을 배경으로 오프로드하기 위해 메모리 인 메모리를 실행하는 제로 구성 큐를 제공합니다!
Coravel은 .NET 코어 애플리케이션에서 캐싱에 쉽게 사용하기 쉬운 API를 제공합니다.
기본적으로 인 메모리 캐시를 사용하지만보다 강력한 시나리오를위한 데이터베이스 드라이버도 있습니다!
Coravel의 이벤트 방송은 부품의 부품이 느슨하게 결합 된 유지 관리 가능한 응용 프로그램을 구축하는 데 도움이됩니다!
이메일은 쉽지 않습니다. 운 좋게도 Coravel은 다음을 제공함으로써 이것을 해결합니다.
appsettings.json 통한 빠르고 간단한 구성Buymeacoffee에 대한 진행중인 오픈 소스 작업을 지원할 수 있습니다.
다음은 Coravel을 사용하여 예정된 간격으로 작업을 발행 할 수있는 기본 작업자 서비스 프로세스 구축을 시작할 수있는 방법입니다.
dotnet new worker -n [NameOfYourApp] -o ./[NameOfYourApp]dotnet add package coravelProgram.cs 다음으로 바꾸십시오. 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 run그게 다야 - 행복한 코딩!
엔티티 프레임 워크가있는 .NET 애플리케이션을 구축하는 경우 Coravel Pro를 살펴볼 수 있습니다. .NET 앱을 산들 바람으로 유지하고 관리하는 관리자 패널 및 도구입니다!
Hangfire는 Modern .NET (Core) 이전에 한동안 주변에있었습니다. Coravel이하지 않는 수많은 기능이있는 환상적인 도구입니다. 특히 : 지속적인 대기열, 재시험 메커니즘, 많은 스토리지 드라이버 지원 등
그러나 Hangfire Still (2023 년 3 월 현재)은 기본적으로 True async/await (여기 및 여기)를 지원하지 않습니다. 이는 예를 들어 웹 응용 프로그램 내에서 Hangfire를 사용하는 것이 I/O 작업을 수행하는 스레드를 사용할 때만 큼 효율적이지 않음을 의미합니다.
Coravel은 async/await 및 .NET의 내장 의존성 분사 유틸리티와 같은 최신 C# 및 .NET Primitives를 염두에두고 만들어졌습니다. 이는 Coravel이 구성하기 쉽고 웹 애플리케이션이 들어오는 HTTP 요청에 응답 해야하는 스레드를 사용하여 매우 효율적일 수 있음을 의미합니다.
Quartz는 .NET으로 포팅 된 오래된 Java 라이브러리입니다. 여전히 최신 .NET 종속성 분사 툴링에 잘 연결되지 않습니다. 어떤 사람들은 Coravel의 API가 훨씬 간결하고 이해할 수 있다고 생각합니다.
예를 들어,이 샘플을 문서와의 작업 방식과 비교하십시오 (예 : Coravel의 스케줄러를 "시작하는 방법"및 "정지"방법을 이해할 필요는 없지만 석영 스케줄러와 수동으로 작업해야합니다).
아뇨. 적어도 아직은 아닙니다.
Coravel은 메모리에서 대기하는 항목을 처리합니다. 응용 프로그램이 다운되면 모든 항목이 처리 될 때까지 응용 프로그램이 종료되지 않습니다.
Coravel의 철학은 다른 .NET 프리미티브와 잘 어울리는 것이 었습니다. 이는 다른 라이브러리를 사용하는 것이 쉽다는 것을 의미합니다.
Coravel은 필요하지 않은 것들로 Coravel을 부풀리지 않도록 조심하기 때문에 내부적으로 재 시도 메커니즘을 지원하지 않습니다. Coravel은 그것이 가장 잘하는 일에 집중하고 싶습니다 (예 : "추가 인프라와 복잡한 구성이 필요하지 않고 작업 일정, 대기열 등이 필요합니다").
예를 들어, invocables 내에서 Polly를 사용하여 다시 복원 할 수 있습니다. 어떤 사람들은 재시험이 내장 된 IInvocable 에서 상속되는 기본 클래스를 구성합니다.
그러나 이것은 분산 락과 같은 전투 테스트 분산 잠금 라이브러리를 사용하여 다시 달성 할 수 있습니다. 다음과 같은 Invocable의 Invoke() 만들 수 있습니다.
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 ( ) ;
}
}
}