Coravelは.NET Coreのオープンソースツールライブラリで、定時タスク、キャッシュ、キュー、イベント、ブロードキャストなどの高度なアプリケーションを簡単に利用できるようにします。

Coravelは.NET Coreのオープンソースツールライブラリで、定時タスク、キャッシュ、キュー、イベント、ブロードキャストなどの高度なアプリケーションを簡単に利用できるようにします。

Coravelは、開発者がコード品質を損なうことなく、.NET Coreアプリケーションを迅速に起動および実行できるように支援します。

最終更新 2022/07/07 7:34
黑哥聊dotNet
読了目安 3 分
カテゴリ
.NET
タグ
.NET C# オープンソース

Coravel

Coravel は、.NET Core 向けのオープンソースのツールライブラリで、スケジュールタスク、キャッシュ、キュー、イベント、ブロードキャストなどの高度なアプリケーション機能を簡単に利用できるようにします。

Coravel は、コード品質を損なうことなく、.NET Core アプリケーションを迅速に立ち上げて実行できるよう支援します。

シンプルで表現力豊かで直感的な構文を提供することで、高度なアプリケーション機能にアクセスしやすく、使いやすくします。

GitHub アドレス: https://github.com/jamesmh/coravel

インストール

dotnet add package coravel

タスクスケジューリング

設定

.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();
});

キューイング

設定

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!");
 });

キャッシュ

設定

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<TEvent> インターフェースを実装します。注意: 各リスナーは1つのイベントにのみ関連付けることができます。

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);
    }
}

メーリング

設定

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 を使用してメールを送信します。MailablesCoravel.Mailer.Mail.Mailable<T> を継承し、送信するメールに関連付けるモデルを表すジェネリック型を受け取ります。

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 のオープンソースプロジェクトに興味があれば、引き続き私をフォローしてください。

さらに探索

関連読書

その他の記事
同じカテゴリ / 同じタグ 2026/04/22

各OSバージョンの.NETサポート状況(250707更新)

仮想マシンとテストマシンを使用して、各OSバージョンの.NETサポート状況を確認します。OSインストール後、対応するランタイムをインストールし、Stardustエージェントを実行できることを確認します(合格条件)。

続きを読む
同じカテゴリ / 同じタグ 2026/02/07

AOTの使用経験のまとめ

プロジェクト作成当初から、新機能を追加したり新しい構文を使用したりした場合には、すぐにAOT公開テストを実施するという良い習慣を身につけるべきです。

続きを読む