public class ExecutionTimeMiddleware : IMiddleware
{
private readonly ILoggingService _loggingService;
public ExecutionTimeMiddleware(ILoggingService loggingService)
{
_loggingService = loggingService;
}
public async Task InvokeAsync(HttpContext context, RequestDelegate next)
{
// ...
}
}
📌 نکته: هنگام ایجاد یک کلاس middleware که اینترفیس IMiddleware را پیادهسازی میکند - شما مسئول انتخاب یک طول عمر DI مناسب برای آن هستید. شما میتوانید middleware را به صورت Singleton, Scoped یا Transient ایجاد کنید، آنچه را که در هر مورد استفاده بهترین است، انتخاب کنید.
خلاصه 📝
شما میتوانید یک middleware سفارشی را به روشهای زیر ایجاد کنید:
🔹 ارائه یک delegate برای متد Use در کلاس WebApplication.
🔹 ایجاد یک کلاس Middleware بر اساس قرارداد.
🔹 ایجاد یک کلاس Middleware با ارثبری از اینترفیس IMiddleware.
انتخاب ترجیحی من، ایجاد یک middleware با ارثبری از اینترفیس IMiddleware است. این رویکرد یک راه امنتر و راحتتر برای ایجاد middlewareها و یک استراتژی تزریق وابستگی سرراست از طریق سازنده ارائه میدهد. و همچنین کنترل کاملی بر روی طول عمر middleware به شما میدهد.
امیدوارم این مقاله برایتان مفید باشد.👋🏻