coravel是.net core中開源的工具庫,可以讓你使用定時任務,緩存,隊列,事件,廣播等高級應用程式變得輕而易舉!

coravel是.net core中開源的工具庫,可以讓你使用定時任務,緩存,隊列,事件,廣播等高級應用程式變得輕而易舉!

coravel 幫助開發人員在不影響代碼質量的情況下快速啟動和運行他們的 .net core 應用程式。

最后更新 2022/7/7 上午7:34
黑哥聊dotNet
预计阅读 4 分钟
分类
.NET
标签
.NET C# 開源

Coravel

coravel 是.net core 中開源的工具庫,可以讓你使用定時任務,緩存,隊列,事件,廣播等高級應用程式變得輕而易舉!

coravel 幫助開發人員在不影響代碼質量的情況下快速啟動和運行他們的 .net core 應用程式。

它通過為您提供簡單、富有表現力和直接的語法,使高級應用程式功能易於訪問和使用。

GitHub 地址: https://github.com/jamesmh/coravel

安裝

dotnet add package coravel

例子

Task Scheduling

配置

在 .net core 應用程式的 startup.cs 文件中,在 configureservices()方法內,添加以下內容:

services.AddScheduler()

使用

然後在 configure()方法中,可以使用調度器:

var provider = app.ApplicationServices;
provider.UseScheduler(scheduler =>
{
    scheduler.Schedule(
        () => Console.WriteLine("Every minute during the week.")
    )
    .EveryMinute()
    .Weekday();
});

Queuing

配置

在您的 startup 文件中,在 configureservices():

services.AddQueue();

使用

将接口的一个实例Coravel.Queuing.Interfaces.IQueue注入到控制器

IQueue _queue;

public HomeController(IQueue queue) {
    this._queue = queue;
}

同步

public IActionResult QueueTask() {
    this._queue.QueueTask(() => Console.WriteLine("This was queued!"));
    return Ok();
}

異步

 this._queue.QueueAsyncTask(async() => {
    await Task.Delay(1000);
    Console.WriteLine("This was queued!");
 });

Caching

配置

在 startup.configureservices():

services.AddCache();

這將啟用內存 (ram) 緩存。

使用

要使用缓存,将Coravel.Cache.Interfaces.ICache通过依赖注入进行注入。

private ICache _cache;

public CacheController(ICache cache)
{
    this._cache = cache;
}

event broadcasting(事件廣播)

coravel 的事件廣播允許偵聽器訂閱應用程式中發生的事件。

配置

在 configureservices 方法中:

services.AddEvents();

接下來,在 configure 方法中:

var provider = app.ApplicationServices;
IEventRegistration registration = provider.ConfigureEvents();

註冊事件及其監聽器

registration
 .Register<BlogPostCreated>()
 .Subscribe<TweetNewPost>()
   .Subscribe<NotifyEmailSubscribersOfNewPost>();

使用

創建一個實現接口的類 coravel.events.interfaces.ievent。就是這樣!

事件只是將提供給每個偵聽器的數據對象。它應該公開與此特定事件關聯的數據。

例如,一個 blogpostcreated 事件應該接受 blogpost 創建的,然後通過公共屬性公開它。

public class BlogPostCreated : IEvent
{
    public BlogPost Post { get; set; }

    public BlogPostCreated(BlogPost post)
    {
        this.Post = post;
    }
}

创建一个新类,该类实现您将要监听的事件Coravel.Events.Interfaces.IListener的接口。提示:每个侦听器只能与一个事件相关联。

该 IListener 接口需要您实现HandleAsync(TEvent broadcasted)

創建一個名為 tweetnewpost 的偵聽器:

public class TweetNewPost : IListener<BlogPostCreated>
{
    private TweetingService _tweeter;

    public TweetNewPost(TweetingService tweeter){
        this._tweeter = tweeter;
    }

    public async Task HandleAsync(BlogPostCreated broadcasted)
    {
        var post = broadcasted.Post;
        await this._tweeter.TweetNewPost(post);
    }
}

Mailing

配置

安装 NuGet 包Coravel.Mailer,搭建一些基本文件:

  • ~/views/mail/_viewstart.cshtml- 配置郵件視圖以使用 coravel 的電子郵件模板
  • ~/views/mail/_viewimports.cshtml- 允許您使用 coravel 的視圖組件
  • ~/views/mail/example.cshtml- 示例郵件視圖
  • ~/mailables/example.cs- 可郵寄樣本

在 startup.configureservices():

services.AddMailer(this.Configuration);

使用

Coravel 使用Mailables发送邮件。Mailables 继承Coravel.Mailer.Mail.Mailable并接受一个泛型类型,该类型表示您希望与发送邮件相关联的模型。

using Coravel.Mailer.Mail;
using App.Models;

namespace App.Mailables
{
  public class NewUserViewMailable : Mailable<UserModel>
  {
      private UserModel _user;

      public NewUserViewMailable(UserModel user) => this._user = user;

      public override void Build()
      {
          this.To(this._user)
              .From("from@test.com")
              .View("~/Views/Mail/NewUser.cshtml", this._user);
      }
  }
}

mailable 的所有配置都在該 build()方法中完成。然後,您可以調用各種方法,例如 to 和 from 來配置收件人、發件人等。

如果大家對.net 開源項目感興趣可以持續關注我。

Keep Exploring

延伸阅读

更多文章
同分类 / 同标签 2026/2/7

aot使用經驗總結

從項目創建伊始,就應養成良好的習慣,即只要添加了新功能或使用了較新的語法,就及時進行 aot 發布測試。

继续阅读