eitaa logo
پروژه ASP.Net Core MVC (وب و سی شارپ)
120 دنبال‌کننده
168 عکس
38 ویدیو
377 فایل
❁﷽❁ آموزش 📖 برنامه نویسی ASP.Net Core MVC (وب و سی شارپ) Admin: @alialirezapanahi برنامه نویسی برنامه نویسی سی شارپ eitaa.com/sisharpapp برنامه نویسی وب eitaa.com/aspdatnet ویراستی virasty.com/alialirezapanahi آپارات aparat.com/alialirezapanahi
مشاهده در ایتا
دانلود
فرض کنیم یک محصول در فروشگاه فقط ۱ عدد موجودی دارد. دو کاربر تقریباً همزمان می‌خواهند آن را بخرند. --- ## سناریو ساده موجودی محصول: 1 👤 کاربر A وارد صفحه محصول می‌شود 👤 کاربر B هم همان لحظه وارد همان صفحه می‌شود هر دو صفحه نشان می‌دهد: 📦 موجودی: 1 حالا هر دو تقریباً همزمان روی خرید کلیک می‌کنند. --- # اگر سیستم کنترل همزمانی نداشته باشد اتفاقی که می‌افتد: 1️⃣ درخواست کاربر A به سرور می‌رسد سیستم می‌بیند موجودی = 1 ✅ خرید انجام می‌شود 📦 موجودی می‌شود 0 2️⃣ تقریباً همزمان درخواست کاربر B هم می‌رسد سیستم هنوز فکر می‌کند موجودی = 1 (چون همزمان خوانده شده) ✅ خرید او هم انجام می‌شود نتیجه: 🧾 دو سفارش ثبت شده 📦 ولی در واقع فقط ۱ محصول وجود داشته این مشکل را می‌گویند: ⚠️ Race Condition (رقابت بین درخواست‌ها) --- # در سیستم درست چه باید اتفاق بیفتد سیستم باید اجازه بدهد: ✅ فقط یک نفر خرید موفق داشته باشد ❌ نفر دوم پیام بگیرد مثلاً: 👤 کاربر A → خرید موفق ✅ 👤 کاربر B → پیام: 🚫 "متأسفانه موجودی محصول تمام شده است" --- # مثال واقعی فروشگاه موجودی کفش: 1 👤 علی → خرید می‌کند ✅ 👤 رضا → همزمان خرید می‌کند ❌ سیستم باید بگوید: 📢 "این کالا لحظاتی قبل توسط کاربر دیگری خریداری شد." --- # چرا این مشکل رخ می‌دهد؟ چون در برنامه‌ها معمولاً این اتفاق می‌افتد: 1️⃣ موجودی از دیتابیس خوانده می‌شود 2️⃣ بررسی می‌شود آیا > 0 است 3️⃣ بعد سفارش ثبت می‌شود اگر دو درخواست خیلی نزدیک به هم بیایند، هر دو مرحله 1 را با همان مقدار انجام می‌دهند. --- # نتیجه نهایی اگر کنترل همزمانی نباشد: ⚠️ ممکن است چند نفر یک کالای آخر را بخرند. اگر سیستم درست طراحی شده باشد: ✅ فقط یک نفر موفق می‌شود ❌ بقیه پیام اتمام موجودی می‌گیرند.
1) سشن (Session) 📌 چیه؟ سشن یک فضای موقت روی سروره که اطلاعات کاربر را فقط تا زمانی که مرورگر باز است یا مدت زمان مشخصی گذشته نشده نگه می‌دارد. 📌 کوکی دارد؟ بله، اما فقط یک کوکی کوچک نگه می‌دارد که اسمش سشن آیدی است. اطلاعات اصلی روی سرور است، *نه داخل کوکی*. 📌 مثال: فرض کن وارد یک فروشگاه اینترنتی شدی و چند کالا را در سبد خرید گذاشتی 🛒 فروشگاه این اطلاعات را در Session ذخیره می‌کند. اگر مرورگر را ببندی سبد خرید پاک می‌شود. 📌 تشبیه: سشن شبیه رسید شماره‌داری است که رستوران بهت می‌دهد. تو رسید را داری (کوکی)، ولی غذا داخل آشپزخانه است (سرور). 🍲 ------------------------------------- 2) کوکی (Cookie) 📌 چیه؟ کوکی یک فایل کوچک داخل مرورگر کاربر است که توسط سرور ذخیره می‌شود. 📌 اطلاعات کجا ذخیره می‌شود؟ خودِ اطلاعات مستقیم داخل مرورگر است. 📌 مثال: وب‌سایتی که می‌خواهد زبان مورد علاقه شما را به یاد داشته باشد 🌍 مثلاً همیشه فارسی را انتخاب می‌کنی. این را در کوکی ذخیره می‌کند. 📌 تشبیه: کوکی شبیه یادداشتی است که توی جیبت می‌گذاری تا یادت نره چی دوست داری. 📝 ------------------------------------- 3) Identity 📌 چیه؟ Identity یک فریم‌ورک کامل برای مدیریت کاربران است: - ثبت‌نام - ورود - خروج - نقش‌ها - رمز عبور - ایمیل، شماره موبایل و… 📌 از کوکی استفاده می‌کند؟ بله. وقتی کاربر لاگین می‌کند Identity یک کوکی احراز هویت ایجاد می‌کند تا دفعه‌ی بعد بدون لاگین دوباره شناخته شود. 📌 مثال: وقتی وارد پنل کاربری یک سایت می‌شوی 🙂 و دفعه بعدی که وارد می‌شوی، بدون ورود دوباره کارت را می‌شناسد — این کار Identity است. 📌 تشبیه: Identity مثل سیستم عضویت باشگاه بدنسازی است 💳 یک کارت عضویت داری، و باشگاه تو را می‌شناسد. ------------------------------------- 4) Authorization (اتورایزیشن: مجوز دسترسی) 📌 چیه؟ Authorization مشخص می‌کند چه کسی به کجا دسترسی دارد. 📌 به چه چیزی وابسته است؟ وابسته به این است که Identity اطلاعات کاربر را شناسایی کرده باشد (از طریق کوکی). 📌 مثال: - مدیر می‌تواند وارد پنل مدیریت شود 👨‍💼 - کاربر عادی نمی‌تواند 🚫 📌 تشبیه: Authorization مثل نگهبان دم در باشگاهه 🧹 کارتت (Identity) را نگاه می‌کند اگر مربی باشی، اجازه ورود به اتاق مربیان را می‌دهد اگر نباشی، جلو راهت را می‌گیرد. ------------------------------------- جمع‌بندی تفاوت‌ها (با یک مثال کامل) فرض کن وارد یک سایت می‌شوی: 1) وارد سایت می‌شوی و لاگین می‌کنی Identity → تو را شناسایی و تأیید می‌کند 🙋‍♂️ Identity → یک کوکی احراز هویت در مرورگرت می‌گذارد 🍪 2) می‌روی به پنل مدیریت Authorization → بررسی می‌کند که آیا نقش تو "مدیر" هست یا نه 🚦 3) چند کالا به سبد اضافه می‌کنی Session → آن‌ها را موقتاً در سرور نگه می‌دارد 🛒 4) مرورگر را ببندی سبد خرید پاک می‌شود Session تمام می‌شود ❌ اما چون لاگین بودی، دفعه بعد که بیایی Identity از طریق کوکی تو را دوباره می‌شناسد ✔️
Areas.zip
حجم: 69.7K
من identity کامل توسط ویزوال استودیو دریافت کردم
پروژه ASP.Net Core MVC (وب و سی شارپ)
این پروژه یک CRUD ساده با ASP.NET Core MVC است که فقط یک جدول (Products) دارد و چند قابلیت مهم فریم‌ورک را نشان می‌دهد: - مدیریت کامل محصولات (CRUD) 📦 امکان افزودن، مشاهده و حذف محصول در سیستم. - استفاده از TagHelper در فرم‌ها و لینک‌ها 🏷 برای ساخت فرم‌ها و لینک‌های صفحه‌ها به شکل استاندارد و ساده‌تر. - نمایش مرتب تاریخ و قیمت ⏰💰 تاریخ و قیمت محصولات با فرمت مناسب نمایش داده می‌شوند تا خوانایی بهتر شود. - استفاده از DropDown با SelectList 🔽 برای انتخاب دسته‌بندی محصول از یک لیست کشویی استفاده شده است. - استفاده از ViewComponent 🧩 برای نمایش یک بخش مستقل در صفحه مثل تعداد کل محصولات. - استفاده از Dependency Injection 🔌 برای مدیریت وابستگی‌ها و دسترسی به سرویس‌ها یا دیتابیس به شکل استاندارد. - استفاده از Logging 📝 برای ثبت عملیات‌ها و خطاهای برنامه در لاگ. - مدیریت خطا ⚠️ در صورت بروز خطا هنگام عملیات‌هایی مثل ذخیره یا حذف، برنامه خطا را مدیریت کرده و پیام مناسب به کاربر نمایش می‌دهد. ✅ در مجموع این پروژه با یک جدول ساده، چند مفهوم مهم ASP.NET Core MVC را به‌صورت عملی نشان می‌دهد.
قالب سایت فروشگاه