eitaa logo
پروژه ASP.Net Core MVC (وب و سی شارپ)
119 دنبال‌کننده
168 عکس
38 ویدیو
376 فایل
❁﷽❁ آموزش 📖 برنامه نویسی ASP.Net Core MVC (وب و سی شارپ) Admin: @alialirezapanahi برنامه نویسی برنامه نویسی سی شارپ eitaa.com/sisharpapp برنامه نویسی وب eitaa.com/aspdatnet ویراستی virasty.com/alialirezapanahi آپارات aparat.com/alialirezapanahi
مشاهده در ایتا
دانلود
پروژه ASP.Net Core MVC (وب و سی شارپ)
کدهای تصادفی در #C و ASP.Net Core ساخته شده از هوش مصنوعی
درباره‌ی انواع روش‌های تولید اعداد تصادفی در C# و ASP.NET Core صحبت کنیم. این موضوع هم برای امنیت مهمه، هم برای کاربردهایی مثل OTP، بازی‌ها، یا انتخاب‌های تصادفی. --- 🎙️ بخش اول: کلاس Random — ساده و سریع کلاس Random رایج‌ترین روش تولید عدد تصادفی در C# هست. برای تولید عدد بین ۰ تا ۹۹۹۹: csharp var rand = new Random(); int code = rand.Next(0, 10000); 🔸 مزایا: ساده، سریع، مناسب برای کاربردهای عمومی 🔸 معایب: قابل پیش‌بینی در شرایط خاص، به‌ویژه در امنیت --- 🎙️ بخش دوم: RandomNumberGenerator — امن و رمزنگاری‌شده برای تولید عدد تصادفی امن، مخصوصاً در احراز هویت یا رمز عبور، از RandomNumberGenerator استفاده می‌کنیم: csharp using System.Security.Cryptography; byte[] bytes = new byte[4]; RandomNumberGenerator.Fill(bytes); int secureCode = BitConverter.ToInt32(bytes, 0) % 900000 + 100000; 🔐 این روش برای تولید OTP یا کدهای تأیید بسیار مناسب‌تره چون از الگوریتم‌های رمزنگاری استفاده می‌کنه. --- 🎙️ بخش سوم: Guid — شناسه یکتا با ساختار تصادفی برای تولید شناسه‌های یکتا، از Guid.NewGuid() استفاده می‌شه: csharp var id = Guid.NewGuid().ToString(); 🔸 کاربرد: شناسه سفارش، توکن‌های تأیید، لینک‌های بازگشتی 🔸 مزیت: یکتا بودن در سطح جهانی --- 🎙️ بخش چهارم: استفاده در ASP.NET Core در پروژه‌های ASP.NET Core، این روش‌ها معمولاً در سناریوهای زیر استفاده می‌شن: - تولید کد تأیید برای پیامک یا ایمیل - ساخت لینک‌های بازگشتی برای پرداخت یا ثبت‌نام - تولید رمزهای موقت یا توکن‌های امنیتی - انتخاب تصادفی از لیست‌ها یا داده‌ها برای ذخیره‌سازی این کدها، می‌تونیم از Session، Redis، یا دیتابیس استفاده کنیم. همچنین می‌تونیم زمان انقضا یا محدودیت دفعات استفاده براشون تعریف کنیم. --- 🎙️ بخش پنجم: نکته‌های تکمیلی برای توسعه‌دهنده‌ها - همیشه برای امنیت از RandomNumberGenerator استفاده کن - برای تست‌پذیری، می‌تونی از مقدار ثابت در Random(seed) استفاده کنی - برای تولید رشته تصادفی، می‌تونی از ترکیب کاراکترها و حلقه استفاده کنی - برای جلوگیری از تکرار، از تاریخ و زمان در ترکیب با عدد تصادفی استفاده کن
پازل_Claim_در_ASP.mp3
زمان: حجم: 18.3M
پازل Claim در ASP.Net Core ساخته شده از هوش مصنوعی
پروژه ASP.Net Core MVC (وب و سی شارپ)
پازل Claim در ASP.Net Core ساخته شده از هوش مصنوعی
مفهوم Claim در ASP.NET Core MVC صحبت کنیم—یکی از پایه‌های مهم در احراز هویت و کنترل دسترسی که خیلی‌ها ازش غافل می‌شن. --- 🎙️ بخش اول: Claim یعنی چی؟ در دنیای برنامه‌نویسی، Claim یعنی «ادعا» یا «اطلاعاتی درباره‌ی هویت کاربر» که توسط سیستم احراز هویت ثبت می‌شه. مثلاً وقتی کاربر وارد سایت می‌شه، سیستم می‌تونه ادعا کنه که: - این کاربر ایمیلش فلان است - نقشش "مدیر" است - کشورش "ایران" است این اطلاعات به شکل Claim ذخیره می‌شن و می‌تونن در طول جلسه کاربر برای تصمیم‌گیری استفاده بشن. --- 🎙️ بخش دوم: Claim در ASP.NET Core MVC چطور استفاده می‌شه؟ در ASP.NET Core، Claimها معمولاً در کنار Identity و Authentication استفاده می‌شن. وقتی کاربر لاگین می‌کنه، می‌تونیم Claimها رو بهش اضافه کنیم: csharp var claims = new List<Claim> { new Claim(ClaimTypes.Name, user.UserName), new Claim(ClaimTypes.Role, "Admin"), new Claim("Country", "Iran") }; var identity = new ClaimsIdentity(claims, "Login"); var principal = new ClaimsPrincipal(identity); await HttpContext.SignInAsync(principal); 🔐 حالا در هر جای پروژه، می‌تونی این اطلاعات رو بخونی: csharp var userName = User.FindFirst(ClaimTypes.Name)?.Value; var role = User.FindFirst(ClaimTypes.Role)?.Value; var country = User.FindFirst("Country")?.Value; --- 🎙️ بخش سوم: کاربردهای Claim در پروژه واقعی Claimها برای کنترل دسترسی خیلی مفیدن. مثلاً: - فقط کاربرانی که نقش "مدیر" دارن بتونن وارد پنل مدیریت بشن - فقط کسانی که کشورشون "ایران" هست بتونن ثبت‌نام کنن - نمایش محتوای خاص بر اساس سن یا جنسیت کاربر > این یعنی امنیت و شخصی‌سازی، بدون نیاز به کوئری‌های سنگین در هر درخواست. --- 🎯 نکته‌های تکمیلی برای توسعه‌دهنده‌ها - Claimها در کنار JWT هم استفاده می‌شن برای APIهای امن - می‌تونی Claim دلخواه بسازی، مثل "IsSubscriber" یا "PreferredLanguage" - برای تست، از ابزارهایی مثل JWT.io استفاده کن تا Claimها رو ببینی
پروژه ASP.Net Core MVC (وب و سی شارپ)
پازل Claim در ASP.Net Core ساخته شده از هوش مصنوعی
کنترلر AccountController.cs using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Authentication.Cookies; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using ProductShopC.Models; using System.Security.Claims; namespace ProductShopC.Controllers { public class AccountController : Controller { private readonly AppDbContext _context; public AccountController(AppDbContext context) { _context = context; } // ثبت‌نام [HttpGet] public IActionResult Register() => View(); [HttpPost] public async Task<IActionResult> Register(string username, string password) { if (await _context.Users.AnyAsync(u => u.Username == username)) { ModelState.AddModelError("", "نام کاربری قبلاً ثبت شده"); return View(); } var user = new User { Username = username, PasswordHash = BCrypt.Net.BCrypt.HashPassword(password) }; _context.Users.Add(user); await _context.SaveChangesAsync(); return RedirectToAction("Login"); } // ورود [HttpGet] public IActionResult Login() => View(); [HttpPost] public async Task<IActionResult> Login(string username, string password) { var user = await _context.Users.FirstOrDefaultAsync(u => u.Username == username); if (user == null || !BCrypt.Net.BCrypt.Verify(password, user.PasswordHash)) { ModelState.AddModelError("", "نام کاربری یا رمز اشتباه است"); return View(); } var claims = new List<Claim> { new Claim(ClaimTypes.Name, user.Username) }; var identity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme); var principal = new ClaimsPrincipal(identity); await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, principal, new AuthenticationProperties { IsPersistent = true, ExpiresUtc = DateTime.UtcNow.AddDays(3) }); return RedirectToAction("Index", "Home"); } // خروج public async Task<IActionResult> Logout() { await HttpContext.SignOutAsync(); return RedirectToAction("Index", "Home"); } } }
CQRS_در_ASP.mp3
زمان: حجم: 17M
CQRSدر ASP.Net Core ساخته شده از هوش مصنوعی
پروژه ASP.Net Core MVC (وب و سی شارپ)
CQRSدر ASP.Net Core ساخته شده از هوش مصنوعی
الگوی CQRS در برنامه‌نویسی با ASP.NET Core—الگویی که وقتی درکش کنی، ساختار پروژه‌هات حرفه‌ای‌تر، قابل تست‌تر و قابل توسعه‌تر می‌شن. --- 🎯 CQRS یعنی چی؟ CQRS مخفف Command Query Responsibility Segregation هست، یعنی «تفکیک مسئولیت‌های خواندن و نوشتن». در این الگو، عملیات خواندن (Query) و نوشتن (Command) از هم جدا می‌شن تا هر کدوم بهینه و مستقل عمل کنن. --- 🧩 چرا از CQRS استفاده می‌کنیم؟ - ساده‌سازی منطق برنامه - افزایش تست‌پذیری - بهبود عملکرد در سیستم‌های بزرگ - جداسازی مسئولیت‌ها برای توسعه‌دهنده‌ها مثلاً در پروژه فروشگاه، عملیات «نمایش لیست محصولات» (Query) با عملیات «افزودن محصول جدید» (Command) کاملاً جدا پیاده‌سازی می‌شن. --- 🛠️ ساختار CQRS در ASP.NET Core در معماری CQRS معمولاً از کتابخانه‌هایی مثل MediatR استفاده می‌شه تا Command و Queryها رو مدیریت کنیم. 🔹 Command: عملیات تغییر داده‌ها مثلاً ثبت سفارش، حذف کاربر، ویرایش محصول csharp public class CreateOrderCommand : IRequest<bool> { public int ProductId { get; set; } public int Quantity { get; set; } } 🔹 Query: عملیات خواندن داده‌ها مثلاً گرفتن لیست سفارش‌ها، جزئیات محصول csharp public class GetOrdersQuery : IRequest<List<OrderDto>> { } و بعد با IRequestHandler هر کدوم رو جداگانه هندل می‌کنیم. --- 📦 ابزارهای رایج برای پیاده‌سازی CQRS - MediatR برای مدیریت Command و Queryها - AutoMapper برای تبدیل مدل‌ها - FluentValidation برای اعتبارسنجی Commandها - Entity Framework Core برای ذخیره‌سازی داده‌ها --- 🎯 نتیجه‌گیری الگوی CQRS بهت کمک می‌کنه پروژه‌هات رو تمیزتر، قابل تست‌تر و قابل توسعه‌تر بسازی. اگه تازه وارد دنیای معماری‌های نرم‌افزاری شدی، CQRS یه نقطه‌ی عالی برای شروعه—مخصوصاً وقتی با MediatR ترکیب بشه.
dto.mp3
زمان: حجم: 23.2M
DTO در ASP.Net Core MVC ساخته شده از هوش مصنوعی نکته: فایل صوتی پادکست به دلیل تکرار بی مورد ویرایش شد
پروژه ASP.Net Core MVC (وب و سی شارپ)
DTO در ASP.Net Core MVC ساخته شده از هوش مصنوعی نکته: فایل صوتی پادکست به دلیل تکرار بی مورد ویرای
در این قسمت از پادکست، می‌خوایم درباره‌ی یکی از مفاهیم مهم و پرکاربرد در معماری نرم‌افزار صحبت کنیم: DTO یا Data Transfer Object در پروژه‌های ASP.NET Core MVC. این مفهوم ساده ولی قدرتمند، نقش مهمی در جداسازی لایه‌ها، امنیت داده‌ها و بهینه‌سازی عملکرد داره. --- 🎙️ بخش اول: DTO یعنی چی؟ DTO مخفف Data Transfer Object هست، یعنی «شیء انتقال داده». در واقع، یه کلاس ساده‌ست که فقط برای ارسال یا دریافت داده‌ها بین لایه‌ها استفاده می‌شه. هدفش اینه که از ارسال مستقیم Entityها (مدل‌های دیتابیس) به View یا API جلوگیری کنه. 🔸 چرا؟ چون Entityها معمولاً شامل اطلاعاتی هستن که نباید به کاربر نمایش داده بشن—مثل رمز عبور، شناسه داخلی، یا روابط پیچیده. --- 🎙️ بخش دوم: DTO در ASP.NET Core MVC چطور استفاده می‌شه؟ فرض کن یه مدل User داری که شامل اطلاعات زیادیه. ولی برای نمایش در View فقط به نام و ایمیل نیاز داری. پس یه DTO می‌سازی: csharp public class UserDto { public string Name { get; set; } public string Email { get; set; } } و در کنترلر، به جای ارسال Entity کامل، فقط DTO رو می‌فرستی: csharp var user = _userService.GetById(id); var dto = new UserDto { Name = user.Name, Email = user.Email }; return View(dto); 🔧 این کار باعث می‌شه View فقط اطلاعات موردنیاز رو دریافت کنه، نه بیشتر. --- 🎙️ بخش سوم: تفاوت نام‌ها در مدل و DTO در ASP.NET Core MVC سلام به همه شنونده‌های عزیز! توی این قسمت، می‌خوایم درباره‌ی یه نکته‌ی ظریف ولی مهم در طراحی نرم‌افزار صحبت کنیم: چرا ممکنه نام‌گذاری در مدل و DTO متفاوت باشه؟ فرض کن در مدل دیتابیس (Entity) دو فیلد داریم: csharp public class User { public string FirstName { get; set; } public string LastName { get; set; } } ولی در DTO فقط یه فیلد داریم: csharp public class UserDto { public string FullName { get; set; } } 🔍 چرا این تفاوت وجود داره؟ چون مدل دیتابیس باید اطلاعات رو دقیق و جداگانه نگه‌داره، ولی DTO فقط اون چیزی رو منتقل می‌کنه که برای نمایش یا انتقال لازمه. در این مثال، FullName در DTO از ترکیب FirstName و LastName ساخته می‌شه: csharp var dto = new UserDto { FullName = $"{user.FirstName} {user.LastName}" }; --- 🎙️ بخش چهارم: مزایای استفاده از DTO - ✅ امنیت بیشتر: اطلاعات حساس فاش نمی‌شن - ✅ کاهش حجم داده‌ها: فقط داده‌های لازم منتقل می‌شن - ✅ جداسازی لایه‌ها: View از دیتابیس مستقل می‌مونه - ✅ تست‌پذیری بهتر: چون کلاس‌ها ساده‌تر و مستقل‌ترن - ✅ انعطاف‌پذیری در توسعه: می‌تونی ساختار نمایش رو تغییر بدی بدون تغییر در مدل اصلی 🎙️ بخش پنجم: ابزارهای کمکی برای DTO برای تبدیل Entity به DTO، می‌تونی دستی کد بزنی یا از ابزارهایی مثل AutoMapper استفاده کنی: csharp var dto = _mapper.Map<UserDto>(user); AutoMapper خودش نگاشت بین کلاس‌ها رو انجام می‌ده و کد رو تمیزتر می‌کنه. --- 🎯 نتیجه‌گیری DTO یه ابزار ساده ولی حیاتی برای ساخت پروژه‌های تمیز، امن و قابل نگهداری در ASP.NET Core MVC هست. اگه پروژه‌ت بزرگ‌تر بشه، استفاده از DTO نه‌تنها توصیه می‌شه، بلکه ضروریه.
17.7M حجم رسانه بالاست
مشاهده در ایتا
داستان DTOها چیست؟ ساخته شده از هوش مصنوعی قابلیت جدید خلاصه ویدیو از هوش مصنوعی notebooklm.google
ProdactDTO.zip
حجم: 25.8M
🎯 معرفی پروژه فروشگاه آنلاین با CQRS + DTO
پروژه ASP.Net Core MVC (وب و سی شارپ)
🎯 معرفی پروژه فروشگاه آنلاین با CQRS + DTO
--- ## 🎯 معرفی پروژه فروشگاه آنلاین با CQRS + DTO این پروژه یک فروشگاه آنلاین ساده و قابل توسعه است که با معماری CQRS (Command Query Responsibility Segregation) و الگوی DTO (Data Transfer Object) طراحی شده. هدف اصلی این معماری، تفکیک مسئولیت‌ها**، **افزایش خوانایی کد**، و **آمادگی برای مقیاس‌پذیری در آینده است. --- ## 🧱 تکنولوژی‌ها و معماری - ASP.NET Core MVC برای ساخت رابط کاربری و کنترلرها - Entity Framework Core برای ارتباط با دیتابیس - CQRS برای تفکیک عملیات خواندن و نوشتن - DTO برای انتقال داده‌ها بین لایه‌ها بدون افشای مدل‌های دامنه - Cookie Authentication برای مدیریت ورود و خروج کاربران - Bootstrap برای طراحی واکنش‌گرا و مرتب صفحات --- ## 🧠 ساختار CQRS در پروژه - Command‌ها برای عملیات‌هایی مثل افزودن محصول، ویرایش ویژگی، حذف گروه - Query‌ها برای دریافت لیست محصولات، جزئیات سبد خرید، اطلاعات کاربر - هر Command و Query از طریق Handler مخصوص خودش اجرا می‌شه - DTOها واسطه‌ای بین مدل‌های دامنه و ویوها هستن تا داده‌ها کنترل‌شده منتقل بشن --- ## 📦 قابلیت‌های پروژه - ثبت‌نام و ورود کاربر با کوکی پایدار تا ۳ روز - افزودن محصول با تصویر، گروه، و ویژگی‌های داینامیک - ویرایش محصول با قابلیت حذف یا افزودن ویژگی‌ها - افزودن به سبد خرید از صفحه جزئیات محصول - مدیریت گروه‌ها با جلوگیری از حذف گروه‌هایی که محصول دارند - کنترل دسترسی با
[Authorize]
و نمایش دکمه‌ها فقط برای کاربران لاگین‌شده - خروج بدون هدایت به صفحه سفید و بازگشت به صفحه قبلی --- ## ⚠️ رفتار پروژه در مواجهه با خطاها - بررسی وجود محصول قبل از حذف گروه - جلوگیری از حذف آبشاری با DeleteBehavior.Restrict - رفع خطاهای
NullReferenceException
,
ArgumentNullException
, و
SqlException
- فرم‌های داینامیک با جاوااسکریپت برای افزودن ویژگی‌ها بدون رفرش صفحه --- ## ✨ مزایای معماری CQRS + DTO در این پروژه | مزیت | توضیح | |------|-------| | تفکیک مسئولیت‌ها | خواندن و نوشتن کاملاً جدا شده و قابل تست هستند ✅ | امنیت داده | DTOها فقط داده‌های مورد نیاز را منتقل می‌کنند ✅ | آمادگی برای مقیاس‌پذیری | امکان اتصال به EventBus یا Microservices در آینده ✅ | نگهداری آسان | هر Handler مسئول یک کار خاص است و قابل توسعه است ✅ --- این پروژه یه نمونه‌ی عالی برای آموزش معماری CQRS در پروژه‌های واقعی ASP.NET Core هست.
پروژه ASP.Net Core MVC (وب و سی شارپ)
🎯 معرفی پروژه فروشگاه آنلاین با CQRS + DTO
فقط کنترلر user از CQRS استفاده میکند ولی کنترلر محصول و گروه و سبد خرید بدونه CQRS میباشد