ميكروسيرفيسات بلغة C#: من أين يبدأ المبتدئ في عام 2025
\n\nفي السابق، كان يبدو أن الميكروسيرفيسات هي حكر على عمالقة مثل Netflix أو Amazon. لكن الأوقات تغيرت. اليوم، بنية الميكروسيرفيسات بلغة C# متاحة لكل مطور يريد بناء أنظمة مرنة وقابلة للتوسع والصيانة. إذا كنت تشعر أن التطبيق المتكامل (Monolith) "يخنق" مشروعك، أو تريد ببساطة اكتساب مهارة مطلوبة، فقد وصلت إلى المكان الصحيح.
\n\nفي هذه المقالة، سنناقش: من أين تبدأ، وما هي التقنيات التي تختارها، وسنكتب ميكروسيرفيسين حقيقيين بلغة C# من الصفر. بدون حشو، فقط تطبيق عملي.
\n\nلماذا C# خيار ممتاز للميكروسيرفيسات
\n\nC# ومنظومة .NET ليست مجرد لغة، بل هي إطار عمل متكامل لبناء الأنظمة الموزعة. إليك لماذا يختار الكثيرون ميكروسيرفيسات بلغة C#:
\n\n- \n
- ASP.NET Core — خفيف، متعدد المنصات وعالي الأداء. يعمل على Windows، Linux، macOS. \n
- دعم مدمج لـ Docker — Visual Studio يمكنه إضافة دعم Docker للمشروع بنقرتين. \n
- gRPC و SignalR — حلول جاهزة للتواصل بين الخدمات والاتصالات في الوقت الفعلي. \n
- Entity Framework Core — ORM مريح يسهل تكييفه مع قاعدة بيانات الميكروسيرفيس. \n
- مجتمع كبير — على Stack Overflow وGitHub آلاف الحلول الجاهزة. \n
بالمناسبة، إذا كنت قد بدأت للتو في تعلم C#، أنصحك بإلقاء نظرة على قسم المقالات الأساسية على PythonLib — هناك الكثير من المحتوى المفيد للبدء.
\n\nمن أين تبدأ: هيكل المشروع
\n\nخطأ المبتدئ هو الاندفاع لكتابة الكود دون التفكير في البنية التحتية. دعنا نفعلها بشكل صحيح. للبدء، سننشئ ميكروسيرفيسين:
\n\n- \n
- UserService — مسؤول عن المستخدمين (التسجيل، الملف الشخصي). \n
- OrderService — مسؤول عن الطلبات. \n
كل خدمة سيكون لها قاعدة بيانات خاصة بها (SQLite للتبسيط) وتتواصل عبر REST API. هذا يكفي للبدء.
\n\nالخطوة 1. إنشاء مشروع UserService
\n\nافتح الطرفية أو Visual Studio ونفذ:
\n\ndotnet new webapi -n UserService\ncd UserService\ndotnet add package Microsoft.EntityFrameworkCore.Sqlite\ndotnet add package Microsoft.EntityFrameworkCore.Design\n\nسيكون هيكل المشروع كالتالي:
\n\nUserService/\n├── Controllers/\n│ └── UsersController.cs\n├── Models/\n│ └── User.cs\n├── Data/\n│ └── AppDbContext.cs\n├── Program.cs\n└── appsettings.json\n\nالخطوة 2. النموذج وسياق البيانات
\n\nننشئ نموذج المستخدم:
\n\n// Models/User.cs\npublic class User\n{\n public int Id { get; set; }\n public string Name { get; set; } = string.Empty;\n public string Email { get; set; } = string.Empty;\n public DateTime CreatedAt { get; set; } = DateTime.UtcNow;\n}\n\nوسياق قاعدة البيانات:
\n\n// Data/AppDbContext.cs\nusing Microsoft.EntityFrameworkCore;\n\npublic class AppDbContext : DbContext\n{\n public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { }\n public DbSet<User> Users { get; set; }\n}\n\nنقوم بتكوين الاتصال في appsettings.json:
{\n "ConnectionStrings": {\n "DefaultConnection": "Data Source=users.db"\n },\n "Logging": {\n "LogLevel": { "Default": "Information" }\n }\n}\n\nنسجل الخدمات في Program.cs:
var builder = WebApplication.CreateBuilder(args);\n\nbuilder.Services.AddDbContext<AppDbContext>(options =>\n options.UseSqlite(builder.Configuration.GetConnectionString("DefaultConnection")));\n\nbuilder.Services.AddControllers();\nbuilder.Services.AddEndpointsApiExplorer();\nbuilder.Services.AddSwaggerGen();\n\nvar app = builder.Build();\n\n// تلقائي