Blazor - شرح ملف Program.cs و Startup (في .NET 5 أو 6)

Blazor Server - شرح ملف Program.cs و Startup (في .NET 5 أو 6)

ملف Program.cs (وفي الإصدارات الأقدم مع Startup.cs) هو المسؤول عن إعداد التطبيق وتشغيله.

🔹 في .NET 6 (وما بعده):

تم تبسيط الإعداد وأصبح كل شيء تقريبًا داخل ملف واحد هو Program.cs.


var builder = WebApplication.CreateBuilder(args);

// تسجيل الخدمات (Dependency Injection)
builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();

var app = builder.Build();

// إعداد الـ Middlewares
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();

// تعيين نقاط النهاية (Endpoints)
app.MapBlazorHub();
app.MapFallbackToPage("/_Host");

app.Run();

🔹 ملاحظات مهمة:

  • builder.Services: يتم فيها تسجيل الخدمات التي يحتاجها التطبيق (مثل Blazor نفسه).
  • app.UseRouting: يسمح للنظام بفهم التنقل بين الصفحات.
  • app.MapBlazorHub: يحدد نقطة الاتصال باستخدام SignalR لتحديث الواجهة.
  • app.MapFallbackToPage: يعيد التوجيه لأي عنوان غير معروف إلى صفحة Blazor الأساسية (_Host.cshtml).

🔹 ماذا عن .NET 5 وما قبله؟

في الإصدارات الأقدم مثل .NET 5، كانت الإعدادات موزعة بين:

  • Program.cs: يقوم بإنشاء Host ويحدد Startup Class.
  • Startup.cs: يحتوي على دوال ConfigureServices و Configure.

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });
}

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddRazorPages();
        services.AddServerSideBlazor();
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (!env.IsDevelopment())
        {
            app.UseExceptionHandler("/Error");
            app.UseHsts();
        }

        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseRouting();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapBlazorHub();
            endpoints.MapFallbackToPage("/_Host");
        });
    }
}

✅ في .NET 6 فما فوق أصبح كل شيء أبسط وأسرع بفضل دمج Program و Startup معًا.

تعليقات

المشاركات الشائعة من هذه المدونة

HTML - Text Formatting تنسيقات النص

1.1 SQL Introduction

Entity Framework - مقدمة عن Entity Framework