ميكروسيرفيسات C#: الهندسة والممارسة من الألف إلى الياء

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة في الميكروسيرفيسات بلغة C#

هندسة الميكروسيرفيسات (MSA) هي نهج لتطوير البرمجيات حيث يتم بناء التطبيق كمجموعة من الخدمات الصغيرة القابلة للنشر بشكل مستقل. كل خدمة تنفذ وظيفة تجارية واحدة، ولها قاعدة بيانات خاصة بها، ويمكن كتابتها بلغات مختلفة. ومع ذلك، في نظام .NET البيئي، توفر منصة C# و ASP.NET Core بعضًا من أفضل الأدوات لبناء ميكروسيرفيسات موثوقة.

في هذه المقالة، سنستعرض الدورة الكاملة لإنشاء الميكروسيرفيسات بلغة C#: من تصميم الهندسة إلى النشر في الحاويات. ستتعلم كيفية تنظيم التواصل بين الخدمات، وضمان تحملها للأعطال وقابليتها للتوسع.



1. تصميم هندسة الميكروسيرفيسات على .NET

الخطوة الأولى هي تقسيم التطبيق المتجانس (monolithic) إلى خدمات بشكل صحيح. الممارسة الجيدة هي اتباع مبدأ التصميم الموجه بالمجال (Domain-Driven Design - DDD) وتحديد السياقات المحدودة (Bounded Contexts).



1.1. تحديد حدود الخدمات

يجب أن تكون كل ميكروسيرفيس مسؤولة عن كيان أو عملية تجارية واحدة. على سبيل المثال، لمتجر إلكتروني، يمكن تحديد:

  • خدمة الكتالوج (Catalog Service) — إدارة المنتجات
  • خدمة الطلبات (Order Service) — معالجة الطلبات
  • خدمة الدفع (Payment Service) — المدفوعات
  • خدمة الإشعارات (Notification Service) — الإشعارات

هام: كل خدمة تمتلك قاعدة بيانات خاصة بها. هذا يمنع الاقتران ويسمح بتوسيع نطاق الخدمات بشكل مستقل.



1.2. هيكل مشروع ASP.NET Core

تتكون الميكروسيرفيس النموذجية بلغة C# من عدة طبقات:

  • طبقة API (API Layer) — المتحكمات (Controllers) والبرمجيات الوسيطة (Middleware)
  • طبقة التطبيق (Application Layer) — CQRS، MediatR، الأوامر والاستعلامات
  • طبقة المجال (Domain Layer) — الكيانات (Entities)، كائنات القيمة (Value Objects)، التجميعات (Aggregates)
  • طبقة البنية التحتية (Infrastructure Layer) — المستودعات (Repositories)، DbContext، الخدمات الخارجية

مثال على هيكل دليل بسيط:

MyMicroservice/├── MyMicroservice.Api/│   └── Controllers/├── MyMicroservice.Application/│   └── Commands/├── MyMicroservice.Domain/│   └── Entities/└── MyMicroservice.Infrastructure/    └── Data/


2. تنفيذ ميكروسيرفيس بلغة C#: مثال عملي

سنقوم بإنشاء خدمة بسيطة لإدارة كتالوج المنتجات باستخدام ASP.NET Core 8 و Entity Framework Core.



2.1. إعداد WebApplication

في ملف Program.cs، نقوم بإعداد API بسيط:

var builder = WebApplication.CreateBuilder(args);

// إضافة الخدماتbuilder.Services.AddDbContext<CatalogDbContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("CatalogDb")));

builder.Services.AddMediatR(cfg => cfg.RegisterServicesFromAssembly(typeof(Program).Assembly));

builder.Services.AddEndpointsApiExplorer();builder.Services.AddSwaggerGen();

var app = builder.Build();

// البرمجيات الوسيطةif (app.Environment.IsDevelopment()){ app.UseSwagger(); app.UseSwaggerUI();}

app.UseHttpsRedirection();

// نقطة نهاية API بسيطةapp.MapGet("/api/products", async (IMediator mediator) =>{ var products = await mediator.Send(new GetProductsQuery()); return Results.Ok(products);});

app.Run();


2.2. نموذج البيانات و CQRS

نقوم بإنشاء كيان المنتج (Product):

public class Product{    public Guid Id { get; set; }    public string Name { get; set; } = string.Empty;    public decimal Price { get; set; }    public string Category { get; set; } = string.Empty;}

نستخدم نمط CQRS مع MediatR لفصل الأوامر والاستعلامات:

public record GetProductsQuery() : IRequest<List<Product>>;

public class GetProductsHandler : IRequestHandler<GetProduc

المدونات

توصيات الكتب