دسته بندی ها
12:29 1403/10/22

کاربرد فایل Program.cs در Asp.net Core چیست ؟

مشخصات سوال کننده :
کاربر : hamid_b     امتیاز کاربر : 518     رتبه کاربر : 4
دسته بندی : Asp.net Core

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 519
هوش مصنوعی

پاسخ هوش مصنوعی

فایل Program.cs در ASP.NET Core نقش مهمی در راه اندازی و پیکربندی اپلیکیشن دارد. این فایل معمولاً شامل متد Main است که نقطه ورود برنامه را مشخص می کند. به طور کلی، وظایف اصلی فایل Program.cs شامل موارد زیر است:

  • ایجاد یک WebHost: این فایل معمولاً وظیفه ایجاد یک WebHost را بر عهده دارد که به عنوان سرور برای اجرای اپلیکیشن عمل می کند.
  • پیکربندی خدمات: می توان در این فایل خدمات مختلفی نظیر DI (Dependency Injection)، Middleware و دیگر تنظیمات را پیکربندی کرد.
  • اجرای اپلیکیشن: در نهایت، فایل Program.cs مسیول اجرای اپلیکیشن بعد از انجام پیکربندی ها است.

بدون این فایل، نمی توان برنامه را اجرا کرد، زیرا نقطه ورود برنامه مشخص نیست و WebHost برای آماده سازی اپلیکیشن وجود نخواهد داشت. در واقع، این فایل برای هر پروژه ASP.NET Core الزامی است.

به عنوان مثال، یک نمونه ساده از فایل Program.cs به شکل زیر است:

using System;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;

namespace MyWebApp
{
    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();
                });
    }
}
به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : saedbfd 14:07 1403/10/24

آشنایی با کلاس Program.cs در Asp.net Core

کلاس Program.cs نقطه شروع برنامه می باشد. در این فایل شما می توانید پروژه خودتون رو پیکربندی کنید. برای اجرای پروژه وب شما نیاز به یک وب سرور دارید (IIS یا Kestrel) که در این فایل پیکربندی وب سرور نیز انجام می شود.

هر زمان که شما پروژه Dot net Core خود را اجرا می کنید در ابتدا این فایل اجرا می شود و تنظیمات اولیه پروژه شما را انجام می دهد.

نکته : اگر شما به فایل Program.cs نگاه کنید متوجه خواهید شد که در این کلاس هیچ تابع یا متدی تعریف نشده است و کدهای مربوط به پیکربندی مستقیم و بدون ساختار خاصی تعریف شده است. در این کلاس از یک خاصیت سی شارپ به نام Top Level Statement استفاده شده که امکان تعریف کدها را بدون تابع و متد به شما می دهد.

نمونه ای از کلاس Program.cs به صورت پایه و بدون تغییر :

//Section 1
var builder = WebApplication.CreateBuilder(args);

//Section 2
// Add services to the container.
builder.Services.AddControllersWithViews();

//Section 3
var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

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

app.UseRouting();

app.UseAuthorization();

//Section 4
app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

 

شی builder : اگر در کدهای بالا نگاه کنید در قسمت section 1 یک متغیر به نام builder از نوع WebApplication.CreateBuilder تعریف شده است. متد CreateBuilder سرور داخلی پروژه که Kestrel می باشد را راه اندازی می کند و یک سری تنظیمات دیگه مانند خواندن از فایل appsetting.json را انجام می دهد. خب پس در اینجا ما یک شی به نام builder داریم که اشاره به سرور داخلی پروژه دارد و از طریق این متغیر می توانیم هر نوع پیکربندی روی سرور انجام دهیم.

بخش Service ها : اگر به Section 2 در کدهای بالا دقت کنید، بخشی وجود دارد که شما می توانید Service های مورد نیاز پروژه خودتون رو در این قسمت به پروژه تزریق کنید. در این مثال سرویس AddControllersWithViews راه اندازی شده است. این سرویس تمامی پیش نیازهایی که برای کار با یک پروژه MVC مورد نیاز است را به پروژه اضافه می کند. در این بخش شما می توانید با توجه به نیاز پروژه خود Service های زیادی به پروژه تزریق کنید.

بخش app یا میان افزارها : در Section 3 یک متغیر به نام app تعریف شده است که از متد Build ارث بری کرده است. این بخش یکی از بخش های مهم کلاس Program.cs می باشد. در این بخش شما می توانید Middleware ها یا همان میان افزارها را تعریف کنید. request هایی که در زمینه های مختلف از طریق pipeline ها به پروژه شما ارسال می شود در این بخش مدیریت می شود.

برای درک بهتر کاربرد این بخش یک مثال برای شما میزنم. فرض کنید یک کاربر وب سایت شما را باز می کند. در این لحظه یک Request از سمت مرورگر کاربر به سرور شما ارسال می شود. این Request برای اینکه بتواند در نهایت یکی از صفحات وب سایت شما را به کاربر نمایش دهد باید مراحل مختلفی را طی کند.

به عنوان مثال ابتدا باید طبق سیستم Routing وب سایت شما مسیر حرکت مشخص شود. خب در اینجا وظیفه مسیریابی به عهده میان افزار app.UseRouting می باشد. در مرحله بعد باید استایل ها و تصاویر آن صفحه نمایش داده شود. از آنجایی که این موارد جزو static ها در سایت هستند میان افزار app.UseStatucFiles این درخواست را مدیریت می کند. همچنین اگر نیاز به احراز هویت باشد میان افزار app.UseAuthorization صدا زده می شود و به همین صورت میان افزارهای مختلف درخواست های مختلف را دریافت و مدیریت می کنند.

 

بخش تعریف مسیرها : یکی از بخش های مهم که جزیی از همان میان افزارها می باشد بخش تعریف الگوهایی برای مسیریابی در وب سایت می باشد. اگر در بخش Section 4 نگاه کنید متوجه می شوید یک الگو به نام default تعریف شده است که به پروژه می گوید به صورت پیش فرض باید کنترلر Home و ویوی Index نمایش داده شود. شما می توانید الگوهای مختلفی در این بخش تعریف کنید.

تفاوت بین UseEndpoints و UseRouting در مسیریابی در Asp.net Core

تفاوت مسیریابی (Routing) در Asp.net Core 2 با Asp.net Core 3 چیست ؟

ویرایش شده در سه شنبه 16 بهمن 1403 ساعت 17:56:33
به این پاسخ امتیاز بدهید    1
امتیاز: 1664 رتبه: 1
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود