هوش مصنوعی تحلیل کد کد، خطا و مشکلات برنامه‌نویسی را بررسی کن و راهکار دقیق بگیر.
🤖 تحلیل کد 🐞 رفع خطا 💡 پیشنهاد راهکار
ورود به هوش مصنوعی
قیمت‌یار هوشمند قیمت واقعی را پیدا کن؛ مقایسه کن، روند قیمت را ببین و بهترین گزینه را انتخاب کن.
🚗 خودرو 🏠 ملک 💻 لپ‌تاپ 📺 دیجیتال
ورود به قیمت‌یار
دوره آموزشی تخصصی آموزش ASP.NET Core 10؛ از Web API تا پروژه واقعی
یادگیری پروژه‌محور
آموزش ASP.NET Core 10؛ از Web API تا پروژه واقعی
دوره آموزشی
اطلاعات دوره آموزشی

آموزش ASP.NET Core 10؛ از Web API تا پروژه واقعی

ثبت‌نام آنلاین دوره
ابتدا حساب کاربری خود را بسازید؛ سپس از پروفایل کلاس مرتبط با این دوره را انتخاب می‌کنید.

ساخت Web API و سرویس‌های واقعی با ASP.NET Core 10؛ Routing، DI، EF Core، Validation و امنیت.

مدرس قربانی
سطح متوسط
قیمت 35,000,000 تومان

سرفصل جلسات دوره

15 جلسه

<div class='lesson-rich-content'> <h2>جلسه 1: یک درخواست از کجا می‌آید و کجا می‌رود؟</h2> <h3>تمرکز جلسه</h3> <p> شناخت Program، Middleware، Pipeline و نقش سرویس‌ها در چرخه پردازش یک HTTP Request. </p> <h3>چرا این مبحث مهم است؟</h3> <p> درک Pipeline پایه اصلی Debugging و توسعه قابلیت‌های Cross-Cutting در ASP.NET Core است. </p> <h3>در عمل چه کار می‌کنیم؟</h3> <p> یک Web API ساده می‌سازید و با Middleware مسیر عبور Request تا Response را مشاهده و ثبت می‌کنید. </p> <h3>اشتباه رایج</h3> <p> نگاه کردن به Controller یا Endpoint بدون درک Middleware. </p> <h3>چالش جلسه</h3> <p> Middlewareای طراحی کنید که زمان پردازش هر درخواست و Endpoint اجراشده را گزارش کند. </p> <h3>ارتباط با پروژه نهایی</h3> <p> این مبحث در ادامه دوره در پروژه نهایی استفاده می‌شود. هدف این است که مفهوم جلسه فقط به یک مثال آموزشی محدود نماند و بتوانید آن را در یک مسئله واقعی به کار بگیرید. </p> </div>

ویدئو هنوز آماده نشده است ویدئوی آموزشی این جلسه به‌زودی اضافه خواهد شد.

<div class='lesson-rich-content'> <h2>جلسه 2: Routing؛ طراحی URLهایی که قابل پیش‌بینی هستند</h2> <h3>تمرکز جلسه</h3> <p> Route Template، پارامترها، Constraintها و اصول طراحی URL برای APIهای RESTful. </p> <h3>چرا این مبحث مهم است؟</h3> <p> Routing قرارداد اصلی بین مصرف‌کننده API و سرویس شماست. </p> <h3>در عمل چه کار می‌کنیم؟</h3> <p> Endpointهای CRUD برای محصولات طراحی می‌کنید و برای هر عملیات HTTP Status Code مناسب برمی‌گردانید. </p> <h3>اشتباه رایج</h3> <p> استفاده از URLهای نامنظم و وابسته به جزئیات پیاده‌سازی. </p> <h3>چالش جلسه</h3> <p> مسیرهای یک فروشگاه را برای Product، Category و Order طراحی کنید. </p> <h3>ارتباط با پروژه نهایی</h3> <p> این مبحث در ادامه دوره در پروژه نهایی استفاده می‌شود. هدف این است که مفهوم جلسه فقط به یک مثال آموزشی محدود نماند و بتوانید آن را در یک مسئله واقعی به کار بگیرید. </p> </div>

ویدئو هنوز آماده نشده است ویدئوی آموزشی این جلسه به‌زودی اضافه خواهد شد.

