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 を使用してメールを送信します。Mailables は Coravel.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 のオープンソースプロジェクトに興味があれば、引き続き私をフォローしてください。