ShopHome (3).zip
حجم:
26.2M
ادامه پروژه: نمودار اضافه شد
ASP_NET Core MVC_ معماری و عملکرد.wav
حجم:
20.8M
ASP.NET Core MVC: معماری و عملکرد
ساخته شده از هوش مصنوعی
پروژه ASP.Net Core MVC (وب و سی شارپ)
ASP.NET Core MVC: معماری و عملکرد ساخته شده از هوش مصنوعی
ASP.NET Core MVC
چیست و چگونه کار میکند؟
ASP.NET Core MVC
یک فریمورک قدرتمند برای توسعهی برنامههای وب بر پایهی معماری مدل-نما-کنترلر (MVC) است. این معماری با هدف تفکیک وظایف مختلف اپلیکیشن طراحی شده تا پروژهها مقیاسپذیر، قابل نگهداری و سازمانیافته باشند.
---
### 📌 اجزای اصلی ASP.NET Core MVC
ASP.NET Core MVC
بر سه بخش اصلی Model، View و Controller استوار است که هر کدام وظیفهای خاص دارند:
✅ مدل (Model)
🔹 مدل شامل دادهها و منطق کسبوکار است.
🔹 مسئول ذخیره و مدیریت دادهها، مانند محصولات یک فروشگاه آنلاین، کاربران سیستم، یا اطلاعات سفارشها میباشد.
🔹 معمولاً با یک پایگاه داده ارتباط دارد و اطلاعات را ذخیره، بازیابی و پردازش میکند.
✅ نما (View)
🔹 ویو مسئول نمایش دادهها به کاربر است.
🔹 شامل قالبهای HTML، CSS و جاوااسکریپت است که برای طراحی صفحات وب استفاده میشوند.
🔹 دادهها را از کنترلر دریافت کرده و آنها را در قالب رابط کاربری (UI) نمایش میدهد.
✅ کنترلر (Controller)
🔹 کنترلر مسئول مدیریت درخواستهای کاربران و اتصال بین مدل و ویو است.
🔹 وقتی کاربر صفحهای را باز میکند یا یک عملیات را انجام میدهد، کنترلر پردازش را انجام داده و پاسخ مناسب را ارسال میکند.
🔹 کنترلر تصمیم میگیرد که چه دادههایی باید به ویو ارسال شوند.
---
### 📌 فرآیند اجرای درخواست در ASP.NET Core MVC
وقتی کاربر به یک صفحه وب مراجعه میکند، چندین مرحله در پشتصحنه رخ میدهد:
✅ ۱. ارسال درخواست (Request):
🔹 کاربر آدرس وبسایت را در مرورگر وارد میکند، مثلاً: www.example.com/products/5.
🔹 مرورگر درخواست را به سرور ارسال میکند تا اطلاعات مربوط به محصول شماره ۵ را دریافت کند.
✅ ۲. مسیریابی (Routing) درخواست:
🔹 ASP.NET Core MVC
بررسی میکند که کدام کنترلر و اکشن باید اجرا شود.
🔹 بر اساس مسیر درخواست، سیستم تعیین میکند که درخواست باید به کنترلر محصولات منتقل شود.
✅ ۳. پردازش دادهها در مدل:
🔹 کنترلر اطلاعات محصول را از مدل دریافت میکند.
🔹 مدل معمولاً این دادهها را از پایگاه داده واکشی میکند.
✅ ۴. ارسال دادهها به نما (View):
🔹 کنترلر اطلاعات پردازششده را به ویو ارسال میکند.
🔹 ویو از این دادهها برای نمایش محصول در صفحه وب استفاده میکند.
✅ ۵. نمایش خروجی به کاربر:
🔹 مرورگر نتیجه را دریافت کرده و آن را در قالب HTML، CSS و جاوااسکریپت نمایش میدهد.
🔹 کاربر حالا محصول موردنظر را مشاهده میکند.
---
### 📌 مزایای استفاده از ASP.NET Core MVC
این فریمورک چندین مزیت مهم دارد که باعث میشود یکی از محبوبترین گزینهها برای توسعهی برنامههای تحت وب باشد:
✅ ۱. معماری تفکیکشده (Separation of Concerns):
🔹 مدل، ویو و کنترلر هر کدام وظیفهی مشخصی دارند که باعث خوانایی و مدیریت بهتر کدها میشود.
✅ ۲. امکان توسعهی سریعتر و تستپذیری بالا:
🔹 چون بخشهای مختلف از هم جدا هستند، میتوان هر بخش را بهصورت مستقل تست و توسعه داد.
✅ ۳. انعطافپذیری بالا در مسیریابی:
🔹 میتوان مسیرهای درخواستها را دقیقاً مطابق نیازهای پروژه تنظیم کرد.
✅ ۴. مدیریت قدرتمند دادهها و پایگاه داده:
🔹 قابلیت یکپارچهسازی با پایگاههای داده مختلف مانند SQL Server، MySQL، PostgreSQL و ...
✅ ۵. عملکرد بالا و پشتیبانی از کش (Caching):
🔹 با استفاده از ASP.NET Core میتوان عملکرد برنامه را بهینهسازی کرد و از کش برای افزایش سرعت بارگذاری استفاده کرد.
---
### 📌 جمعبندی
✔️ ASP.NET Core MVC
بر اساس معماری مدل-نما-کنترلر (MVC) کار میکند تا پروژههای تحت وب را سازمانیافته، مقیاسپذیر و قابل نگهداری کند.
✔️ مدل مسئول مدیریت دادهها، ویو مسئول نمایش اطلاعات، و کنترلر مسئول پردازش درخواستهای کاربران است.
✔️ درخواست کاربر پردازش میشود، دادهها از مدل دریافت شده، و خروجی در ویو نمایش داده میشود.
✔️ این معماری باعث خوانایی، تستپذیری بالا، انعطافپذیری در مسیریابی، و بهینهسازی عملکرد میشود.
📝 نکته مهم :
public class ApplicationDbContext : DbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options) { }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("Server=.\\SQLEXPRESS;Database=TaskFlowDB;Trusted_Connection=True;TrustServerCertificate=True");
}
}
✅ اگر
ApplicationDbContextرا مانند کدی که در بالا تنظیم کرده باشی (با
OnConfiguring())، دیگر نیازی به appsettings.json و Program.cs برای تعیین رشته اتصال نداری**، زیرا اتصال به دیتابیس مستقیماً در
DbContextتنظیم شده است. 🚨 اما اگر پروژهی شما یک برنامه ASP.NET Core باشد، همچنان به Program.cs نیاز داری تا
ApplicationDbContextرا به **Dependency Injection (DI) اضافه کند. در غیر این صورت، برنامه نمیتواند
DbContextرا مدیریت کند و هنگام اجرا خطا دریافت خواهی کرد. 📌 اگر یک برنامه کنسولی ساده باشد (مثلاً
ConsoleApp)، میتوان بدون Program.cs کار کرد، اما در پروژههای وب و API (مثل ASP.NET Core)، باید Program.cs را داشته باشی تا
DbContextرا در services.AddDbContext<ApplicationDbContext>() ثبت کنی. 🔹 پس اگر فقط در
ApplicationDbContextاتصال را مشخص کرده باشی، نیازی به appsettings.json برای تعیین رشته اتصال نداری**، اما Program.cs برای مدیریت وابستگیها هنوز ضروری است**. اگر قصد داری پروژهای کاملاً بدون appsettings.json و Program.cs اجرا کنی، لطفاً نوع برنامهات را مشخص کن 😊
نکته مهم :
اگر ویژوال استودیو بروز رسانی کردی و خطاهای عجیب دریافت کردی و حتی نمیتوانید از لایه ها استفاده کنید میتوانید از روشهای زیر انجام دهید
برای نصب .NET 8 SDK روی سیستم، میتوانی از [صفحه رسمی دانلود .NET 8]
https://dotnet.microsoft.com/en-us/download/dotnet/8.0
استفاده کنی. در این صفحه، نسخههای مختلف SDK و Runtime برای ویندوز، لینوکس و macOS موجود هستند.
### ✅ مراحل نصب .NET 8 SDK در ویندوز
1️⃣ دانلود .NET 8 SDK
- به [صفحه دانلود .NET 8]
https://dotnet.microsoft.com/en-us/download/dotnet/8.0
برو.
- نسخه SDK 8.0.16 را برای ویندوز انتخاب کن.
- فایل نصبی (
.exe) را دانلود کن. 2️⃣ نصب .NET 8 SDK - فایل دانلودشده را اجرا کن و مراحل نصب را دنبال کن. - مطمئن شو که گزینه "Add to PATH" فعال باشد. 3️⃣ بررسی نصب موفق - پس از نصب، در Command Prompt این دستور را اجرا کن: sh dotnet --list-sdks - باید .NET 8.0.16 در لیست نمایش داده شود. 4️⃣ تنظیم نسخه پیشفرض - اگر همچنان
.NET 9بهصورت پیشفرض اجرا میشود، میتوانی نسخه .NET 8 را بهصورت دستی تنظیم کنی: sh dotnet build --framework net8.0 📌 اگر هنگام نصب مشکلی داشتی، بگو تا راهنمایی کنم! 😊 نصب .NET 8 SDK به درستی انجام شده است، چون در
dotnet --list-sdksدیده میشود (
8.0.410). اما مشکل اینجاست که **دستور
dotnet --versionهنوز
9.0.300را نشان میدهد**، یعنی نسخهی پیشفرض همچنان
.NET 9است. برای حل این مشکل، باید نسخهی .NET 8 را بهعنوان نسخهی پیشفرض تنظیم کنیم: --- ### ✅ ۱. استفاده از نسخهی صحیح هنگام اجرا 🔹 هنگام اجرای
dotnet buildو
dotnet run، بهصورت دستی نسخهی
.NET 8را مشخص کن: sh dotnet build --framework net8.0 dotnet run --framework net8.0 --- ### ✅ ۲. تنظیم نسخهی پیشفرض با global.json 🔹 اگر میخواهی نسخهی
.NET 8بهعنوان پیشفرض در پروژه تنظیم شود، باید یک فایل global.json بسازی: sh dotnet new globaljson --sdk-version 8.0.410 🔹 سپس بررسی کن که نسخهی تنظیمشده درست است: sh dotnet --version 🔹 حالا باید
.NET 8.0.410نمایش داده شود. --- ### ✅ **۳. حذف نسخهی
.NET 9(اختیاری)** 📌 اگر نمیخواهی
.NET 9پیشفرض باشد، میتوانی آن را حذف کنی: sh dotnet uninstall 9.0.300 🚨 این گزینه را فقط اجرا کن اگر نیازی به .NET 9 نداری. --- ### 📌 جمعبندی ✔ **از
dotnet build --framework net8.0برای اجرای پروژه با
.NET 8استفاده کن.** ✔ **یک global.json بساز تا
.NET 8.0.410بهعنوان نسخهی پیشفرض در پروژه تنظیم شود.** ✔ **در صورت نیاز، نسخهی
.NET 9را حذف کن.**
بیا با هم با حوصله بررسی کنیم که SDK 8.0.16، 8.0.410، و global.json دقیقاً چه هستند و چه تفاوتی دارند:
---
### 🧩 ۱. فرق بین
8.0.16و
8.0.410| نسخه SDK | معنی و کاربرد اصلی | |--------------|--------------------------------------------------| |
8.0.16| نسخه معمولی پایدار از .NET 8 – مخصوص سیستمهایی که فقط نسخه SDK را نصب میکنند. این نسخه بیشتر برای توسعه شخصی و عمومی استفاده میشود. | |
8.0.410| نسخه بلندمدت (LTS) برای Visual Studio 2022 – سری 17.10. Microsoft این نسخه را برای هماهنگی با نسخههای مشخصی از ویژوال استودیو منتشر میکند. این SDK دقیقاً همان محتوای
8.0.16را دارد، فقط شماره نگارش بر اساس تقویم تعیین شده است. | 🔹 یعنی **
8.0.410و
8.0.16کاملاً معادل هستند از لحاظ هسته فنی** – فقط شماره نسخه متفاوت است! --- ### 🔧 ۲. دستور
dotnet new globaljson --sdk-version ...چهکار میکند؟ وقتی چند نسخه از .NET روی سیستم نصب باشد، پروژهها ممکن است به نسخه اشتباه اجرا شوند. با دستور
globaljsonمیتوانی تعیین کنی که پروژه دقیقاً از چه نسخهای از SDK استفاده کند. #### 📘 مثال اول: bash dotnet new globaljson --sdk-version 8.0.410 🔹 این دستور یک فایل global.json در پوشه فعلی میسازد با محتوای: json { "sdk": { "version": "8.0.410" } } 🔸 این یعنی: **این پوشه و تمام زیرفولدرهایش از .NET SDK نسخه
8.0.410استفاده میکنند.** #### 📙 مثال دوم: bash dotnet new globaljson --sdk-version 8.0.16 🔹 دقیقاً مثل بالا، فقط عدد نسخه متفاوت است. اگر هر دو نسخه روی سیستم نصب باشند، پروژه با همین نسخه اجرا میشود. ✅ وقتی فایل global.json وجود دارد: - دستور
dotnet buildیا
dotnet runدیگر دنبال نسخه جدیدتر نمیگردد. - پروژه دقیقاً با نسخه مشخصشده اجرا میشود. --- ### 📌 ۳. جمعبندی شیرین: | مورد | توضیح | |---------------------------|-------| |
8.0.16و
8.0.410| هسته مشابه دارند، فقط برای نسخههای متفاوت ویژوال استودیو ارائه شدهاند. انتخاب هرکدام مشکلی ایجاد نمیکند. | |
dotnet new globaljson| برای قفل کردن نسخه SDK پروژه در مسیر خاصی استفاده میشود. | | وجود global.json | جلوی استفاده ناخواسته از نسخههای جدیدتر یا ناسازگار SDK را میگیرد. | | اگر نسخه مشخصشده نصب نشده باشد | خطا میگیری:
The specified SDK version could not be found. | --- اگر دوست داشتی من میتونم برات فایل global.json بسازم، پروژهتو تنظیم کنم، یا از اینجا مستقیم یه ساختار پروژه حرفهای راه بندازم ✨ فقط بگو! 😊
MyShop (9).zip
حجم:
40.5M
پروژه ادامه درس باگتو است تا جایی که میشود بخص هایی که درس نداده به پروژه آوردم یک فروشگاه کامل که سبد خرید و تست بانک ندارد چند ماه در روز تعطیلی وقتم را گذراندم در ادامه درس باگتو همه موارد درس سبد خرید توضیح داده و تست بانک هم در پروژه Test_Store دارم
gallery.zip
حجم:
13.4M
گالری چند تصویر برای فروشگاه که از پروژه جدا کردم
Lang.zip
حجم:
18.5M
پروژه دو زبان فارسی و انگلیسی که زبان از طریق کوکی ذخیره می شود