<div class='lesson-rich-content'> <h2>جلسه 3: Minimal API یا Controller؛ کدام انتخاب بهتری است؟</h2> <h3>تمرکز جلسه</h3> <p> تفاوت Minimal API و Controller و معیارهای انتخاب هر رویکرد. </p> <h3>چرا این مبحث مهم است؟</h3> <p> انتخاب سبک معماری باید بر اساس نیاز پروژه باشد، نه صرفاً محبوبیت یک روش. </p> <h3>در عمل چه کار می‌کنیم؟</h3> <p> یک Endpoint را با هر دو رویکرد پیاده می‌کنید و تفاوت سازمان‌دهی و خوانایی را بررسی می‌کنید. </p> <h3>اشتباه رایج</h3> <p> تبدیل همه پروژه‌ها به یک رویکرد بدون توجه به اندازه و پیچیدگی. </p> <h3>چالش جلسه</h3> <p> برای یک API کوچک و یک سامانه سازمانی تصمیم بگیرید از کدام رویکرد استفاده می‌کنید. </p> <h3>ارتباط با پروژه نهایی</h3> <p> این مبحث در ادامه دوره در پروژه نهایی استفاده می‌شود. هدف این است که مفهوم جلسه فقط به یک مثال آموزشی محدود نماند و بتوانید آن را در یک مسئله واقعی به کار بگیرید. </p> </div>

ویدئو هنوز آماده نشده است ویدئوی آموزشی این جلسه به‌زودی اضافه خواهد شد.

<div class='lesson-rich-content'> <h2>جلسه 4: Dependency Injection در عمل؛ وابستگی‌ها را مدیریت کنیم</h2> <h3>تمرکز جلسه</h3> <p> Service Registration، Lifetimeهای Scoped، Singleton و Transient. </p> <h3>چرا این مبحث مهم است؟</h3> <p> DI باعث می‌شود اجزای برنامه کمتر به پیاده‌سازی مشخص وابسته باشند. </p> <h3>در عمل چه کار می‌کنیم؟</h3> <p> منطق قیمت‌گذاری را از Endpoint جدا می‌کنید و سرویس مربوطه را از طریق DI دریافت می‌کنید. </p> <h3>اشتباه رایج</h3> <p> استفاده اشتباه از Lifetimeها که باعث مصرف نادرست منابع می‌شود. </p> <h3>چالش جلسه</h3> <p> سه سرویس مختلف طراحی کنید و برای هرکدام Lifetime مناسب انتخاب کنید. </p> <h3>ارتباط با پروژه نهایی</h3> <p> این مبحث در ادامه دوره در پروژه نهایی استفاده می‌شود. هدف این است که مفهوم جلسه فقط به یک مثال آموزشی محدود نماند و بتوانید آن را در یک مسئله واقعی به کار بگیرید. </p> </div>

ویدئو هنوز آماده نشده است ویدئوی آموزشی این جلسه به‌زودی اضافه خواهد شد.

<div class='lesson-rich-content'> <h2>جلسه 5: DTO؛ قرارداد ورودی و خروجی API</h2> <h3>تمرکز جلسه</h3> <p> تفکیک DTO از Entity و کنترل دقیق داده‌هایی که وارد یا خارج API می‌شوند. </p> <h3>چرا این مبحث مهم است؟</h3> <p> DTOها مرز قرارداد API را مشخص می‌کنند. </p> <h3>در عمل چه کار می‌کنیم؟</h3> <p> برای Product مدل‌های Request و Response طراحی می‌کنید و فیلدهای داخلی را از خروجی حذف می‌کنید. </p> <h3>اشتباه رایج</h3> <p> برگرداندن مستقیم Entity در تمام Endpointها. </p> <h3>چالش جلسه</h3> <p> برای Product دو DTO ورودی و یک DTO خروجی طراحی کنید. </p> <h3>ارتباط با پروژه نهایی</h3> <p> این مبحث در ادامه دوره در پروژه نهایی استفاده می‌شود. هدف این است که مفهوم جلسه فقط به یک مثال آموزشی محدود نماند و بتوانید آن را در یک مسئله واقعی به کار بگیرید. </p> </div>

ویدئو هنوز آماده نشده است ویدئوی آموزشی این جلسه به‌زودی اضافه خواهد شد.

