FastEndpoints في C# (.NET): دليل شامل مع أمثلة عملية
FastEndpoints هي مكتبة حديثة وعالية الأداء لبناء واجهات برمجة تطبيقات الويب (Web API) على منصة .NET (ASP.NET Core)، وتطبق نمط REPR (Request-Endpoint-Response). على عكس النهج التقليدي MVC (Model-View-Controller) أو Minimal API، تقدم FastEndpoints بنية أكثر نظافة ونمطية وقابلة للاختبار، حيث يمثل كل نقطة نهاية (Endpoint) فئة منفصلة مسؤولة عن معالجة طلب محدد واحد.
لماذا تحتاج هذه المكتبة؟ في المشاريع الكبيرة التي تحتوي على عشرات أو مئات النقاط النهائية، تتحول وحدات التحكم التقليدية بسرعة إلى "كائنات إلهية" بمنطق متضخم. تحل FastEndpoints هذه المشكلة من خلال إجبار المطور على فصل المسؤوليات بشكل واضح: فئة واحدة = نقطة نهاية واحدة. هذا يبسط الصيانة والاختبار وإعادة استخدام الكود. بالإضافة إلى ذلك، تم بناء المكتبة على System.Text.Json الأصلي وتم تحسينها لتحقيق أقصى أداء، مما يجعلها واحدة من أسرع المكتبات لبناء API في نظام .NET البيئي.
تعتبر FastEndpoints مثالية لبنية الخدمات المصغرة (Microservices)، والمشاريع التي تستخدم التصميم القائم على المجال (Domain-Driven Design - DDD) والهندسة النظيفة (Clean Architecture). توفر المكتبة التحقق المدمج (عبر FluentValidation)، ودعم Swagger/OpenAPI، ومعالجة الأخطاء، والتخزين المؤقت، وإدارة إصدارات النقاط النهائية، وغيرها الكثير، مما يوفر على المطور عناء كتابة الكود النمطي المتكرر.
التثبيت
يتم تثبيت FastEndpoints عبر NuGet. ستحتاج إلى .NET SDK الإصدار 6.0 أو أحدث. قم بتنفيذ أحد الأوامر التالية في الطرفية:
dotnet add package FastEndpoints
للتكامل مع Swagger (اختياري، لكن موصى به):
dotnet add package FastEndpoints.Swagger
لاستخدام FluentValidation (موصى به):
dotnet add package FluentValidation
بداية سريعة — مثال عملي بسيط
قم بإنشاء مشروع ASP.NET Core Web API جديد (فارغ أو مع وحدات تحكم — لا يهم، سنستخدم FastEndpoints على أي حال).
الخطوة 1: إعداد Program.cs
using FastEndpoints;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddFastEndpoints(); // تسجيل خدمات FastEndpoints
var app = builder.Build();
app.UseFastEndpoints(); // تفعيل middleware
app.Run();
الخطوة 2: إنشاء نقطة نهاية
قم بإنشاء مجلد باسم Endpoints وداخله ملف HelloEndpoint.cs:
using FastEndpoints;
namespace MyApi.Endpoints;
public class HelloEndpoint : Endpoint<EmptyRequest, string>
{
public override void Configure()
{
Get("/api/hello"); // HTTP method GET على /api/hello
AllowAnonymous(); // متاح بدون تسجيل دخول
}
public override async Task HandleAsync(EmptyRequest req, CancellationToken ct)
{
await SendAsync("Hello, World!", cancellation: ct);
}
}
الخطوة 3: التشغيل
قم بتشغيل التطبيق (dotnet run) وافتح المتصفح على الرابط http://localhost:5000/api/hello. سترى الرد: Hello, World!
الفئات والطرق الأساسية
فيما يلي الفئات والطرق الرئيسية في مكتبة FastEndpoints مع أمثلة على الاستخدام.
1. الفئة Endpoint<TRequest, TResponse>
التوقيع: public abstract class Endpoint<TRequest, TResponse> : BaseEndpoint where TRequest : notnull, new()
الوظيفة: الفئة الأساسية لإنشاء نقطة نهاية. تستقبل نوع الطلب (TRequest) ونوع الرد (TResponse).
مثال:
public class CreateUserEndpoint : Endpoint<CreateUserRequest, Us