سلام. فایل 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 چیست ؟
تاریخ :
1403/10/25
- ساعت :
12:39:00 AM
- بازدید :
16
- پاسخ :
0
|
تاریخ :
1398/10/13
- ساعت :
12:16:00 AM
- بازدید :
10749
- پاسخ :
3
|
تاریخ :
1402/07/20
- ساعت :
02:06:00 AM
- بازدید :
1075
- پاسخ :
1
|
تاریخ :
1399/06/25
- ساعت :
12:52:00 AM
- بازدید :
2068
- پاسخ :
2
|
تاریخ :
1398/08/02
- ساعت :
02:59:00 AM
- بازدید :
5738
- پاسخ :
4
|
تاریخ :
1403/10/20
- ساعت :
12:45:00 AM
- بازدید :
41
- پاسخ :
0
|
تاریخ :
1400/04/12
- ساعت :
03:19:00 PM
- بازدید :
3022
- پاسخ :
1
|
تاریخ :
1402/11/04
- ساعت :
02:23:00 PM
- بازدید :
954
- پاسخ :
2
|
تاریخ :
1398/09/17
- ساعت :
08:57:00 AM
- بازدید :
2040
- پاسخ :
1
|
تاریخ :
1398/09/19
- ساعت :
09:43:00 PM
- بازدید :
2071
- پاسخ :
1
|
تاریخ :
1403/10/25
- ساعت :
12:39:00 AM
- بازدید :
16
- پاسخ :
0
|
تاریخ :
1398/10/13
- ساعت :
12:16:00 AM
- بازدید :
10749
- پاسخ :
3
|
تاریخ :
1402/07/20
- ساعت :
02:06:00 AM
- بازدید :
1075
- پاسخ :
1
|
تاریخ :
1399/06/25
- ساعت :
12:52:00 AM
- بازدید :
2068
- پاسخ :
2
|
تاریخ :
1403/10/22
- ساعت :
12:29:00 PM
- بازدید :
35
- پاسخ :
1
|
تاریخ :
1403/10/21
- ساعت :
02:16:00 PM
- بازدید :
52
- پاسخ :
1
|
تاریخ :
1400/12/18
- ساعت :
10:24:00 AM
- بازدید :
2016
- پاسخ :
1
|
تاریخ :
1401/01/13
- ساعت :
02:27:00 AM
- بازدید :
1992
- پاسخ :
1
|
تاریخ :
1401/01/26
- ساعت :
12:14:00 PM
- بازدید :
2863
- پاسخ :
1
|
تاریخ :
1403/10/20
- ساعت :
11:39:00 AM
- بازدید :
40
- پاسخ :
1
|