<div class='lesson-rich-content'> <h2>جلسه 6: EF Core و DbContext؛ اتصال برنامه به دیتابیس</h2> <h3>تمرکز جلسه</h3> <p> Entity، DbSet، DbContext، Migration و چرخه دسترسی برنامه به داده‌ها. </p> <h3>چرا این مبحث مهم است؟</h3> <p> EF Core بخش مهمی از ارتباط لایه Application با دیتابیس است. </p> <h3>در عمل چه کار می‌کنیم؟</h3> <p> مدل Product را به EF Core متصل می‌کنید، Migration ایجاد می‌کنید و ساختار دیتابیس را اعمال می‌کنید. </p> <h3>اشتباه رایج</h3> <p> نگه داشتن DbContext به‌عنوان محل تمام منطق برنامه. </p> <h3>چالش جلسه</h3> <p> یک مدل Product طراحی کنید، Migration ایجاد کنید و تغییر بعدی مدل را اعمال کنید. </p> <h3>ارتباط با پروژه نهایی</h3> <p> این مبحث در ادامه دوره در پروژه نهایی استفاده می‌شود. هدف این است که مفهوم جلسه فقط به یک مثال آموزشی محدود نماند و بتوانید آن را در یک مسئله واقعی به کار بگیرید. </p> </div>

ویدئو هنوز آماده نشده است ویدئوی آموزشی این جلسه به‌زودی اضافه خواهد شد.

<div class='lesson-rich-content'> <h2>جلسه 7: روابط بین موجودیت‌ها و Queryهای کاربردی</h2> <h3>تمرکز جلسه</h3> <p> رابطه‌های One-to-Many، Navigation Property، Include و انتخاب داده مورد نیاز. </p> <h3>چرا این مبحث مهم است؟</h3> <p> بیشتر سیستم‌های واقعی از جدول‌های مستقل تشکیل نشده‌اند. </p> <h3>در عمل چه کار می‌کنیم؟</h3> <p> ارتباط Customer و Order را ایجاد می‌کنید و Query سفارش‌های هر مشتری را می‌نویسید. </p> <h3>اشتباه رایج</h3> <p> استفاده بی‌رویه از Include که حجم داده را افزایش می‌دهد. </p> <h3>چالش جلسه</h3> <p> گزارشی طراحی کنید که اطلاعات مشتری و خلاصه سفارش‌های او را برگرداند. </p> <h3>ارتباط با پروژه نهایی</h3> <p> این مبحث در ادامه دوره در پروژه نهایی استفاده می‌شود. هدف این است که مفهوم جلسه فقط به یک مثال آموزشی محدود نماند و بتوانید آن را در یک مسئله واقعی به کار بگیرید. </p> </div>

ویدئو هنوز آماده نشده است ویدئوی آموزشی این جلسه به‌زودی اضافه خواهد شد.

<div class='lesson-rich-content'> <h2>جلسه 8: Validation و مدیریت خطا؛ API باید پاسخ قابل فهم بدهد</h2> <h3>تمرکز جلسه</h3> <p> اعتبارسنجی ورودی، خطاهای کسب‌وکار و طراحی Responseهای استاندارد برای خطا. </p> <h3>چرا این مبحث مهم است؟</h3> <p> مصرف‌کننده API باید بداند چرا درخواست رد شده است. </p> <h3>در عمل چه کار می‌کنیم؟</h3> <p> ثبت سفارش را با Validation کامل می‌کنید و برای ورودی نامعتبر پاسخ 400 قابل فهم تولید می‌کنید. </p> <h3>اشتباه رایج</h3> <p> نمایش Stack Trace یا Exception داخلی به کاربر. </p> <h3>چالش جلسه</h3> <p> برای ثبت سفارش چند خطای مستقل تعریف کنید و برای هرکدام Response مشخص طراحی کنید. </p> <h3>ارتباط با پروژه نهایی</h3> <p> این مبحث در ادامه دوره در پروژه نهایی استفاده می‌شود. هدف این است که مفهوم جلسه فقط به یک مثال آموزشی محدود نماند و بتوانید آن را در یک مسئله واقعی به کار بگیرید. </p> </div>

ویدئو هنوز آماده نشده است ویدئوی آموزشی این جلسه به‌زودی اضافه خواهد شد.

<div class='lesson-rich-content'> <h2>جلسه 9: لایه سرویس؛ جدا کردن منطق کسب‌وکار از Endpoint</h2> <h3>تمرکز جلسه</h3> <p> تفکیک مسئولیت Controller، Service و Data Access. </p> <h3>چرا این مبحث مهم است؟</h3> <p> وقتی منطق کسب‌وکار از HTTP جدا باشد، تست و استفاده مجدد ساده‌تر می‌شود. </p> <h3>در عمل چه کار می‌کنیم؟</h3> <p> یک Feature کامل را از Endpoint تا Service و DbContext با مسئولیت‌های مشخص پیاده می‌کنید. </p> <h3>اشتباه رایج</h3> <p> ساختن لایه‌های متعدد بدون مسئولیت مشخص. </p> <h3>چالش جلسه</h3> <p> یک Feature ثبت سفارش را تحلیل کنید و مرز Endpoint و Service را مشخص کنید. </p> <h3>ارتباط با پروژه نهایی</h3> <p> این مبحث در ادامه دوره در پروژه نهایی استفاده می‌شود. هدف این است که مفهوم جلسه فقط به یک مثال آموزشی محدود نماند و بتوانید آن را در یک مسئله واقعی به کار بگیرید. </p> </div>

