یادگیری ASP.NET Core زمانی ماندگار میشود که مفاهیم را در یک محصول واقعی کنار هم قرار دهید. دیدن ویدئو یا حفظکردن دستورها بهتنهایی برای ساخت سامانه کافی نیست؛ باید مسیر درخواست را از مرورگر تا کنترلر، سرویس، پایگاه داده و پاسخ نهایی دنبال کنید. در این راهنما یک نقشه راه آموزش ASP.NET Core پروژهمحور ارائه میکنیم تا هنرجو بداند چه موضوعی را با چه تمرینی یاد بگیرد و چگونه از پروژه آموزشی به نمونهکار قابل ارائه برسد.
پیشنیازهای واقعی قبل از شروع
برای شروع لازم نیست همه جزئیات زبان C# را بدانید، اما باید با متغیر، شرط، حلقه، متد، کلاس، اینترفیس و مدیریت خطا آشنا باشید. همچنین درک پایه HTML، CSS، HTTP و SQL مسیر را بسیار سادهتر میکند. اگر در یکی از این بخشها ضعف دارید، آن را همزمان با پروژه و بر اساس نیاز واقعی تمرین کنید؛ لازم نیست ماهها شروع پروژه را عقب بیندازید.
- ساختار کلاس و شیء در C#
- مجموعهها، LINQ و کار با داده
- مفهوم درخواست و پاسخ HTTP
- فرم، ورودی کاربر و اعتبارسنجی
- جدول، کلید اصلی و رابطه در پایگاه داده
- Git برای ثبت مرحلههای پروژه
پروژه آموزشی مناسب چه ویژگیهایی دارد؟
پروژه اول نباید یک شبکه اجتماعی بزرگ یا فروشگاه کامل باشد. موضوعی انتخاب کنید که چند نقش کاربری، عملیات CRUD، جستوجو و یک گزارش ساده داشته باشد. سامانه مدیریت کارها، رزرو جلسه، ثبت درخواست خدمات یا مدیریت دوره گزینههای مناسبی هستند. پروژه باید کوچک باشد اما یک جریان را کامل کند.
برای نمونه، در سامانه مدیریت کارها میتوانید ثبتنام، ورود، ساخت پروژه، افزودن وظیفه، تعیین مسئول، تغییر وضعیت و گزارش کارهای عقبافتاده را پیادهسازی کنید. همین دامنه کوچک، بخش بزرگی از مفاهیم وب واقعی را پوشش میدهد.
مرحله اول: معماری MVC و مسیر درخواست
ابتدا یک پروژه MVC بسازید و نقش Model، View و Controller را در یک صفحه ساده مشاهده کنید. وقتی کاربر URL را باز میکند، routing درخواست را به action مناسب میرساند؛ کنترلر داده لازم را آماده میکند و View خروجی HTML را میسازد. در این مرحله روی نامگذاری مسیرها، ViewModel و جداسازی منطق نمایش تمرکز کنید.
تمرین پیشنهادی: فهرست وظایف را با داده موقت نمایش دهید، صفحه جزئیات بسازید و فرم ایجاد وظیفه را بدون دیتابیس پیاده کنید. هدف این است که چرخه GET، POST، اعتبارسنجی و Redirect را بفهمید.
مرحله دوم: Entity Framework Core و مدل داده
اکنون موجودیتها و رابطهها را طراحی کنید. هر جدول باید هدف مشخص داشته باشد و داده تکراری غیرضروری ذخیره نکند. سپس DbContext، migration و repository یا service متناسب با معماری پروژه را اضافه کنید. فقط به اجرای موفق migration اکتفا نکنید؛ SQL تولیدشده و رفتار رابطهها را نیز بررسی کنید.
- رابطه یکبهچند بین پروژه و وظیفه
- کلید خارجی مسئول وظیفه
- زمان ایجاد و آخرین ویرایش
- وضعیت فعال یا حذف نرم برای دادههای مهم
- ایندکس برای جستوجوهای پرتکرار
تمرین پیشنهادی: عملیات ثبت، ویرایش و مشاهده را با EF Core تکمیل و برای فهرستها از queryهای بدون tracking استفاده کنید.
مرحله سوم: Dependency Injection و سرویسها
وقتی همه منطق در کنترلر نوشته شود، تست و نگهداری سخت میشود. قانون کسبوکار را به سرویس منتقل و وابستگی را از طریق constructor دریافت کنید. مستندات رسمی ASP.NET Core توضیح میدهد که سرویسها در container ثبت میشوند و framework نمونه مناسب را هنگام اجرای درخواست تزریق میکند.
تمرین پیشنهادی: قانونی بنویسید که وظیفه بستهشده قابل حذف نباشد یا فقط مدیر پروژه بتواند مسئول را تغییر دهد. این قانون را در سرویس قرار دهید و کنترلر را به هماهنگکننده درخواست و پاسخ محدود کنید.
مرحله چهارم: احراز هویت و مجوز دسترسی
ورود کاربر با اجازه انجام هر عملیات تفاوت دارد. Authentication مشخص میکند کاربر چه کسی است و Authorization تعیین میکند چه کاری میتواند انجام دهد. فقط مخفیکردن دکمه در View امنیت ایجاد نمیکند؛ کنترل دسترسی باید سمت سرور اعمال شود.
- ثبتنام و ورود را با Identity یا راهکار معتبر پروژه پیاده کنید.
- نقشها و policyها را برای عملیات حساس تعریف کنید.
- مالکیت داده را در query یا سرویس بررسی کنید.
- سناریوی کاربر مهمان، عضو عادی و مدیر را تست کنید.
مرحله پنجم: اعتبارسنجی، امنیت و مدیریت خطا
ورودی کاربر را نامعتبر فرض کنید. از Data Annotation یا validator مناسب استفاده کنید، پیام خطا را کنار همان فیلد نشان دهید و درخواستهای POST را با antiforgery محافظت کنید. آپلود فایل باید محدودیت پسوند، MIME، امضای فایل، حجم و مسیر ذخیرهسازی داشته باشد. اطلاعات داخلی خطا نیز نباید به کاربر نهایی نمایش داده شود.
تمرین پیشنهادی: برای عنوان خالی، تاریخ نامعتبر، دسترسی غیرمجاز و رکورد پیدانشده تست بنویسید و نتیجه مناسب HTTP یا صفحه خطا را برگردانید.
مرحله ششم: API، Ajax و تجربه کاربری
پس از تکمیل جریان اصلی، یک قابلیت کوچک مانند تغییر وضعیت وظیفه یا جستوجوی سریع را با endpoint و Ajax پیاده کنید. ابتدا قرارداد ورودی و خروجی را مشخص کنید، خطاها را استاندارد برگردانید و سمت مرورگر حالت بارگذاری و شکست را نمایش دهید. هدف تبدیل همه صفحات به JavaScript نیست؛ هدف یادگیری تعامل درست کلاینت و سرور است.
مرحله هفتم: تست و کیفیت کد
حداقل قوانین کسبوکار و سناریوهای دسترسی را با unit test پوشش دهید. برای مسیرهای حیاتی مثل ثبت فرم، ورود و queryهای مهم integration test بنویسید. نام تست باید رفتار مورد انتظار را روشن کند. یک پروژه بدون تست شاید امروز کار کند، اما تغییر امن آن دشوار است.
همزمان کد را بازبینی کنید: کنترلرهای بزرگ، queryهای تکراری، کلاسهای چندمسئولیتی و پیامهای خطای نامفهوم را اصلاح کنید. کیفیت نمونهکار فقط تعداد قابلیتها نیست؛ خوانایی و قابلیت توضیح تصمیمها نیز مهم است.
مرحله هشتم: انتشار و عملیات
پروژه را فقط روی سیستم خود نگه ندارید. یک محیط آزمایشی ایجاد کنید، تنظیمات را از کد جدا نگه دارید، secret را داخل مخزن قرار ندهید و فرایند publish را مستند کنید. logging، health check، نسخه پشتیبان دیتابیس و HTTPS را بررسی کنید. درک انتشار، تفاوت هنرجوی کدنویس و توسعهدهنده آماده پروژه را نشان میدهد.
برنامه تمرینی هشتهفتهای
- هفته 1: C# ضروری، Git و طراحی دامنه کوچک
- هفته 2: MVC، routing، ViewModel و فرمها
- هفته 3: EF Core، رابطهها و migration
- هفته 4: service layer و قوانین کسبوکار
- هفته 5: Identity، نقش و policy
- هفته 6: امنیت، آپلود و مدیریت خطا
- هفته 7: API، Ajax و تست
- هفته 8: بهینهسازی، مستندسازی و انتشار
چگونه پروژه را به نمونهکار تبدیل کنیم؟
یک README بنویسید که مسئله، نقش کاربران، فناوریها، روش اجرا و تصاویر محصول را توضیح دهد. تصمیمهای فنی مهم و محدودیتهای نسخه فعلی را صادقانه ثبت کنید. داده نمایشی مناسب بسازید و اطلاعات واقعی کاربران را در مخزن قرار ندهید. سپس نسخه آنلاین یا ویدئوی کوتاه جریان اصلی را ارائه کنید.
جمعبندی
یادگیری پروژهمحور یعنی هر مفهوم را برای حل یک مسئله واقعی به کار ببرید و بتوانید دلیل تصمیم خود را توضیح دهید. اگر میخواهید این مسیر را با تمرین، بازخورد مدرس و پروژه نهایی طی کنید، صفحه دوره جامع برنامهنویسی و طراحی وب با ASP.NET Core را ببینید یا برای انتخاب مسیر از مشاوره آموزشی آکادمی استفاده کنید.
منبع رسمی: ASP.NET Core fundamentals و Dependency injection در ASP.NET Core.
تمرین را به مسیر یادگیری و دوره متصل کنید
برای پیش نیازهای وب، نقشه راه طراحی سایت و پروژهٔ نمونه را ببینید. دورهٔ برنامه نویسی وب با ASP.NET Core سرفصل ها و جلسهٔ نمونه را در اختیار شما می گذارد. برای یادگیری حضوری نیز زمان بندی کلاس های شیراز را بررسی کنید.