بخش سوم: آموزش پیشرفته ASP.NET Core
۱- آشنایی با Middlewareها و مدیریت درخواست:
- Service چیست و چگونه باید ایجاد و مدیریت شود؟
- Middleware چیست؟
- افزودن Middleware به چرخه پردازش درخواست
- ایجاد اولین Middleware و آشنایی با چگونگی ایجاد آن
- استفاده از Middlewareها برای مدیریت خطا
- آشنایی با DeveloperExceptionPage
- معرفی ExceptionHandlerMiddleware
- StatuCodePageMiddleware چیست و چرا از آن استفاده میکنیم؟
۲-آشنایی با مسیریابی در Net Core:
- معرفی URL routing
- افزودن Rout Middleware
- آشنایی با الگوهای مسیریابی
- تعریف متغیر برای الگوها
- ایجاد آدرس از روی مسیر
- تعریف مقدار پیش فرض برای متغیرهای داخل مسیر
- ایجاد شرط برای متغیرها
- آشنایی با Environment و تنظیمات مرتبط با آن
- آشنایی با Configuration و نحوه استفاده از آن
- آشنایی با User Secret
- کار با log در Net core
- جایگرین logger توکار با third party logger
- مدیریت بستههای client side
- فعال سازی و استفاده از Cookieها
- Session چیست و چه کاربردی دارد؟
- فعال سازی Session
- ثبت و واکشی دادهها در Session
- آشنایی با Cache و کاربردهای آن
- ثبت و واکشی داده ها در Cache
- پیاده سازی Distributed cache در NET Core
- فعال سازی و انجام تنظیمات HTTPS
۳- تزریق وابستگی در Net Core:
- آشنایی با وابستگی و مشکلات آن
- معرفی اصل معکوس سازی وابستگی
- آشنایی با تزریق وابستگی
- تزریق وابستگی در Middlewareها
- دریافت وابستگیها از HttpContext
- تعیین طول عمر Serviceها
- زنجیره وابستگیها و تنظیم آنها
- چندین پیاده سازی برای یک سرویس
۴- آشنایی با Restful web serviceها:
در سالهای گذشته همیشه تمرکز دورههایی که برگزار میکردیم روی پیاده سازی کامل برنامه به کمک MVC بود و در کنار آن به عنوان بخش تکمیلی راجع به APIها صحبت میکردیم. اما طی چند سال گذشته مدل توسعه نرمافزارها تغییرات بسیاری داشته و کاربرد APIها بیش از پیش پر اهمیت شده است. به همین دلیل در این قسمت قصد داریم زمان بیشتری برای آشنایی با روشهای توسعه APIهای قوی و استاندارد صرف کنیم و APIهایی سریع و امن برای استفاده در انواع نرمافزارها تولید کنیم.
- معرفی مدل بلوغ ریچاردسون در طراحی API
- آشنایی با Restful web service
- ایجاد یک سرویس با استفاده از Controllerها
- آشنایی با Controller پایه
- معرفی Controller attribute
- آشنایی با Action Resultها
- دسترسی به متغیرهای ارسال شده به کمک Model Binding
- ایجاد Actionهای Async
- تنظیم نحوه دریافت دادههای ورودی
- آشنایی با Http Patch
- نحوه Content Formatting
- آشنایی با Content Negotiation و کارکرد آن
- تنظیم تبادل دادهها به کمک XML
- آشنایی با Open API و Swagger
۵- کار با Viewها:
- ایجاد و کار با HTML Controller
- آشنایی با Razor
- ساخت اولین Razor view
- آشنایی با نحوه انتخاب Viewها
- معرفی Directiveها
- آشنایی با Razor Code Block
- معرفی View bag
- Temp Dataچیست و چه کاربردی دارد؟
- کار با Layout page
- Layout Section چیست؟
- View startچیست و چه کاربردی دارد؟
- View Import چیست و استفاده از آن چگونه است؟
- Partial View چیست؟
- آشنایی با Content Encoding
۶- کار با Razor Page:
- معرفی Razor Page
- آشنایی با URL Routing convention
- معرفی Page Model
- معرفی Page View
- مسیر یابی در Razor Page
- استفاده از Code Behind
- آشنایی با Action Result در Razor Page
- ایجاد Layout برای Razor Page
- Partial viewها و استفاده در Razor page
۷-کار با View Component:
- View Componentچیست؟
- ایجاد یک View Component
- آشنایی با روشهای افزودن View Component به صفحه
- آشنایی با View Component Result
- دریافت داده ها هنگام اجرا
- ایجاد یک Hybrid View Component
۸-کار با Tag Helperها:
- Tag Helper چیست؟
- ایجاد یک Tag Helper اختصاصی
- دریافت دادههای هنگام اجرا در Tag Helperها
- ثبت یک Tag helper و آمادگی برای کار
- آشنایی با tag Helperها برای کار با JavaScript و CSS
- کار با تصاویر
- کار با Environmentها به کمک Tag Helperها
- Cache کردن دادهها با Tag Helper
- کار با Form Tag Helperها
۹- آشنایی با Model Binding و Model Validation:
- معرفی Model Binding و کاربرد آن
- آشنایی با Simple Data Model Binding
- Complex Data Model Binding
- Binding Array
- انتخاب منبع داده هنگام اتصال دادهها
- دریافت دادهها از Header
- دریافت دادهها از Body
- چرا به Validation نیاز داریم؟
- Validation مستقیم دادهها
- نمایش نتیجه Validation
- نمایش خطا در سطح مدل
- نمایش خطا در سطح خاصیت
- تعیین خطا به کمک Model Metadata
- اجرای Validation سمت کاربر
- اجرای Remote Validation
۱۰- آشنایی با Filterها و کاربردهای آنها:
- Filter چیست؟
- استفاده از Filterها در Razor Page
- آشنایی با نحوه ایجاد یک Filter اختصاصی
- آشنایی با Action Filterها
- معرفی Page Filter و کاربرد آن
- Result Filter چیست و چگونه کار میکند؟
- تزریق وابستگی در Filterها
- آشنایی با طول عمر و حلقه کارکرد Filterها
- آشنایی با ترتیب اجرای Filterها
۱۱- آشنایی با Blazor:
به جرات میتوان گفت که یکی از کابوسهای برنامهنویسهایی که با زبانهایی مثل سی شارپ کار توسعه انجام داده اند، کار کردن با جاواسکریپت است. قطعا جاوا اسکریپت یکی از بهترین انتخابها برای هر توسعه دهندهای است. اما یادگیری عمیق و استفاده صحیح از آن کار سادهای نیست. خبر خوب اینکه از این به بعد برای داشتن برنامههای قوی سمت کلاینت دیگر فقط به جاوااسکریپت محدود نیستیم. از این به بعد با C# هم کدهای سمت سرور خود را توسعه میدهیم و هم UI بسیار قوی و پیشرفته تولید خواهیم کرد.
- معرفی Blazor Server
- مزایا و معایب Blazor Server
- آشنایی با Blazor Event و Data Binding
- مدیریت Eventهای دریافتی از چندین Element مختلف
- کار با Data Binding
- تعریف Component
- تعیین Componentها با Attribute
- تعریف و استفاده از Custom Event
- مدیریت خطا در Blazor
- مسیر یابی در Blazor
- تعریف Layout و استفاده از آن
- اجرای توابع جاوا اسکریپت
- اجرای توابع به کمک جاوا اسکریپت
- استفاده از EF Core با Blazor
- Web Assembly چیست؟
- ایجاد یک Shared Project
۱۲- معرفی ASP.Net Identity:
- آشنایی با Net Identity
- افزودن Net Identity به پروژه
- ایجاد پایگاه داده برای مدیریت دادههای Net Identity
- مدیریت کاربران در Net Identity
- ساخت و ویرایش کاربران
- مشاهده لیست کاربران موجود در سامانه
- حذف یک کاربر از Net Identity
- کار با Role در Net Identity
- ایجاد ویرایش و حذف Roleها در Net Identity
- پیاده سازی روال Login و Logout در Net Identity
- پیاده سازی Authorization در Net Identity
- مدیریت Access Token در Net Identity
- پیاده سازی Token Authentication در Net Identity
۱۳- آشنایی با امینت و حملات متداول در وب:
قطعا در دنیای روز نرمافزار امنیت یکی از مهمترین ویژگیهای هر سیستمی است. تصور از دست رفتن اطلاعات بانکی کاربران، یا دسترسی به اطلاعات شخصی افراد از طریق یک سامانه هم کابوس بزرگی است چه برسد به اینکه همچین اتفاقی در نرمافزاری که در حال توسعه آن هستیم رخ دهد. قطعا برای مواجهه با هر مشکلی ابتدا باید منشا آن را شناسایی کنیم. به همین دلیل در این قسمت در مورد انواع حملات روی نرمافزارها صحبت میکنیم. بعد از شناسایی انواع حملات در مورد راهکارهای مقابله با این حملات و امکاناتی که ASP.NET Coreدر اختیار ما قرار میدهد صحبت میکنیم و در انتها کاستیهایی که فریم ورک برای رسیدن به کمال امنیت را دارد بررسی کرده و راهکارهایی جهت پوشش این کاستیها ارائه خواهیم کرد.
- اهمیت امنیت در دنیای وب
- آشنایی با SSL و مزایای آن
- معرفی HSTS
- آشنایی با SQL Injection و مغابله با آن
- معرفی Cross Site Request Forgery
- XSS Attack چیست؟
- CSP چیست؟
- معرفی Open Redirection Attack
- آشنایی با Click Jacking
- Corse چیست و چه کاربردی دارد؟
- معرفی Data Protection API
- Machine Key
- آشنایی با Time Limited Data Protector
- معرفی Secret Manager
۱۴- مباحث پیشرفته در ASP.NET Core:
- آشنایی با مانیتورینگ و رفع خطای برانامهها
- استفاده از logging در برنامهها به صورت کارا
- آشنایی با سطوح Log در NET Core
- نگهداری Log در محل دلخواه
- استفاده از Serilog در برنامه
- آشنایی با Structured Logging
- آشنایی با IHttpClientFactory
- ایرادات متداول در HttpClient
- ایجاد HttpClient به کمک HttpClientFactory
- آشنایی با TypedClient
- ایجاد HttpMessageHandler اختصاصی
- آشنایی با Background Task
- اجرای Background Task به کمک IHostedService
- اجرای زماندار کارها
- اجرای Worker Service در محیط عملیاتی
۱۵- تست برنامههای ASP.NET Core:
اگر از توسعه دهندههای قدیمی ASP.NET MVC باشید شاید به یاد داشته باشید که در روزهایی که اولین نسخه از این فریمورک معرفی شده بود یکی از نکات برجسته آن تست پذیری بود. اگر خیلی قدیمی نباشید ولی مطالعات به روزی داشته باشید هم حتما میدانید که پر استفاده ترین تکنیک فنی چابک سال 2020 چیزی جز Unit Testing نبود. پس اگر بخواهیم روشهای فنی چابک روز را در برنامههای خود استفاده کنیم قطعا باید قبل از هرکاری سراغ Unit Testing برویم. به همین خاطر در این قسمت با ابزارها و روشهای Unit Testing در ASP.NET Core آشنای میشویم.
- آشنایی با تست نرمافزار
- معرفی xUnit
- ایجاد اولین پروژه تست
- اجرای تستها به کمک dotnet test
- اجرای تستها در محیط ویژوال استودیو
- آشنایی با Fact و Theory
- تست Middlewareها
- آشنایی با نحوه تست Controllerها
- آشنایی با WebApplicationFactory
- جایگزینی دیتابیس با نسخه In Memmory
۱۶- SignalR:
امروزه به روز رسانی اطلاعات به صورت بلادرنگ نیاز هر نرمافزار مدرنی است. کافیست کمی به دور و بر خود نگاه کنیم تا مثالهای زیادی پیدا کنیم. نمایش لحظه ای قیمت سهام در یک نرمافزار معاملات آنلاین بورسی، نمایش محل لحظه ای رانند در یک نرمافزار تاکسی یاب و چت کردن با دوستان و آشنایان همگی مثالهایی از ارتباط های بلادرنگ هستند. اما برای داشتن همچین امکاناتی نیاز به دانش بسیار زیاد و پیاده سازیهای پیچیدهای داریم. خبر خوب اینکه SignalR پیچیدگیهای پیاده سازی این کار را از بین برده و بستری فوق پیشرفته برای پیاده سازی نرمافزارهای بلادرنگ را در اختیار ما قرار میدهد که در این قسمت به بررسی کامل آن خواهیم پرداخت.
- آشنایی با SignalR
- مزایای SignalR
- آشنایی با SignalR Transport
- کار با Hub
- ایجاد یک Hub
- آشنایی با Context, Client و Group
- نگهداری connection
- تعیین دسترسی در SignalR
- ایجاد یک Client در C#
- ایجاد یک Client در Javascritp
۱۷- معرفی Identity Server 4:
یکی از مشکلاتی که همیشه به عنوان یک برنامه نویسبا آن سر و کار داشتم تنظیمات دسترسی به برنامهها بود. این مشکل زمانی بیشتر نمود پیدا میکرد که در یک سازمان با چندین برنامه قرار بود کار کنیم و باید راهکاری ارائه میکردیم که بتوان در برنامه های مختلف با یک بار لاگین کردن کار کرد. پیاده سازی های مختلفی برای این کار وجود داشت که کار سخت و زمان گیری بود. اما آشنایی با Identity Serverیعنی خداحافظی با تمام این دردسرها.
- Identity server چیست؟
- نصب و راه اندازی Identity Server
- آشنایی با توکن و نحوه دریافت آن
- برقراری امنیت APIها به کمک Identity Server
- آشنایی با Grant Type
- آشنایی با انواع Flow و کاربردهای آنها
۱۸- کار با gRPC:
یکی از به روزترین روشهای برقراری ارتباط بین سرویسها مبتنی بر قرارداد gRPC است که سرعت بسیار بالایی نیز دارد و این روزها بخصوص هنگام توسعه میکروسرویسها بسیار مورد استفاده قرار میگیرد. اما یادگیری کارکردن با gRPC و تعیین زمان صحیح استفاده از آن میتواند درد سر بزرگی باشد. در این قسمت با هم با gRPC آشنا میشویم و تمامی نیازمندیهایی که برای کار کردن با آن داریم را بررسی میکنیم و در نهایت سناریوهایی که استفاده از این روش ارتباطی برای آن مناسب است با هم بررسی خواهیم کرد.
- مقدمه ای بر سیستمهای توزیع شده
- gRPC چیست؟
- نقش gRPC در توسعه سیستمهای توزیع شده
- قراردادها و نقش Protocol Buffer
- افزودن gRPC به پروژه
- آشنایی با ProtoBuff
- آشنایی با نحوه پیاده سازی Client برای کار با gRPC
- نحوه برقراری امنیت هنگام کار با gRPC