.NET Core - Middleware وكيفية استخدامها
6.2 .NET Core - Middleware وكيفية استخدامها
في ASP.NET Core، الـ Middleware هو مكون يعمل في سلسلة المعالجة (Pipeline) ويقوم بالتعامل مع الطلبات والردود (HTTP Request/Response). يمكن استخدام Middleware للتحقق من التوكن، تسجيل الأخطاء، إعادة التوجيه، التحقق من الصلاحيات، أو تعديل الـ Response.
🔹 ما هو Middleware؟
هو كود يتم تنفيذه عند مرور كل طلب HTTP عبر التطبيق. كل Middleware يمكنه:
- تنفيذ منطق معين قبل تمرير الطلب إلى التالي.
- إيقاف السلسلة وعدم تمرير الطلب.
- تنفيذ منطق بعد استلام الرد من الـ Middleware الذي يليه.
🔹 ترتيب الـ Middleware مهم جدًا
في ملف Program.cs
، يتم تنفيذ Middleware بنفس ترتيب كتابتها. مثلًا:
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints => { endpoints.MapControllers(); });
إذا وضعت UseAuthorization()
قبل UseAuthentication()
فلن يتمكن النظام من معرفة المستخدم أصلاً.
🔹 مثال على Middleware مخصص
لننشئ Middleware يقوم بتسجيل وقت بداية الطلب:
public class LoggingMiddleware
{
private readonly RequestDelegate _next;
public LoggingMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task InvokeAsync(HttpContext context)
{
var start = DateTime.Now;
Console.WriteLine($"[Start] {context.Request.Path} at {start}");
await _next(context); // تمرير الطلب للمكون التالي
var end = DateTime.Now;
Console.WriteLine($"[End] {context.Request.Path} at {end}");
}
}
ثم نضيفه إلى الـ pipeline:
app.UseMiddleware<LoggingMiddleware>();
🔹 Middlewares شائعة مضمنة في ASP.NET Core
UseStaticFiles()
— تقديم الملفات الثابتة مثل الصور وCSS.UseRouting()
— تحديد المسارات (Endpoints).UseAuthentication()
— تنفيذ مصادقة المستخدم.UseAuthorization()
— تنفيذ التفويض.UseCors()
— تفعيل سياسات CORS.
🔹 الفرق بين Use وRun وMap
Use()
: يمرر الطلب إلى Middleware التالي.Run()
: ينهي السلسلة، ولا يمرر لأي Middleware بعده.Map()
: يستخدم لتوجيه الطلبات لمسارات فرعية معينة.
app.Map("/hello", app =>
{
app.Run(async context =>
{
await context.Response.WriteAsync("Hello Mahmoud 👋");
});
});
🔹 الخلاصة
Middleware هي طريقة مرنة لبناء سلسلة معالجة الطلبات في ASP.NET Core. باستخدام Middleware يمكنك التحكم الكامل في الطلبات والردود، وتخصيص سلوك التطبيق حسب الحاجة.
تعليقات
إرسال تعليق