ویدئو هنوز آماده نشده است ویدئوی آموزشی این جلسه به‌زودی اضافه خواهد شد.

<div class='lesson-rich-content'> <h2>جلسه 10: احراز هویت و کنترل دسترسی</h2> <h3>تمرکز جلسه</h3> <p> Authentication، Authorization، Claim، Role و Policy. </p> <h3>چرا این مبحث مهم است؟</h3> <p> شناخت تفاوت هویت و مجوز دسترسی برای ساخت API امن ضروری است. </p> <h3>در عمل چه کار می‌کنیم؟</h3> <p> Endpoint مدیریت را محافظت می‌کنید و دسترسی را بر اساس Role یا Policy محدود می‌کنید. </p> <h3>اشتباه رایج</h3> <p> احراز هویت موفق به معنی دسترسی به همه منابع نیست. </p> <h3>چالش جلسه</h3> <p> دو Policy متفاوت برای کاربران عادی و مدیر ایجاد کنید. </p> <h3>ارتباط با پروژه نهایی</h3> <p> این مبحث در ادامه دوره در پروژه نهایی استفاده می‌شود. هدف این است که مفهوم جلسه فقط به یک مثال آموزشی محدود نماند و بتوانید آن را در یک مسئله واقعی به کار بگیرید. </p> </div>

ویدئو هنوز آماده نشده است ویدئوی آموزشی این جلسه به‌زودی اضافه خواهد شد.

<div class='lesson-rich-content'> <h2>جلسه 11: Logging، Configuration و مدیریت Secretها</h2> <h3>تمرکز جلسه</h3> <p> Configuration، محیط‌های مختلف اجرا، Logging ساختاریافته و جداسازی اطلاعات حساس. </p> <h3>چرا این مبحث مهم است؟</h3> <p> در محیط واقعی باید بتوان رفتار سرویس را بررسی کرد، بدون افشای اطلاعات حساس. </p> <h3>در عمل چه کار می‌کنیم؟</h3> <p> برای عملیات سفارش Logging اضافه می‌کنید و Connection String و Secretها را از کد جدا می‌کنید. </p> <h3>اشتباه رایج</h3> <p> ثبت Token، Password یا اطلاعات شخصی کاربران در Log. </p> <h3>چالش جلسه</h3> <p> برای یک عملیات حساس چند Log مناسب طراحی کنید. </p> <h3>ارتباط با پروژه نهایی</h3> <p> این مبحث در ادامه دوره در پروژه نهایی استفاده می‌شود. هدف این است که مفهوم جلسه فقط به یک مثال آموزشی محدود نماند و بتوانید آن را در یک مسئله واقعی به کار بگیرید. </p> </div>

ویدئو هنوز آماده نشده است ویدئوی آموزشی این جلسه به‌زودی اضافه خواهد شد.

<div class='lesson-rich-content'> <h2>جلسه 12: مستندسازی API با OpenAPI</h2> <h3>تمرکز جلسه</h3> <p> تعریف قرارداد Endpointها، Request و Response و ارائه مستندات قابل استفاده. </p> <h3>چرا این مبحث مهم است؟</h3> <p> مستندات خوب زمان اتصال سرویس‌های دیگر به API را کاهش می‌دهد. </p> <h3>در عمل چه کار می‌کنیم؟</h3> <p> Endpointهای پروژه را مستند می‌کنید و نمونه Request و Response ارائه می‌دهید. </p> <h3>اشتباه رایج</h3> <p> مستندسازی فقط فهرست کردن URLها بدون تعریف قرارداد ورودی و خروجی. </p> <h3>چالش جلسه</h3> <p> مستندات کامل یکی از Featureها را بنویسید. </p> <h3>ارتباط با پروژه نهایی</h3> <p> این مبحث در ادامه دوره در پروژه نهایی استفاده می‌شود. هدف این است که مفهوم جلسه فقط به یک مثال آموزشی محدود نماند و بتوانید آن را در یک مسئله واقعی به کار بگیرید. </p> </div>

