eitaa logo
پروژه ASP.Net Core MVC (وب و سی شارپ)
120 دنبال‌کننده
168 عکس
38 ویدیو
376 فایل
❁﷽❁ آموزش 📖 برنامه نویسی ASP.Net Core MVC (وب و سی شارپ) Admin: @alialirezapanahi برنامه نویسی برنامه نویسی سی شارپ eitaa.com/sisharpapp برنامه نویسی وب eitaa.com/aspdatnet ویراستی virasty.com/alialirezapanahi آپارات aparat.com/alialirezapanahi
مشاهده در ایتا
دانلود
تغییر پوشه 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ها و سرویس‌ها.
در ASP.NET Core MVC، کلمه Environment به وضعیت یا مرحله‌ای اشاره دارد که برنامه در آن اجرا می‌شود. این وضعیت‌ها معمولاً شامل سه حالت اصلی هستند: - Development: محیط توسعه که در آن برنامه‌نویسان کد را می‌نویسند و تست‌های اولیه را انجام می‌دهند. - Staging: محیط تست که شبیه به محیط تولید است اما برای تست نهایی استفاده می‌شود. - Production: محیط تولید که برنامه به صورت نهایی و برای کاربران واقعی اجرا می‌شود. برای تنظیم این وضعیت‌ها، از متغیر ASPNETCORE_ENVIRONMENT استفاده می‌شود. این متغیر می‌تواند در فایل‌های تنظیمات پروژه یا در تنظیمات سرور مشخص شود. به عنوان مثال، می‌توانید در فایل launchSettings.json مقدار این متغیر را تنظیم کنید: { "profiles": { "IIS Express": { "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } }, "MyProject": { "commandName": "Project", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } } } } همچنین می‌توانید با استفاده از سرویس IHostingEnvironment در کد خود به وضعیت فعلی دسترسی پیدا کنید و بر اساس آن رفتار برنامه را تنظیم کنید: public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { // کد مخصوص محیط توسعه } else if (env.IsStaging()) { // کد مخصوص محیط تست } else if (env.IsProduction()) { // کد مخصوص محیط تولید } } این تنظیمات به شما کمک می‌کند تا برنامه خود را به صورت بهینه و با توجه به محیط‌های مختلف اجرا کنید.
در ASP.NET Core MVC، لاگینگ (Logging) به شما کمک می‌کند تا اطلاعات مهمی درباره اجرای برنامه خود ثبت کنید. این اطلاعات می‌تواند شامل پیام‌های خطا، هشدارها، و اطلاعاتی درباره عملکرد برنامه باشد. در اینجا یک مرور کلی از نحوه پیاده‌سازی لاگینگ در ASP.NET Core MVC ارائه می‌دهم: - پیکربندی لاگینگ: - ابتدا باید لاگینگ را در فایل appsettings.json پیکربندی کنید. به عنوان مثال: { "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning" } } } - اضافه کردن لاگینگ به پروژه: - در فایل Program.cs، لاگینگ را به برنامه اضافه کنید: var builder = WebApplication.CreateBuilder(args); builder.Logging.AddConsole(); builder.Logging.AddDebug(); var app = builder.Build(); - استفاده از لاگینگ در کنترلرها: - در کنترلرها، ILogger را به عنوان یک وابستگی تزریق کنید و از آن برای ثبت لاگ استفاده کنید: public class HomeController : Controller { private readonly ILogger<HomeController> _logger; public HomeController(ILogger<HomeController> logger) { _logger = logger; } public IActionResult Index() { _logger.LogInformation("Index page has been accessed."); return View(); } } - سطوح لاگینگ: - ASP.NET Core از سطوح مختلف لاگینگ پشتیبانی می‌کند که شامل Trace, Debug, Information, Warning, Error, و Critical می‌شود. شما می‌توانید از این سطوح برای دسته‌بندی لاگ‌های خود استفاده کنید. - استفاده از ارائه‌دهندگان لاگینگ: - ASP.NET Core از ارائه‌دهندگان مختلف لاگینگ مانند Console, Debug, EventLog, Serilog, و NLog پشتیبانی می‌کند. شما می‌توانید این ارائه‌دهندگان را به پروژه خود اضافه کنید و از آن‌ها برای ثبت لاگ استفاده کنید. این مراحل به شما کمک می‌کند تا لاگینگ را به طور موثر در پروژه ASP.NET Core MVC خود پیاده‌سازی کنید و از آن برای نظارت و رفع اشکال استفاده کنید.
در ASP.NET Core، لاگینگ API و ارائه‌دهندگان لاگینگ (Logging Providers) نقش مهمی در مدیریت و ثبت لاگ‌ها دارند. در اینجا توضیح مختصری درباره هر یک ارائه می‌دهم: Logging APIASP.NET Core یک API لاگینگ قدرتمند و انعطاف‌پذیر ارائه می‌دهد که به شما امکان می‌دهد لاگ‌های خود را به راحتی مدیریت کنید. این API شامل موارد زیر است: - ILogger Interface: - این اینترفیس اصلی برای ثبت لاگ‌ها است. شما می‌توانید از آن برای ثبت پیام‌های لاگ در سطوح مختلف استفاده کنید. public class MyService { private readonly ILogger<MyService> _logger; public MyService(ILogger<MyService> logger) { _logger = logger; } public void DoWork() { _logger.LogInformation("Doing work..."); } } - ILoggerFactory Interface: - این اینترفیس برای ایجاد نمونه‌های ILogger استفاده می‌شود. شما می‌توانید از آن برای پیکربندی و مدیریت ارائه‌دهندگان لاگینگ استفاده کنید. var loggerFactory = LoggerFactory.Create(builder => { builder.AddConsole(); }); var logger = loggerFactory.CreateLogger<MyService>(); - Log Levels: - سطوح مختلف لاگینگ شامل Trace, Debug, Information, Warning, Error, و Critical می‌شود. این سطوح به شما کمک می‌کنند تا لاگ‌های خود را دسته‌بندی و مدیریت کنید. Logging Providers ارائه‌دهندگان لاگینگ مسئول ارسال لاگ‌ها به مقصدهای مختلف هستند. ASP.NET Core از چندین ارائه‌دهنده لاگینگ پشتیبانی می‌کند: - Console Provider: - این ارائه‌دهنده لاگ‌ها را به کنسول ارسال می‌کند. builder.Logging.AddConsole(); - Debug Provider: - این ارائه‌دهنده لاگ‌ها را به پنجره Debug ارسال می‌کند. builder.Logging.AddDebug(); - EventLog Provider: - این ارائه‌دهنده لاگ‌ها را به Event Log ویندوز ارسال می‌کند. builder.Logging.AddEventLog(); - Third-Party Providers: - شما می‌توانید از ارائه‌دهندگان شخص ثالث مانند Serilog یا NLog استفاده کنید که امکانات بیشتری برای مدیریت لاگ‌ها ارائه می‌دهند. builder.Logging.AddSerilog(); پیکربندی ارائه‌دهندگان لاگینگشما می‌توانید ارائه‌دهندگان لاگینگ را در فایل Program.cs یا appsettings.json پیکربندی کنید. به عنوان مثال: var builder = WebApplication.CreateBuilder(args); builder.Logging.ClearProviders(); builder.Logging.AddConsole(); builder.Logging.AddDebug(); var app = builder.Build(); این توضیحات به شما کمک می‌کند تا با لاگینگ API و ارائه‌دهندگان لاگینگ در ASP.NET Core آشنا شوید و از آن‌ها برای مدیریت لاگ‌های خود استفاده کنید.
در ASP.NET Core، سطوح لاگینگ (Log Levels) برای دسته‌بندی و مدیریت اهمیت پیام‌های لاگ استفاده می‌شوند. این سطوح به ترتیب افزایش شدت به شرح زیر هستند: - Trace: - برای ثبت اطلاعات بسیار دقیق و جزئی که معمولاً برای رفع اشکال استفاده می‌شود. _logger.LogTrace("This is a trace log."); - Debug: - برای ثبت اطلاعاتی که برای توسعه‌دهندگان مفید است و به رفع اشکال کمک می‌کند. _logger.LogDebug("This is a debug log."); - Information: - برای ثبت اطلاعات عمومی درباره جریان عادی برنامه. _logger.LogInformation("This is an information log."); - Warning: - برای ثبت هشدارها و شرایطی که ممکن است نیاز به توجه داشته باشند اما باعث توقف برنامه نمی‌شوند. _logger.LogWarning("This is a warning log."); - Error: - برای ثبت خطاهایی که باعث توقف بخشی از برنامه می‌شوند اما کل برنامه را متوقف نمی‌کنند. _logger.LogError("This is an error log."); - Critical: - برای ثبت خطاهای بحرانی که باعث توقف کامل برنامه می‌شوند. _logger.LogCritical("This is a critical log."); پیکربندی سطوح لاگینگشما می‌توانید سطوح لاگینگ را در فایل appsettings.json پیکربندی کنید. به عنوان مثال: { "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } } } این تنظیمات تعیین می‌کنند که لاگ‌ها با سطح Information و بالاتر ثبت شوند، در حالی که لاگ‌های مربوط به Microsoft فقط با سطح Warning و بالاتر ثبت می‌شوند.
معماری MVC (Model-View-Controller) یک الگوی طراحی نرم‌افزاری است که برنامه‌ها را به سه بخش اصلی تقسیم می‌کند: مدل (Model)، نما (View) و کنترل‌گر (Controller). این تقسیم‌بندی به توسعه‌دهندگان کمک می‌کند تا کدهای خود را به صورت منظم‌تر و قابل نگهداری‌تر بنویسند. 1- مدل (Model): این بخش مسئول مدیریت داده‌ها و منطق تجاری برنامه است. مدل با پایگاه داده ارتباط برقرار می‌کند و داده‌های مورد نیاز را فراهم می‌کند. 2- نما (View): این بخش مسئول نمایش داده‌ها به کاربر است. نما شامل قالب‌های HTML و CSS است که داده‌های مدل را به صورت گرافیکی نمایش می‌دهد. 3- کنترل‌گر (Controller): این بخش واسط بین مدل و نما است. کنترل‌گر درخواست‌های کاربر را دریافت می‌کند، با مدل ارتباط برقرار می‌کند تا داده‌های مورد نیاز را دریافت کند و سپس داده‌ها را به نما ارسال می‌کند تا به کاربر نمایش داده شود. در ASP.NET Core MVC، این الگو به توسعه‌دهندگان کمک می‌کند تا برنامه‌های وب پویا و قابل نگهداری ایجاد کنند.