Middleware در ASP.NET Core چیست؟
Middleware یکی از مفاهیم اساسی در معماری ASP.NET Core است که به شما اجازه میدهد درخواستها (Request) و پاسخها (Response) را قبل از رسیدن به مقصد پردازش کنید. Middleware در حقیقت اجزایی است که در زنجیره پردازش درخواست و پاسخ قرار میگیرد و وظایف خاصی مانند احراز هویت، لاگگیری، کش کردن، و حتی مدیریت خطاها را انجام میدهد.
انعطافپذیری بالا: به شما امکان میدهد مراحل پردازش درخواستها را به سادگی کنترل کنید.
ماژولار بودن: هر Middleware وظیفه مشخصی دارد و میتوان آن را بهصورت جداگانه توسعه یا مدیریت کرد.
بهبود عملکرد: با استفاده از Middleware، میتوان عملیات غیرضروری را قبل از رسیدن درخواست به کنترلر حذف کرد.
Middlewareها در ASP.NET Core بهصورت زنجیرهای (Pipeline) عمل میکنند. هر Middleware میتواند:
درخواست را پردازش کند.
آن را به Middleware بعدی ارسال کند.
پاسخ را تغییر داده و به کلاینت بازگرداند.
فرض کنید میخواهید یک Middleware ساده ایجاد کنید که زمان اجرای درخواستها را لاگ کند.
public class RequestTimingMiddleware
{
private readonly RequestDelegate _next;
public RequestTimingMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task InvokeAsync(HttpContext context)
{
var startTime = DateTime.Now;
await _next(context);
var duration = DateTime.Now - startTime;
Console.WriteLine($"Request Duration: {duration.TotalMilliseconds} ms");
}
}
افزودن به Pipeline:
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
var app = builder.Build();
app.UseMiddleware();
app.UseRouting();
app.MapControllers();
app.Run();
ASP.NET Core مجموعهای از Middlewareهای آماده را ارائه میدهد که میتوانید بهراحتی از آنها استفاده کنید:
UseStaticFiles: ارائه فایلهای استاتیک مانند CSS و JavaScript.
UseAuthentication: مدیریت احراز هویت کاربران.
UseAuthorization: بررسی دسترسی کاربران به منابع مختلف.
UseCors: فعالسازی سیاستهای CORS.
UseEndpoints: مسیریابی درخواستها به کنترلرها.
برای ساخت Middleware اختصاصی:
یک کلاس ایجاد کنید که یک متد Invoke یا InvokeAsync داشته باشد.
از RequestDelegate برای هدایت درخواستها به Middleware بعدی استفاده کنید.
کلاس را در Program.cs با استفاده از UseMiddleware اضافه کنید.
ترتیب اجرای Middlewareها مهم است: Middlewareها به ترتیبی که در متد Configure تعریف شدهاند، اجرا میشوند.
از Middlewareهای آماده استفاده کنید: برای وظایف رایج مانند لاگگیری و احراز هویت از Middlewareهای پیشفرض استفاده کنید.
از منطق سنگین اجتناب کنید: برای بهبود عملکرد، منطقهای پیچیده را در Middleware پیادهسازی نکنید.
Middleware یکی از اجزای کلیدی در ASP.NET Core است که امکان مدیریت و پردازش درخواستها را بهصورت انعطافپذیر فراهم میکند. با استفاده از Middleware، میتوانید برنامههایی ماژولار، قابل توسعه، و بهینه بسازید.
اگر میخواهید بیشتر در مورد ASP.NET Core و نحوه استفاده از قابلیتهای آن بدانید، به آموزشهای پیشرفته ASP.NET Core در دیاکد مراجعه کنید.
نوشته شده توسط :
علیرضا مقدم