آموزش ساخت C# ASP.NET Core web application - Visual Studio (Windows) _ Microsoft Learn.pdf
حجم:
875.4K
آموزش: با C# و ASP.NET Core در ویژوال استودیو شروع کنید
در اینجا توضیح مختصری از هر یک از این تکنولوژیها و الگوهای پروژه در ASP.NET Core آورده شده است:
- Blazor Web App:
بلزر یک فریمورک برای ساخت رابطهای کاربری تعاملی سمت کلاینت با استفاده از C# است. بلزر میتواند به دو صورت سرور و وباسمبلی اجرا شود.
- ASP.NET Core Web App (Razor Pages):
این الگو برای ساخت صفحات وب با استفاده از Razor Pages است که یک مدل برنامهنویسی ساده و مبتنی بر صفحه برای ساخت رابطهای کاربری وب است.
- ASP.NET Core Web API:
این الگو برای ساخت APIهای وب است که میتوانند توسط کلاینتهای مختلف مانند مرورگرها و اپلیکیشنهای موبایل مصرف شوند.
- ASP.NET Core Web API (native AOT):
این الگو مشابه Web API است، اما با استفاده از تکنولوژی Native AOT (Ahead-of-Time) که باعث بهبود عملکرد و کاهش زمان اجرا میشود.
- Razor Class Library:
این الگو برای ساخت کتابخانههای کلاس Razor است که میتوانند در پروژههای مختلف ASP.NET Core استفاده شوند.
- ASP.NET Core Empty:
این الگو یک پروژه خالی ASP.NET Core ایجاد میکند که میتوانید از ابتدا آن را سفارشی کنید.
- ASP.NET Core Web App (Model-View-Controller):
این الگو برای ساخت برنامههای وب با استفاده از الگوی MVC (مدل-نما-کنترلر) است که یک الگوی طراحی برای جداسازی منطق برنامه از رابط کاربری است.
- Blazor WebAssembly Standalone App:
این الگو برای ساخت اپلیکیشنهای Blazor است که به صورت مستقل و بدون نیاز به سرور اجرا میشوند.
برای شروع اولین پروژه در ASP.NET Core، پیشنهاد میکنم از ASP.NET Core Web App (Model-View-Controller) استفاده کنید. این الگو به شما کمک میکند تا با اصول اولیه MVC آشنا شوید و یک برنامه وب ساده و کاربردی بسازید.
ایجاد پروژه ASP.NET Core Web App (Model-View-Controller)
1- نصب ابزارها:
- Visual Studio:
اگر Visual Studio را نصب نکردهاید، میتوانید در سایت مایکروسافت دانلود و نصب کنید.
2- ایجاد پروژه:
- و Visual Studio را باز کنید.
- از منوی File گزینه New و سپس Project را انتخاب کنید.
- در پنجره Create a new project، الگوی ASP.NET Core Web App (Model-View-Controller) را انتخاب کنید و روی Next کلیک کنید.
- در پنجره Configure your new project، نام پروژه را وارد کنید (مثلاً MyFirstMvcApp) و روی Create کلیک کنید.
- در پنجره Additional information، نسخه .NET را انتخاب کنید (مثلاً .NET 8.0) و روی Create کلیک کنید.
3- ساختار پروژه:
- پروژهای که ایجاد میشود شامل پوشهها و فایلهای زیر است:
- Controllers:
شامل کنترلرها که منطق برنامه را مدیریت میکنند.
- Models:
شامل مدلها که دادهها و منطق تجاری را تعریف میکنند.
- Views:
شامل نماها که رابط کاربری را نمایش میدهند.
4- اجرای پروژه:
- برای اجرای پروژه، کلیدهای Ctrl + F5 را فشار دهید یا از منوی Debug گزینه Start Without Debugging را انتخاب کنید.
- مرورگر شما باز میشود و برنامه وب شما در آدرس http://localhost:5000 نمایش داده میشود.
این مراحل به شما کمک میکند تا اولین پروژه ASP.NET Core خود را ایجاد و اجرا کنید.
برای ایجاد یک پروژه ASP.NET Core Web App (Model-View-Controller) ، مراحل زیر را دنبال کنید:
1- ایجاد پروژه:
- در Visual Studio، به مسیر File > New > Project بروید.
- نوع پروژه را ASP.NET Core Web App (Model-View-Controller) انتخاب کنید و روی Next کلیک کنید.
2- پیکربندی پروژه:
- نام پروژه و مکان ذخیرهسازی آن را مشخص کنید.
- در بخش Framework، نسخه .NET مورد نظر خود را انتخاب کنید (مثلاً .NET 8.0).
- در بخش Authentication type، نوع احراز هویت مورد نظر خود را انتخاب کنید (مثلاً Individual Accounts برای احراز هویت با استفاده از حسابهای کاربری فردی).
3- پیکربندی HTTPS:
- گزینه Configure for HTTPS را فعال کنید تا پروژه شما از HTTPS استفاده کند.
4- پشتیبانی از کانتینرها:
- گزینه Enable Docker Support را فعال کنید.
- در بخش Container OS، سیستمعامل کانتینر مورد نظر خود را انتخاب کنید (مثلاً Linux یا Windows).
- در بخش Container build type، نوع ساخت کانتینر را مشخص کنید (مثلاً Docker).
5- استفاده نکردن از Top-Level Statements:
- گزینه Do not use top-level statements را فعال کنید تا از استفاده از Top-Level Statements در کد خود جلوگیری کنید.
6- Enlist in .NET Aspire orchestration:
- این گزینه برای استفاده از قابلیتهای orchestration در .NET Aspire است که به شما امکان مدیریت و هماهنگی بهتر پروژههای بزرگ را میدهد.
پس از انجام این مراحل، روی Create کلیک کنید تا پروژه شما ایجاد شود. حالا میتوانید کدهای خود را اضافه کنید و پروژه را توسعه دهید.
در اینجا توضیح مختصری از هر پوشه و فایل در Solution Explorer پروژه ASP.NET Core Web App (Model-View-Controller) آورده شده است:
1- Connected Services:
- این پوشه شامل سرویسهای خارجی است که به پروژه شما متصل شدهاند، مانند سرویسهای ابری یا APIهای خارجی.
2- Dependencies:
- این پوشه شامل تمامی وابستگیهای پروژه شما است، از جمله کتابخانههای NuGet و بستههای مورد نیاز.
3- Properties:
- این پوشه شامل فایلهای پیکربندی پروژه مانند launchSettings.json است که تنظیمات مربوط به اجرای پروژه را نگهداری میکند.
4- wwwroot:
- این پوشه شامل فایلهای استاتیک پروژه شما است، مانند CSS، JavaScript، تصاویر و سایر منابع استاتیک.
5- Controllers:
- این پوشه شامل کنترلرهای پروژه شما است که مسئول مدیریت درخواستها و پاسخها هستند. کنترلرها منطق برنامه را پیادهسازی میکنند.
6- Models:
- این پوشه شامل مدلهای دادهای پروژه شما است که ساختار دادهها و منطق تجاری را تعریف میکنند.
7- Views:
- این پوشه شامل نماهای پروژه شما است که رابط کاربری را نمایش میدهند. نماها معمولاً فایلهای Razor هستند که HTML و C# را ترکیب میکنند.
8- appsettings.json:
- این فایل شامل تنظیمات پیکربندی پروژه شما است، مانند تنظیمات پایگاه داده، تنظیمات لاگینگ و سایر تنظیمات کاربردی.
9- Program.cs:
- این فایل نقطه ورود برنامه شما است و شامل کدهای راهاندازی و پیکربندی اولیه برنامه است.
در دات نت 8، فایل Program.cs به عنوان نقطه ورودی اصلی برنامه عمل میکند و شامل تمام پیکربندیها و تنظیمات مورد نیاز برای اجرای برنامه است. در اینجا یک نمونه کامل از فایل Program.cs و توضیح هر بخش آورده شده است:
نمونه فایل Program.cs
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.FileProviders;
using System.IO;
var builder = WebApplication.CreateBuilder(args);
// اضافه کردن سرویسها به کانتینر
builder.Services.AddControllersWithViews();
var app = builder.Build();
// پیکربندی خط لوله درخواست HTTP
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles(new StaticFileOptions
{
FileProvider = new PhysicalFileProvider(
Path.Combine(builder.Environment.ContentRootPath, "public")),
RequestPath = "/static"
});
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
توضیح بخشهای مختلف
- اضافه کردن فضای نامها:
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.FileProviders;
using System.IO;
این بخش شامل فضای نامهای مورد نیاز برای پیکربندی و اجرای برنامه است.
- ایجاد و پیکربندی WebApplication:
var builder = WebApplication.CreateBuilder(args);
این خط یک شیء WebApplicationBuilder ایجاد میکند که برای پیکربندی سرویسها و تنظیمات برنامه استفاده میشود.
- اضافه کردن سرویسها به کانتینر:
builder.Services.AddControllersWithViews();
این خط سرویسهای مورد نیاز برای کنترلرها و ویوها را به کانتینر DI اضافه میکند.
- ساختن و پیکربندی برنامه:
var app = builder.Build();
این خط برنامه را میسازد و آماده اجرای آن میشود.
- پیکربندی خط لوله درخواست HTTP:
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles(new StaticFileOptions
{
FileProvider = new PhysicalFileProvider(
Path.Combine(builder.Environment.ContentRootPath, "public")),
RequestPath = "/static"
});
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
این بخش شامل تنظیمات مختلفی است که برای پیکربندی نحوه پردازش درخواستهای HTTP استفاده میشود:
- UseExceptionHandler:
در حالت تولید، خطاها را به صفحه خطای مشخص شده هدایت میکند.
- UseHsts: HSTS (HTTP Strict Transport Security)
را فعال میکند.
- UseHttpsRedirection:
درخواستهای HTTP را به HTTPS هدایت میکند.
- UseStaticFiles:
فایلهای استاتیک را از پوشه مشخص شده ارائه میدهد.
- UseRouting:
مسیریابی درخواستها را فعال میکند.
- UseAuthorization:
مجوزدهی را فعال میکند.
- MapControllerRoute:
مسیر پیشفرض برای کنترلرها و اکشنها را تنظیم میکند.
- اجرای برنامه:
app.Run();
این خط برنامه را اجرا میکند و منتظر درخواستهای ورودی میماند.
تغییر پوشه wwwrootبرای تغییر پوشه wwwroot به یک پوشه دیگر مانند public، میتوانید از کد زیر استفاده کنید:
- اضافه کردن StaticFileOptions:
- در بخش app.UseStaticFiles، تنظیمات مربوط به پوشه جدید را اضافه کنید.
app.UseStaticFiles(new StaticFileOptions
{
FileProvider = new PhysicalFileProvider(
Path.Combine(builder.Environment.ContentRootPath, "public")),
RequestPath = "/static"
});
- تنظیم مسیر جدید:
- FileProvider
مسیر جدید پوشه استاتیک را مشخص میکند.
- RequestPath
مسیر درخواستها برای فایلهای استاتیک را تنظیم میکند.
با این تغییرات، فایلهای استاتیک شما از پوشه public ارائه خواهند شد و میتوانید به آنها از طریق مسیر /static دسترسی پیدا کنید.
فایل launchSettings.json در پروژههای ASP.NET Core برای پیکربندی نحوه اجرای برنامه در محیط توسعه استفاده میشود. این فایل در پوشه Properties قرار دارد و شامل تنظیمات مختلفی است که به شما امکان میدهد نحوه اجرای برنامه را مشخص کنید. این تنظیمات شامل پروفایلهای مختلف برای اجرای برنامه با استفاده از سرورهای مختلف مانند Kestrel و IIS Express است.
ساختار فایل launchSettings.json
در اینجا یک نمونه از فایل launchSettings.json آورده شده است:
{
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"MyApp": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"applicationUrl": "https://localhost:5001;http://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
توضیح بخشهای مختلف
- Profiles:
- این بخش شامل پروفایلهای مختلفی است که نحوه اجرای برنامه را مشخص میکنند. هر پروفایل میتواند تنظیمات خاص خود را داشته باشد.
- IIS Express:
- commandName:
مشخص میکند که برنامه با استفاده از IIS Express اجرا شود.
- launchBrowser:
تعیین میکند که آیا مرورگر به صورت خودکار باز شود یا خیر.
- environmentVariables:
متغیرهای محیطی را برای این پروفایل تنظیم میکند، مانند ASPNETCORE_ENVIRONMENT که محیط توسعه را مشخص میکند.
- MyApp:
- commandName:
مشخص میکند که برنامه به عنوان یک پروژه اجرا شود (با استفاده از Kestrel).
- dotnetRunMessages:
پیامهای اجرای dotnet را فعال میکند.
- launchBrowser:
تعیین میکند که آیا مرورگر به صورت خودکار باز شود یا خیر.
- applicationUrl:
و URLهای برنامه را مشخص میکند که شامل HTTP و HTTPS است.
- environmentVariables:
متغیرهای محیطی را برای این پروفایل تنظیم میکند.
اجرای HTTP و HTTPS
در پروفایل MyApp، تنظیمات applicationUrl مشخص میکند که برنامه باید به هر دو URL http://localhost:5000 و https://localhost:5001 گوش دهد. این به شما امکان میدهد برنامه را هم با HTTP و هم با HTTPS اجرا کنید.
اجرای با IIS Express
پروفایل IIS Express برای اجرای برنامه با استفاده از IIS Express استفاده میشود. IIS Express یک نسخه سبک از IIS است که برای توسعه محلی استفاده میشود. این پروفایل به شما امکان میدهد برنامه را در محیطی مشابه با محیط تولید اجرا کنید.
چرخه حیات درخواست در ASP.NET Core MVC شامل مراحل مختلفی است که یک درخواست HTTP از زمان ورود تا زمان ارسال پاسخ طی میکند. این مراحل به شرح زیر هستند:
- Middleware:
درخواست ابتدا از میانافزارها عبور میکند. میانافزارها میتوانند درخواست را پردازش کنند، تغییر دهند یا به مرحله بعدی ارسال کنند.
- Routing:
پس از عبور از میانافزارها، درخواست به سیستم مسیریابی میرسد که تعیین میکند کدام کنترلر و اکشن باید درخواست را پردازش کنند.
- Controller Initialization:
کنترلر مربوطه ایجاد و مقداردهی اولیه میشود.
- Action Execution: اکشن مشخص شده در کنترلر اجرا میشود. این مرحله شامل پردازش منطق برنامه و تعامل با مدلها است.
- Result Execution:
نتیجه اکشن (مانند View یا JSON) تولید و به مرورگر کاربر ارسال میشود.
در دات نت 8، پردازش درخواستها در ASP.NET Core MVC همچنان از طریق چرخه HTTP Pipeline و Middleware ها انجام میشود. با این حال، برخی بهبودها و ویژگیهای جدید اضافه شدهاند که کار با این فریمورک را سادهتر و کارآمدتر میکنند.
مراحل پردازش درخواست در ASP.NET Core MVC:
1- دریافت درخواست: درخواست HTTP از سمت کاربر به سرور ارسال میشود.
2- Middleware:
درخواست از طریق مجموعهای از Middleware ها عبور میکند که هر کدام وظیفه خاصی دارند (مانند احراز هویت، ثبت لاگ، و غیره).
3- Routing:
درخواست به کنترلر مناسب هدایت میشود.
4- Controller:
کنترلر درخواست را پردازش میکند، دادههای مورد نیاز را از مدلها دریافت میکند و نتیجه را به ویو ارسال میکند.
5- View:
ویو دادهها را به قالب HTML تبدیل کرده و به کاربر نمایش میدهد.
ویژگیهای جدید در دات نت 8:
- بهبود عملکرد: بهینهسازیهای مختلفی برای افزایش سرعت و کارایی انجام شده است.
- پشتیبانی بهتر از APIها: امکانات جدیدی برای ساخت و مدیریت APIها اضافه شده است.
- امنیت بیشتر: بهبودهای امنیتی برای محافظت بهتر از دادهها و جلوگیری از حملات.
Middleware
نرمافزاری است که به عنوان یک لایه واسط بین سیستمعامل و برنامههای کاربردی عمل میکند. این نرمافزار ارتباط و مدیریت دادهها بین اجزای مختلف یک سیستم توزیعشده را تسهیل میکند. به عبارت دیگر، Middleware مانند "چسب نرمافزاری" عمل میکند که سیستمهای مختلف را به هم متصل میکند.
انواع مختلفی از Middleware وجود دارد، از جمله:
- Message-oriented Middleware (MOM):
برای تبادل پیامها بین برنامهها.
- Web Middleware:
برای پشتیبانی از ارتباطات و اتصال در برنامههای وب.
- Database Middleware:
برای مدیریت دسترسی به پایگاههای داده.
- API Middleware:
برای تسهیل ارتباطات بین APIها و سرویسها.