概述: 使用 .NET 構建可靠、自我維持的 API 時,計劃一個或多個後台任務幾乎是不可避免的。一些軟體包已經存在多年,例如 Hangfire 和 Quartz.NET。ASP.NET Core 允許將後台任務實作為托管服務。但是,您可能需要一些更可自訂和輕量級的東西,語法更簡單。我介紹Coravel。Cravel是一個用於.NET的開源輕量級庫,允許您在 ASP.NET Core應用程式中輕松執行後台處理和排程。Cravel透過使任務/作業排程、排隊、緩存、信件(等等)等高級應用程式功能易於存取和易於使用,幫助開發人員快速啟動和執行他們的.NET應用程式。排程語法Coravel 的靈感來自 La
使用 .NET 構建可靠、自我維持的 API 時,計劃一個或多個後台任務幾乎是不可避免的。一些軟體包已經存在多年,例如 Hangfire 和 Quartz.NET。
ASP.NET Core 允許將後台任務實作為托管服務。但是,您可能需要一些更可自訂和輕量級的東西,語法更簡單。我介紹Coravel。
Cravel 是一個用於.NET的開源輕量級庫,允許您在 ASP.NET Core應用程式中輕松執行後台處理和排程。Cravel透過使任務/作業排程、排隊、緩存、信件(等等)等高級應用程式功能易於存取和易於使用,幫助開發人員快速啟動和執行他們的.NET應用程式。
排程語法
Coravel 的靈感來自 Laravel 的任務計劃程式,它建立在 .NET Core 內建依賴項註入之上。它使用 Fluent API 來計劃任務,讓您輕松指定任務的頻率、開始時間和結束時間。它還提供了一種對後台作業進行排隊和處理的簡單方法,使您能夠輕松處理大量數據或執行長時間執行的任務。
為什麽使用Cravel進行排程?
與 Hangfire 和 Quartz.net 等替代品相比,它重量輕。
它是近乎零的配置,只需最少的程式碼行即可完成工作。
它易於使用,語法簡單
它支持 async/await,並且非常高效。
卡拉維爾專業版
Coravel Pro是一個專業的管理面板,具有可無縫整合到.NET Core套用中的視覺化工具。
功能包括:
資料庫持久化排程
一個漂亮的使用者介面來管理您的作業/可呼叫物件
執行狀況指標儀表板
輕松配置數據的表格報告(支持聚合/復雜投影)
如果你喜歡 Coravel,正在使用 EF Core 生成 .NET Core 套用,並且想要更多很棒的工具,請檢視!
要求
Coravel 是專為 .NET Core 套用設計的 .NET Standard 庫。將 Coravel 包含在現有 .NET Core 應用程式(版本 2.1.0+)或其他 .NET Standard 計畫中。
安裝
Coravel 需要 nuget 包才能開始使用。Coravel
dotnet add package coravel
任務/作業排程
通常,您必須透過 Windows 任務計劃程式配置 cron 作業或任務,才能執行單個或多個重復出現的任務。
使用 Coravel,您可以使用簡單、優雅、流暢的語法在一個地方設定所有計劃任務——在程式碼中!
可呼叫物件表示應用程式中的獨立作業。建立可呼叫物件使用共享介面。使用 .NET Core 的依賴項註入服務,可呼叫項將在執行時註入其所有依賴項。Coravel.Invocable.IInvocable
下面是建立可呼叫 (Job) 的範例程式碼:
public classExpiryJobInvocable : IInvocable
{
privatereadonlyICatalogueService _catalogueService;
privatereadonlyILogger<ExpiryJobInvocable> _logger;
publicExpiryJobInvocable(ICatalogueService catalogueService, ILogger<ExpiryJobInvocable> logger)
{
_logger = logger;
_catalogueService = catalogueService;
}
publicasyncTaskInvoke()
{
await _catalogueService.ExpireCatalogueListing();
}
}
使用依賴註入註冊可呼叫檔如下所示:
publicstaticIServiceCollectionRegisterCoravelScheduler(thisIServiceCollection services)
{
services.AddScheduler();
services.AddTransient<ExpiryJobInvocable>();
return services;
}
另外,不要忘記透過指定頻率在應用程式構建器中註冊。它公開了預配置的方法,其中包括 cron 運算式語法。
var app = builder.Build();
app.Services.UseScheduler(scheduler =>
{
scheduler.Schedule<ExpiryJobInvocable>().EveryMinute().PreventOverlapping(nameof(ExpiryJobInvocable));
}).LogScheduledTaskProgress(app.Services.GetRequiredService<ILogger<IScheduler>>());
以下是可用於指定頻率的方法:
//
// Summary:
// Defines methods available to you for specifying the frequency of how often your
// scheduled tasks will run.
publicinterfaceIScheduleInterval
{
IScheduledEventConfigurationEveryMinute();
IScheduledEventConfigurationEveryFiveMinutes();
IScheduledEventConfigurationEveryTenMinutes();
IScheduledEventConfigurationEveryFifteenMinutes();
IScheduledEventConfigurationEveryThirtyMinutes();
IScheduledEventConfigurationHourly();
IScheduledEventConfigurationHourlyAt(int minute);
IScheduledEventConfigurationDaily();
IScheduledEventConfigurationDailyAtHour(int hour);
IScheduledEventConfigurationDailyAt(int hour, int minute);
IScheduledEventConfigurationWeekly();
IScheduledEventConfigurationMonthly();
IScheduledEventConfigurationCron(string cronExpression);
IScheduledEventConfigurationEverySecond();
IScheduledEventConfigurationEveryFiveSeconds();
IScheduledEventConfigurationEveryTenSeconds();
IScheduledEventConfigurationEveryFifteenSeconds();
IScheduledEventConfigurationEveryThirtySeconds();
IScheduledEventConfigurationEverySeconds(int seconds);
}
除了任務排程之外,Cravel還支持其他功能。我總結了其中的一些,並隨意使用它們。
排隊
Corevel為您提供了一個在記憶體中執行的零配置佇列。這對於將冗長的任務解除安裝到後台非常有用,而不是讓使用者等待其 HTTP 請求完成。
有關使用 Coravel 的佇列功能的更多資訊,請檢視文件頁面e。
緩存
Cravel提供了一個易於使用的API,用於在.NET Core應用程式中進行緩存。預設情況下,它使用記憶體中緩存。Corevel還提供了一些資料庫驅動程式,用於更強大的方案。
有關使用 Coravel 的緩存功能的更多資訊,請檢視文件頁面。
活動廣播
Coravel 的事件廣播允許偵聽器訂閱應用程式中發生的事件。這是構建可維護應用程式的好方法,其部件是松散耦合的!
有關使用 Coravel 事件功能的更多資訊,請檢視文件頁面。
信件
電子信件並不像應有的那麽容易。幸運的是,卡拉維爾透過提供以下功能解決了這個問題:
內建電子信件友好剃須刀樣版
簡單靈活的信件 API
透過ASP控制器等呈現您的電子信件以進行視覺化測試。
支持 SMTP、透過電子信件發送到本地日誌檔或 BYOM(「內建信件程式」)驅動程式的驅動程式
透過以下方式進行快速簡單的配置appsettings.json
Cravel使用Mailables發送信件。每個 Mailable 都是一個 c# 類,表示您可以發送的特定型別的電子信件,例如「新使用者註冊」、「已完成的訂單」等。
如果你喜歡我的文章,請給我一個贊!謝謝