ویدئو هنوز آماده نشده است ویدئوی آموزشی این جلسه به‌زودی اضافه خواهد شد.

<div class='lesson-rich-content'> <h2>جلسه 13: تست سناریوهای حیاتی API</h2> <h3>تمرکز جلسه</h3> <p> تست منطق سرویس، رفتار Endpointها و انتخاب سناریوهای مهم. </p> <h3>چرا این مبحث مهم است؟</h3> <p> تست خوب فقط برای پیدا کردن Bug نیست؛ قرارداد رفتاری سیستم را مشخص می‌کند. </p> <h3>در عمل چه کار می‌کنیم؟</h3> <p> برای ثبت سفارش، Validation، دسترسی غیرمجاز و سناریوهای موفق چند تست مشخص طراحی می‌کنید. </p> <h3>اشتباه رایج</h3> <p> تمرکز صرف بر تست مسیر موفق. </p> <h3>چالش جلسه</h3> <p> برای Feature ثبت سفارش حداقل پنج سناریو تعریف کنید. </p> <h3>ارتباط با پروژه نهایی</h3> <p> این مبحث در ادامه دوره در پروژه نهایی استفاده می‌شود. هدف این است که مفهوم جلسه فقط به یک مثال آموزشی محدود نماند و بتوانید آن را در یک مسئله واقعی به کار بگیرید. </p> </div>

ویدئو هنوز آماده نشده است ویدئوی آموزشی این جلسه به‌زودی اضافه خواهد شد.

<div class='lesson-rich-content'> <h2>جلسه 14: Performance و امنیت عملی؛ از Query تا کنترل درخواست</h2> <h3>تمرکز جلسه</h3> <p> بررسی Queryهای اضافی، کاهش داده دریافتی، Cache، Rate Limiting و اصول امنیتی. </p> <h3>چرا این مبحث مهم است؟</h3> <p> عملکرد و امنیت معمولاً پس از اضافه شدن کاربران و داده‌های بیشتر اهمیت جدی پیدا می‌کنند. </p> <h3>در عمل چه کار می‌کنیم؟</h3> <p> یک Query کند را بررسی می‌کنید، داده غیرضروری را حذف می‌کنید و نقاط حساس API را بررسی می‌کنید. </p> <h3>اشتباه رایج</h3> <p> بهینه‌سازی زودهنگام یا اضافه کردن Cache بدون شناخت Bottleneck. </p> <h3>چالش جلسه</h3> <p> یک Endpoint را تحلیل کنید و سه گلوگاه احتمالی آن را پیدا کنید. </p> <h3>ارتباط با پروژه نهایی</h3> <p> این مبحث در ادامه دوره در پروژه نهایی استفاده می‌شود. هدف این است که مفهوم جلسه فقط به یک مثال آموزشی محدود نماند و بتوانید آن را در یک مسئله واقعی به کار بگیرید. </p> </div>

ویدئو هنوز آماده نشده است ویدئوی آموزشی این جلسه به‌زودی اضافه خواهد شد.

<div class='lesson-rich-content'> <h2>جلسه 15: پروژه نهایی؛ ساخت یک Web API واقعی</h2> <h3>تمرکز جلسه</h3> <p> یکپارچه‌سازی Routing، DI، DTO، EF Core، Validation، معماری، امنیت، Logging، تست و مستندسازی. </p> <h3>چرا این مبحث مهم است؟</h3> <p> پروژه نهایی مشخص می‌کند آیا می‌توانید مفاهیم مختلف را به یک سیستم منسجم تبدیل کنید. </p> <h3>در عمل چه کار می‌کنیم؟</h3> <p> API مدیریت فروشگاه را از مدل داده تا احراز هویت، تست، مستندات و آماده‌سازی انتشار کامل می‌کنید. </p> <h3>اشتباه رایج</h3> <p> ساخت پروژه فقط برای اینکه Endpointها پاسخ بدهند. </p> <h3>چالش جلسه</h3> <p> یک Web API کامل بسازید و قبل از انتشار، قرارداد، امنیت و سناریوهای خطا را بازبینی کنید. </p> <h3>ارتباط با پروژه نهایی</h3> <p> این مبحث در ادامه دوره در پروژه نهایی استفاده می‌شود. هدف این است که مفهوم جلسه فقط به یک مثال آموزشی محدود نماند و بتوانید آن را در یک مسئله واقعی به کار بگیرید. </p> </div>

ویدئو هنوز آماده نشده است ویدئوی آموزشی این جلسه به‌زودی اضافه خواهد شد.