ميكروسيرفيسات بلغة C#: من أين تبدأ في عام 2025

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

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

ابدأ الدورة

ميكروسيرفيسات بلغة C#: من أين يبدأ المبتدئ في عام 2025

\n\n

في السابق، كان يبدو أن الميكروسيرفيسات هي حكر على عمالقة مثل Netflix أو Amazon. لكن الأوقات تغيرت. اليوم، بنية الميكروسيرفيسات بلغة C# متاحة لكل مطور يريد بناء أنظمة مرنة وقابلة للتوسع والصيانة. إذا كنت تشعر أن التطبيق المتكامل (Monolith) "يخنق" مشروعك، أو تريد ببساطة اكتساب مهارة مطلوبة، فقد وصلت إلى المكان الصحيح.

\n\n

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

\n\n

لماذا C# خيار ممتاز للميكروسيرفيسات

\n\n

C# ومنظومة .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
\n\n

بالمناسبة، إذا كنت قد بدأت للتو في تعلم C#، أنصحك بإلقاء نظرة على قسم المقالات الأساسية على PythonLib — هناك الكثير من المحتوى المفيد للبدء.

\n\n

من أين تبدأ: هيكل المشروع

\n\n

خطأ المبتدئ هو الاندفاع لكتابة الكود دون التفكير في البنية التحتية. دعنا نفعلها بشكل صحيح. للبدء، سننشئ ميكروسيرفيسين:

\n\n
    \n
  • UserService — مسؤول عن المستخدمين (التسجيل، الملف الشخصي).
  • \n
  • OrderService — مسؤول عن الطلبات.
  • \n
\n\n

كل خدمة سيكون لها قاعدة بيانات خاصة بها (SQLite للتبسيط) وتتواصل عبر REST API. هذا يكفي للبدء.

\n\n

الخطوة 1. إنشاء مشروع UserService

\n\n

افتح الطرفية أو Visual Studio ونفذ:

\n\n
dotnet new webapi -n UserService\ncd UserService\ndotnet add package Microsoft.EntityFrameworkCore.Sqlite\ndotnet add package Microsoft.EntityFrameworkCore.Design
\n\n

سيكون هيكل المشروع كالتالي:

\n\n
UserService/\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\n
{\n  "ConnectionStrings": {\n    "DefaultConnection": "Data Source=users.db"\n  },\n  "Logging": {\n    "LogLevel": { "Default": "Information" }\n  }\n}
\n\n

نسجل الخدمات في Program.cs:

\n\n
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// تلقائي                

المدونات

توصيات الكتب