بوتکمپ بکاند NET 8. - بررسی Modulith ،VSA ،DDD ،CQRS و Outbox
✅ سرفصل و جزئیات آموزش
آنچه یاد خواهید گرفت:
- معماری مونولیت ماژولار (Modulith)
- معماری Vertical Slice (VSA)
- طراحی دامنه محور (DDD)
- تفکیک مسئولیت فرمان و کوئری (CQRS)
- الگوی Outbox برای پیامرسانی قابل اعتماد
- CQRS (تفکیک مسئولیت فرمان و کوئری) و معماری Vertical Slice برای توسعه ماژولها
- ارتباط از طریق فراخوانی متدهای درونفرآیندی و APIs عمومی و استفاده از RabbitMQ برای ارتباطات رویداد محور
- ایمنسازی APIs با Keycloak با استفاده از OpenID Connect و توکنهای حامل
- ASP.NET Core Minimal API و جدیدترین قابلیتهای NET 8. و C# 12
- پیادهسازی معماری Vertical Slice با پوشههای ویژگی
- الگوهای DDD و CQRS با استفاده از کتابخانه MediatR با پیروی از بهترین شیوهها
- استفاده از رویدادهای دامنه و رویدادهای یکپارچهسازی هنگام رویداد UpdatePriceChanged
- استفاده از Entity Framework Core با رویکرد Code First و مهاجرتها روی پایگاه داده PostgreSQL
- مباحث Cross-cutting شامل لاگ کردن با Serilog و اعتبارسنجی با رفتارهای پایپلاین MediatR و استثناها و صفحهبندی
- استفاده از Redis به عنوان کش توزیع شده در کنار پایگاه داده PostgreSQL
- استقرار الگوهای Proxy و Decorator و Cache-aside
- ارتباطات همزمان بین ماژولهای کاتالوگ و سبد خرید با فراخوانی متدهای درونفرآیندی (APIs عمومی)
- ارتباطات غیرهمزمان بین ماژولها با RabbitMQ و MassTransit
- توسعه ماژول هویت کاربر با احراز هویت Keycloak
- جریانهای OAuth2 + OpenID Connect با Keycloak
- الگوی Outbox برای پیامرسانی قابل اعتماد با یوزکیس BasketCheckout
- انتشار BasketCheckoutEvent در RabbitMQ از طریق کتابخانه MassTransit و دریافت آن در ماژول سفارشات
- مهاجرت به میکروسرویسها - تبدیل ماژولهای فروشگاه اینترنتی به میکروسرویسها با الگوی Strangler Fig
پیشنیازهای دوره
- مبانی #C و برنامهنویسی
توضیحات دوره
در این بوتکمپ یاد میگیرید چگونه با استفاده از فناوریهای پیشرفته و الگوهای معماری مدرن، اپلیکیشنهایی قوی، مقیاسپذیر و قابل نگهداری بسازید.
ما موارد زیر را توسعه خواهیم داد:
- معماری مونولیت ماژولار (Modulith)
- معماری Vertical Slice (VSA)
- طراحی دامنه محور (DDD)
- تفکیک مسئولیت فرمان و کوئری (CQRS)
- الگوی Outbox برای پیامرسانی قابل اعتماد
ما از مبانی شروع میکنیم و به صورت تدریجی عمیقتر میشویم و هر موضوع را بررسی میکنیم. شما تجربه عملی ساخت یک اپلیکیشن کامل Monolith ماژولار فروشگاه اینترنتی را به دست میآورید و قابلیتهایی مانند CQRS و الگوی Outbox را پیادهسازی میکنید.
- ما از معماریهای CQRS (تفکیک مسئولیت فرمان و کوئری) و Vertical Slice برای توسعه ماژولها پیروی خواهیم کرد.
- ماژولها از طریق فراخوانی متدهای درونفرآیندی و APIs عمومی با هم ارتباط برقرار میکنند و از RabbitMQ برای ارتباطات رویداد محور استفاده خواهند کرد.
- ما APIs خود را با Keycloak و با استفاده از OpenID Connect و توکنهای حامل ایمن میکنیم.
- الگوی Outbox را برای پیامرسانی قابل اعتماد بین ماژولها پیادهسازی خواهیم کرد.
در کنار اینها، ماژولها و بخشهای زیر را توسعه خواهید داد:
ماژول کاتالوگ که شامل موارد زیر است:
- استفاده از Asp.Net Core Minimal API و جدیدترین قابلیتهای NET 8. و C# 12
- توسعه پیادهسازی معماری Vertical Slice با پوشههای ویژگی
- توسعه الگوهای DDD و CQRS با استفاده از کتابخانه MediatR و رعایت بهترین شیوهها
- استفاده از رویدادهای دامنه و رویداد یکپارچهسازی هنگام رویداد UpdatePriceChanged
- استفاده از Entity Framework Core با رویکرد Code First و مهاجرتها روی پایگاه داده PostgreSQL
- استفاده از Carter برای ارائه اندپوینتهای Minimal API
- مباحث Cross-cutting شامل لاگ کردن با Serilog، اعتبارسنجی با رفتارهای پایپلاین MediatR، استثناها و صفحهبندی
ماژول سبد خرید که شامل موارد زیر است:
- مشابه ماژول کاتالوگ - توسعه پیادهسازی معماری DDD و CQRS و Vertical Slice
- استفاده از Redis به عنوان کش توزیع شده در کنار پایگاه داده PostgreSQL
- توسعه و پیادهسازی الگوهای Proxy و Decorator و Cache-aside
- انتشار BasketCheckoutEvent در RabbitMQ از طریق کتابخانه MassTransit
- پیادهسازی الگوی Outbox برای پیامرسانی قابل اعتماد با یوزکیس BasketCheckout
ارتباط بین ماژولها:
- ارتباطات همزمان بین ماژولهای کاتالوگ و سبد خرید با فراخوانی متدهای درونفرآیندی (APIs عمومی)
- ارتباطات غیرهمزمان بین ماژولها با RabbitMQ و MassTransit برای UpdatePrice بین ماژولهای کاتالوگ و سبد خرید
ماژول هویت که شامل موارد زیر است:
- توسعه ماژول هویت کاربر با احراز هویت Keycloak
- جریانهای OAuth2 + OpenID Connect با Keycloak
- راهاندازی Keycloak در فایل Docker-compose به عنوان ارائهدهنده هویت و یک سرویس پشتیبان
- ایمنسازی ماژولهای فروشگاه اینترنتی با Keycloak OpenID Connect در AspNet
- توکن JwtBearer برای OpenID Connect با هویت Keycloak
ماژول سفارشات که شامل موارد زیر است:
- مشابه ماژولهای کاتالوگ و سبد خرید - توسعه پیادهسازی DDD و CQRS و معماری Vertical Slice
- پیادهسازی الگوی Outbox برای پیامرسانی قابل اعتماد با یوزکیس BasketCheckout
در نهایت، درباره موارد زیر صحبت خواهیم کرد:
مهاجرت به میکروسرویسها - تبدیل ماژولهای فروشگاه اینترنتی به میکروسرویس با الگوی Strangler Fig
این دوره فقط یادگیری NET. نیست؛ بلکه یک بررسی عمیق از دنیای Monoliths ماژولار با معماری Vertical-Slice و طراحی دامنه محور (DDD) و CQRS و الگوهای معماری پیشرفته برای توسعه بکاند است.
این دوره برای چه کسانی مناسب است؟
- توسعهدهندگان NET. از سطح مبتدی تا ارشد که به فناوریهای بکاند NET. با معماری Monolith ماژولار علاقهمند هستند.
بوتکمپ بکاند NET 8. - بررسی Modulith ،VSA ،DDD ،CQRS و Outbox
-
مقدمه 10:07
-
پیشنیازها، منبع کد و اسلایدهای دوره 02:27
-
مشاهده اپلیکیشن نهایی (نیازمند پیکربندیهای هویت - فقط برای نمایش) 07:27
-
ساختار کد پروژه 05:38
-
معماریها، الگوها، کتابخانهها و بهترین شیوههای Monolith ماژولار 05:22
-
چگونه این دوره را دنبال کنیم؟ (جریان دوره و روش یادگیری) 04:08
-
Monolithic سنتی (معماری Monolithic) چیست؟ 02:38
-
اشکال معماری Monolithic سنتی چیست؟ 03:24
-
وابستگی به فناوری و چرخه ترس در معماری Monolithic سنتی 02:10
-
گودال گل 01:18
-
آزمون Monolithic None
-
میکروسرویسها و معماری میکروسرویس چه هستند؟ 03:35
-
اشکال معماری میکروسرویسها چیست؟ 05:29
-
ضدالگوی میکروسرویسها - Monolith توزیع شده 04:25
-
کیس آمازون - معماری مجدد از میکروسرویسهای توزیع شده به یک Monolithic 05:02
-
آزمون میکروسرویسها None
-
معماری Monolith ماژولار (Modulith) چیست؟ 04:19
-
چرا Monolith ماژولار؟ مزیتها نسبت به میکروسرویسها؟ 02:58
-
رویکرد Monolith First از Martin Fowler و Sam Newman 02:47
-
نقطه شروع برای میکروسرویسها - گذار تدریجی با ریفکتور کردن افزایشی 05:43
-
معماری Monolith ماژولار در Shopify 05:14
-
تجزیه ماژولهای EShop - ماژولهای کاتالوگ، سبد خرید، هویت و سفارشات 04:10
-
آزمون Monolith ماژولار None
-
مقدمه - ایجاد ساختار راهحل پروژه Monolith ماژولار فروشگاه اینترنتی 02:07
-
ایجاد مخزن GitHub برای معماری Monolith ماژولار فروشگاه اینترنتی 03:42
-
ایجاد راهحل خالی جدید - Monolith ماژولار فروشگاه اینترنتی 03:21
-
ساختار پوشهای Monolith ماژولار - Bootstrapper و Modules و Shared 06:11
-
ایجاد پروژه Bootstrapper Api 04:26
-
پیکربندی پروژه وب خالی به عنوان Bootstrapper Api برای Monolith ماژولار 04:35
-
ایجاد پوشههای ماژولها بر اساس تحلیل Bounded Context در DDD 01:38
-
معماری خارجی در برابر معماری داخلی در Monolith ماژولار 02:33
-
معماری Vertical Slice 04:39
-
معماری تمیز 03:44
-
Vertical Slice در برابر معماری تمیز 03:03
-
ایجاد پروژههای ماژول به صورت کتابخانه کلاس 04:04
-
الگوی کرنل مشترک در DDD 01:41
-
ایجاد پروژه کتابخانه کلاس کرنل مشترک برای همه ماژولها 02:42
-
وابستگیهای پروژه مشترک به پروژههای ماژول 03:35
-
وابستگیهای ماژول به پروژه Bootstrapper Asp.Net Api 02:50
-
مقدمه - اتصال وابستگیهای بین ماژولها (مدیریت DI ماژولها) 01:57
-
مدیریت تزریق وابستگی در Asp.net و Program.cs 03:59
-
اتصال وابستگیهای بین ماژولها 02:45
-
توسعه متد افزونه AddCatalogModule در CatalogModule.cs 06:17
-
رجیستر وابستگیهای کاتالوگ در Program.cs 02:09
-
توسعه متدهای افزونه AddBasketModule و AddOrderingModule 02:32
-
رجیستر وابستگیهای سبد خرید و سفارشات در Program.cs 01:27
-
میانافزارهای Asp.net و پایپلاین درخواست HTTP 04:49
-
پیکربندی پایپلاینهای درخواست HTTP برای ماژولها در Program.cs 02:11
-
بررسی کلاس وب اپلیکیشن، استفاده از انتزاعها و نصب پکیجهای مورد نیاز 04:29
-
توسعه متد افزونه UseCatalogModule برای پیکربندی درخواست HTTP ماژول 03:23
-
یکپارچهسازی UseCatalogModule در Program.cs 01:09
-
توسعه متد افزونه UseBasketModule و UseOrderingModule برای پیکربندی ماژول 01:34
-
یکپارچهسازی متد افزونه UseBasketModule و UseOrderingModule در Program.cs 01:16
-
افزودن GlobalUsings.cs برای هر پروژه جهت اجتناب از Redundant با استفاده از دستورات 02:00
-
مقدمه - اولین ماژول - ماژول کاتالوگ با معماری Vertical Slice 01:20
-
تحلیل دامنه ماژول کاتالوگ - مدلها، UCs و Rest Apis و پایگاه دادهها 03:05
-
تحلیل فنی ماژول کاتالوگ - معماریها، الگوها، کتابخانهها، پوشهها 04:16
-
روش توسعه - Shared -> Modules -> API 03:29
-
مقدمه - توسعه دامنه مشترک برای انتزاغ تاکتیکی DDD 01:00
-
طراحی دامنه محور (DDD) 03:25
-
طراحی دامنه محور تاکتیکی - انتیتیها، آبجکتهای ارزش، تجمیعها و Rooots 03:49
-
توسعه انتزاعهای DDD (انتیتی، تجمیع و DomainEvent) در کتابخانه مشترک 03:45
-
توسعه رابط IDomainEvent در انتزاغ تاکتیکی DDD با استفاده از MediatR 03:57
-
توسعه کلاسهای تجمیع در انتزاع تاکتیکی DDD 06:23
-
مقدمه - توسعه دامنه کاتالوگ با مدلهای انتیتی دامنه محصول 01:29
-
توسعه مدلهای انتیتی دامنه محصول در مدلهای دامنه ماژول کاتالوگ 03:15
-
انتیتیهای مدل Anemic Domain در برابر Rich Domain در DDD 02:48
-
توسعه انتیتی مدل Rich Domain در DDD برای انتیتی محصول 05:53
-
رویدادهای دامنه در DDD و دامنه در برابر رویداد یکپارچهسازی 05:46
-
توسعه رویداد دامنه Created و Updated محصول در ماژول کاتالوگ 03:23
-
ایجاد رویدادهای دامنه ProductCreated و ProductPriceChanged در ماژول کاتالوگ 04:25
-
مقدمه - مدیریت داده در Monolith ماژولار - راهاندازی پایگاه داده Postgres 01:07
-
مدیریت داده در Monolith ماژولار - 4 استراتژی جداسازی داده 03:37
-
بهترین شیوهها - جداسازی اسکیمای پایگاه داده ماژولها در اپلیکیشنهای Monolith ماژولار 03:01
-
آبجکت کانتکس پایگاه داده Multi-context EF برای اسکیمای جداگانه پایگاه داده جهت جداسازی داده 02:12
-
سرویسهای پشتیبان برای معماریهای Cloud-Native 03:11
-
استراتژی استقرار Monolith ماژولار فروشگاه اینترنتی 03:44
-
راهاندازی پایگاهداده PostgreSQL با استفاده از فایل Docker-compose برای محیط Docker چندکانتینری 05:15
-
افزودن ایمیج پایگاه داده PostgreSQL به فایل Docker-compose برای محیط Docker چندکانتینری 06:30
-
اجرای Docker-Compose در Visual Studio برای راهاندازی پایگاه داده PostgreSQL روی Docker 05:14
-
اتصال و جستجوی پایگاه داده PostgreSQL با استفاده از pgAdmin 04:12
-
مقدمه - توسعه لایه زیرساخت داده مشترک و کاتالوگ با EF Core 02:59
-
قابلیتهای EF Core 8، رویکرد Code First، مهاجرتها و اتصال به PostgreSQL 02:59
-
مراحل توسعه EF Core برای زیرساخت داده مشترک و کاتالوگ 06:13
-
نصب پکیجهای NuGet مربوط به EF Core در کتابخانه مشترک 05:26
-
توسعه آبجکت EF Core DbContext برای ذخیره انتیتیها در ماژول کاتالوگ 06:48
-
نگاشت آبجکتهای DDD در انتیتیهای EF - توسعه پیکربندی انتیتی EF Core 03:37
-
رشته اتصال EF Core به PostgreSQL در فایل appsettings.json 03:21
-
رجیستر EF Core DbContext در ابزار DependencyInjection Asp.Net برای PostgreSQL 04:41
-
ایجاد مهاجرتهای EF Core برای CatalogDbContext - بخش 1 04:49
-
ایجاد مهاجرتهای EF Core برای CatalogDbContext - بخش 2 08:06
-
بررسی و اجرای Docker-Compose در Visual Studio برای راهاندازی پایگاه داده PostgreSQL روی Docker 03:22
-
اعمال مهاجرتهای EF Core روی پایگاه داده PostgreSQL با فرمان Update-Database 02:26
-
مهاجرت خودکار انتیتیهای EF Core به پایگاه داده PostgreSQL هنگام راهاندازی اپلیکیشن 04:53
-
توسعه متد افزونه عمومی UseMigration برای مهاجرت و Seed کردن پایگاه داده 06:20
-
استفاده از متد افزونه UseMigration در کلاسهای DependencyInjection ماژول 03:46
-
تست مهاجرتهای خودکار با استفاده از متد افزونه UseMigration روی WebApplication 05:15
-
Seed کردن داده محصول در EShopDb هنگام راهاندازی اپلیکیشن، بلافاصله پس از UseMigration 10:12
-
اجرای ماژول کاتالوگ برای مهاجرت و Seed کردن EShopDb با متد UseMigration 05:15
-
EF Core Interceptors - بررسی SaveChangesInterceptor برای حسابرسی انتیتیها 03:17
-
توسعه SaveChangesInterceptor برای حسابرسی انتیتیها در انتیتیهای سفارش 09:14
-
اجرا و تست ماژول کاتالوگ برای حسابرسی با EF SaveChanges Interceptor 06:11
-
Dispatch کردن رویدادهای دامنه با EF Core SaveChangesInterceptor 04:10
-
توسعه DispatchDomainEventsInterceptor برای تریگر کردن هندلرهای رویداد دامنه 12:14
-
اجرا و تست ماژول کاتالوگ برای Dispatch کردن رویدادهای دامنه با EF SaveChanges Interceptor 07:06
-
مقدمه - توسعه یوزکیس اپلیکیشن با CQRS و MediatR 01:27
-
الگوی CQRS (تفکیک مسئولیت فرمان و کوئری) 03:01
-
پیادهسازی منطقی و فیزیکی الگوی CQRS 02:43
-
الگوی طراحی CQRS با کتابخانه MediatR (پیادهسازی منطقی CQRS) 04:11
-
توسعه کلاس هندلر ویژگی با CQRS و MediatR 09:35
-
ایجاد انتزاع در MediatR برای CQRS - جداسازی فرمان و کوئری - بخش 1 04:11
-
ایجاد انتزاع در MediatR برای CQRS - جداسازی فرمان و کوئری - بخش 2 04:46
-
مقدمه - توسعه یوزکیس اپلیکیشن کاتالوگ با CQRS و MediatR 01:16
-
یادآوری سریع تحلیل یوزکیسهای اپلیکیشن ماژول کاتالوگ 01:43
-
توسعه ساختار پوشههای ماژول کاتالوگ برای CQRS 02:35
-
توسعه کلاسهای DTO برای محصول در ماژول کاتالوگ 01:52
-
توسعه CreateProductCommand و هندلر محصولات در لایه اپلیکیشن ماژول کاتالوگ 05:25
-
توسعه CreateProductCommandHandler محصولات با استفاده از CatalogDbContext در کاتالوگ 03:51
-
توسعه UpdateProductCommand و هندلر محصولات با استفاده از CatalogDbContext 06:46
-
توسعه DeleteProductCommand و هندلر محصولات با استفاده از CatalogDbContext 03:46
-
توسعه کوئریهای محصول با CQRS و MediatR در ماژول کاتالوگ 05:13
-
نگاشت با Mapster 03:33
-
توسعه کوئریهای محصول با CQRS و MediatR در ماژول کاتالوگ با Mapster 02:31
-
توسعه کوئریهای GetProductByCategory با CQRS و MediatR در ماژول کاتالوگ 03:44
-
توسعه کوئریهای GetProductById با CQRS و MediatR در ماژول کاتالوگ 05:34
-
توسعه هندلرهای رویداد دامنه با MediatR INotificationHandler در کاتالوگ 05:42
-
توسعه هندلرهای رویداد دامنه با MediatR INotificationHandler - بخش 2 05:19
-
مقدمه - توسعه اندپوینتهای API کاتالوگ با ارائه اندپوینتهای Minimal API 01:29
-
الگوی طراحی REPR و چرخه عمر درخواست CQRS در MediatR 01:50
-
Minimal Apis و نصب کتابخانه Carter برای ارائه Minimal Apis 04:41
-
یادآوری سریع تحلیل اندپوینتهای ماژول کاتالوگ 02:01
-
توسعه اندپوینت POST مربوط به CreateProduct با Carter و پیادهسازی ICarterModule - بخش 1 05:07
-
توسعه اندپوینت POST مربوط به CreateProduct با Carter و پیادهسازی ICarterModule - بخش 2 05:53
-
توسعه اندپوینت UpdateProduct برای REST APIs در ماژول کاتالوگ 05:31
-
توسعه اندپوینت DeleteProduct برای REST APIs در ماژول کاتالوگ 04:14
-
توسعه اندپوینت GetProducts برای REST APIs در ماژول کاتالوگ 04:35
-
توسعه اندپوینت GetProductById برای REST APIs در ماژول کاتالوگ 04:10
-
توسعه اندپوینت GetProductByCategory برای REST APIs در ماژول کاتالوگ 04:57
-
رجیستر کتابخانههای Carter در درخواست و سرویس تزریق وابستگی در Asp.Net 06:10
-
ایجاد متد افزونه برای ثبت Carter Assembly 06:24
-
ایجاد کالکشن Postman برای EShopModules 06:50
-
تست ماژول کاتالوگ - درخواست POST برای CreateProduct - اشکالزدایی Carter Minimal API 10:13
-
تست اندپوینت بروزرسانی محصول با CQRS و VSA در ماژول کاتالوگ 08:42
-
تست اندپوینت دریافت محصول با CQRS و VSA در ماژول کاتالوگ 09:59
-
تست اندپوینت حذف محوصل با CQRS و VSA در ماژول کاتالوگ 04:08
-
مقدمه - توسعه مباحث Cross-cutting برای کاتالوگ و هر ماژول 01:35
-
رفتارهای پایپلاین MediatR و کتابخانه Fluent Validation 04:04
-
افزودن مباحث Cross-cutting به کتابخانه کلاس مشترک برای استفاده در همه ماژولها 02:43
-
اعمال اعتبارسنجی با AbstractValidator با استفاده از کتابخانه Fluent Validation - بخش 1 04:16
-
اعمال اعتبارسنجی با AbstractValidator با استفاده از کتابخانه Fluent Validation - بخش 2 07:08
-
رفتار پایپلاین اعتبارسنجی با MediatR با استفاده از کتابخانه Fluent Validation 08:37
-
حذف Validator دستی و تست رفتار پایپلاین اعتبارسنجی با MediatR 04:59
-
توسعه Validators فرمان CRUD با Fluent Validation 04:19
-
مدیریت گلوبال استثناها در ASP.NET Core با app.UseExceptionHandler 05:46
-
مدیریت مشترک استثناها به صورت عمومی در ASP.NET Core با app.UseExceptionHandler 10:08
-
مدیریت گلوبال استثناها با رابط IExceptionHandler در Asp.Net Core 08:15
-
رجیستر و مدیریت استثناها سفارشی در Asp.net با متد AddExceptionHandler 08:22
-
رفتار لاگ کردن در پایپلاین MediatR برای مباحث Cross-cutting 07:17
-
تست رفتار لاگ کردن برای همه درخواستهای MediatR در ماژول کاتالوگ 06:06
-
لاگ کردن ساختاریافته با استفاده از Serilog در NET 8.0 Minimal APIs. 09:19
-
Serilog WriteTo Seq برای لاگ کردن ساختاریافته در NET. 07:39
-
توسعه کلاس صفحهبندی برای کوئری GetProducts با استفاده از CQRS و MediatR 03:47
-
توسعه کوئری GetProducts و اعمال صفحهبندی با استفاده از CQRS و MediatR 09:19
-
مقدمه - توسعه ماژول سبد خرید با معماری Vertical Slice و CQRS 01:15
-
تحلیل دامنه ماژول سبد خرید - مدلها، یوزکیسها، REST APIs و پایگاه دادهها 04:08
-
تحلیل فنی ماژول سبد خرید - معماریها، الگوها، کتابخانهها، پوشهها 02:43
-
توسعه مدلهای انتیتی دامنه سبد خرید در انتیتیهای دامنه سبد خرید 05:28
-
توسعه انتیتی مدل Rich Domain برای انتیتیهای سبد خرید 05:35
-
مقدمه - توسعه زیرساخت داده سبد خرید با EF Core Code First 02:36
-
مراحل توسعه زیرساخت EF Core برای ماژول سبد خرید 03:05
-
توسعه آبجکت EF Core DbContext برای ذخیره انتیتیها در زیرساخت سبد خرید 06:26
-
نگاشت آبجکتهای DDD در انتیتیهای EF - توسعه پیکربندی انتیتی EF Core 04:33
-
روابط EF Core 8 و نگاشت آبجکت مقدار DDD با ComplexType و Property 02:48
-
توسعه پیکربندیهای انتیتی برای روابط SC و آیتمهای SC 01:58
-
رشته اتصال EF Core به PostgreSQL در فایل appsettings.json 01:39
-
رجیستر EF Core DbContext در ابزار تزریق وابستگی Asp.Net برای PostgreSQL 04:35
-
ایجاد مهاجرتهای EF Core برای BasketDbContext در زیرساخت سبد خرید 05:43
-
اجرای Docker-Compose در Visual Studio برای راهاندازی PostgreSQL روی Docker 02:04
-
اعمال مهاجرتهای EF Core روی پایگاه داده PostgreSQL با فرمان Update-Database 03:03
-
مهاجرت خودکار انتیتیهای EF Core به PostgreSQL هنگام راهاندازی اپلیکیشن با کدنویسی 03:00
-
تست مهاجرتهای خودکار با استفاده از متد افزونه UseMigration روی وب اپلیکیشن 04:55
-
مقدمه - توسعه یوزکیسهای اپلیکیشن سبد خرید با CQRS و MediatR 01:07
-
توسعه ساختار پوشه سبد خرید برای CQRS 03:23
-
توسعه کلاسهای DTO برای سبد خرید در ماژول سبد خرید 02:36
-
توسعه CreateBasketCommand و هندلر سبد خرید در یوزکیسهای اپلیکیشن سبد خرید 05:33
-
توسعه CreateBasketCommandHandler سبد خرید با استفاده از BasketDbContext در ماٰژول سبد خرید 04:46
-
توسعه DeleteBasketCommand و هندلر سبد خرید با استفاده از BasketDbContext 07:05
-
توسعه کوئریهای سبد خرید با CQRS و MediatR در ماژول سبد خرید 04:34
-
توسعه AddItemIntoBasketHandler سبد خرید با CQRS و MediatR 05:58
-
توسعه RemoveItemFromBasketHandler سبد خرید با CQRS و MediatR 04:48
-
مقدمه - توسعه اندپوینتهای API سبد خرید با ارائه اندپوینتهای Minimal API 02:17
-
توسعه اندپوینت POST مربوط به CreateBasket با Carter و پیادهسازی ICarterModule 08:12
-
توسعه اندپوینت DeleteBasket با Carter و پیادهسازی ICarterModule 03:25
-
توسعه اندپوینت GetBasket با Carter و پیادهسازی ICarterModule برای Minimal APIs 04:01
-
توسعه اندپوینت AddItemIntoBasket با Carter و پیادهسازی ICarterModule 07:04
-
توسعه اندپوینت RemoveItemFromBasket با Carter و پیادهسازی ICarterModule 05:13
-
رجیستر کتابخانههای MediatR و Carter در سرویس تزریق وابستگی Asp.Net 06:50
-
رجیستر کتابخانههای MediatR در سرویس و درخواست تزریق وابستگی Asp.Net 06:40
-
توسعه متد افزونه MediatR برای ثبت سفارش با Assembly 03:56
-
تست Basket API - درخواست POST برای CreateBasket - اشکالزدایی Carter Minimal API 06:39
-
تست اندپوینتهای Get Basket با CQRS و VSA در ماژول سبد خرید 03:15
-
تست اندپوینت DeleteBasket با CQRS و VSA در ماژول سبد خرید 02:42
-
تست اندپوینت AddItemIntoBasket با CQRS و VSA در ماژول سبد خرید 08:18
-
تست اندپوینت RemoveItemFromBasket با CQRS و VSA در ماژول سبد خرید 04:38
-
مقدمه - توسعه کش توزیع شده با Redis در ماژول سبد خرید 02:04
-
توسعه کلاس BasketRepository با استفاده از آبجکت EF Core DbContext 05:23
-
پیادهسازی کلاس IBasketRepository با استفاده از آبجکت EF Core DbContext 05:15
-
رجیستر IBasketRepository در DI ماژول سبد خرید 01:24
-
تزریق و استفاده از IBasketRepository در کلاسهای هندلر در ماژول سبد خرید 07:35
-
تزریق و استفاده از IBasketRepository در کلاسهای هندلر AddItem و RemoveItem 03:49
-
تست سریع اندپوینت سبد خرید با CQRS و VSA در ماژول سبد خرید 06:15
-
الگوی Cache-aside و ابطال Cache 03:28
-
الگوی Proxy، الگوی Decorator و کتابخانه Scrutor 03:32
-
توسعه CachedBasketRepository با الگوی Proxy و Decorator و Scrutor 04:04
-
توسعه CachedBasketRepository با الگوی Proxy و Decorator - بخش 2 10:56
-
توسعه CachedBasketRepository با الگوی Proxy و Decorator - بخش 3 07:23
-
رجیستر CachedBasketRepository تزئین شده و StackExchangeRedis با Scrutor 06:33
-
رجیستر StackExchangeRedis در DI مشترک پروژه Api در Program.cs 04:05
-
راهاندازی Redis به عنوان کش توزیع شده با استفاده از فایل Docker-compose برای محیط چندکانتینری 04:14
-
اجرای Docker-Compose در Visual Studio برای راهاندازی کش توزیع شده Redis روی Docker 03:13
-
اتصال کش Redis از ماژول سبد خرید محلی و ارسال درخواست GET برای کش سبد خرید 08:30
-
توسعه JsonConverter سفارشی برای سبد خرید و آیتمها هنگام خواندن در Redis 07:52
-
توسعه JsonConverter سفارشی برای سبد خرید و آیتمها - بخش 2 03:39
-
استفاده از JsonSerializerOptions سفارشی با JsonConverter برای سبد خرید و آیتمها 04:15
-
تست سریع اندپوینت سبد خرید با CachedBasket Repository و JsonConverter سفارشی 10:15
-
مقدمه - ارتباطات همزمان بین ماژولها با فراخوانی متدهای درونفرآیندی 04:10
-
معماری Monolith ماژولار چگونه ارتباط بین ماژولها را مدیریت میکند؟ 02:31
-
یوزکیسهای همزمانسازی ماژول سبد خرید - ارتباطات افزودن یک آیتم به سبد خرید 02:44
-
بررسی کلاس AddItemIntoBasketHandler - دریافت قیمت محصول از ماژول کاتالوگ 06:47
-
ارتباطات همزمان بین ماژولها با استفاده از کتابخانههای کلاس قرارداد 05:58
-
مرحله 1 - ایجاد کتابخانه کلاس Catalog.Contracts 02:08
-
مرحله 2 - انتقال متدهای MediatR برای کوئری یا فرمان به Catalog.Contracts 06:03
-
تفکیک عملیاتهای مشترک مرتبط با قراردادهای CQRS در کتابخانه کلاس Shared.Contracts 12:37
-
مرحله 3 - اصلاح ماژول کاتالوگ برای دریافت مرجع از کتابخانه کلاس Catalog.Contracts 06:51
-
مرحله 4 - دریافت مرجع سبد خرید از کتابخانه کلاس Catalog.Contracts 03:16
-
مرحله 6 - دریافت مقادیر انتیتی محصول در AddItemIntoBasketHandler و تعیین قیمت 05:14
-
تست فراخوانی همزمان AddItemIntoBasket در سبد خرید به ماژول کاتالوگ برای دریافت داده محصول 08:47
-
مرحله 7 - مهاجرت به میکروسرویسها - تکامل قراردادها در ارتباطات همزمان 03:26
-
مقدمه - ارتباطات غیرهمزمان بین ماژولها با RabbitMQ و MassTransit 01:43
-
معماری Monolith ماژولار چگونه ارتباطات غیرهمزمان بین ماژولها را مدیریت میکند؟ 03:35
-
الگوی پیامرسانی Fan-Out Publish/Subscribe 02:44
-
یادآوری سریع - رویداد دامنه در برابر رویداد یکپارچهسازی - رویداد دامنه منجر به رویداد یکپارچهسازی میشود 01:40
-
تحلیل دامنه ارتباطات غیرهمزمان بین ماژولهای کاتالوگ و سبد خرید 03:15
-
تحلیل فنی ارتباطات غیرهمزمان بین ماژولهای کاتالوگ و سبد خرید 04:41
-
مراحل توسعه ارتباطات غیرهمزمان بین ماژولهای کاتالوگ و سبد خرید 03:08
-
مرحله 1 - بررسی رویداد دامنه و رویداد یکپارچهسازی در ماژول کاتالوگ 04:05
-
مرحله 2 - ایجاد کتابخانه کلاس Shared.Messaging 04:12
-
توسعه رویداد ProductPriceChangedIntegration در کتابخانه کلاس Shared.Messaging 03:03
-
توسعه متدهای افزونه MassTransit برای رجیستر اتصال RabbitMQ در DI 04:07
-
توسعه متدهای افزونه MassTransit برای رجیستر اتصال در DI کاتالوگ 02:46
-
افزودن مرجع پروژه به Shared.Messaging در ماژولهای کاتالوگ و سبد خرید 03:18
-
ثبت پکیجهای MassTransit در DI پروژه Bootstrapper Api در فایل Program.cs 04:55
-
رویداد یکپارچهسازی ProductPriceChanged - چگونه رویداد دامنه به رویداد یکپارچهسازی منتهی میشود؟ 01:36
-
مرحله 3 - انتشار رویداد یکپارچهسازی UpdatePrice توسط کاتالوگ 03:48
-
مرحله 4 - Subscribe و consume کردن رویداد یکپارچهسازی ProductPriceChanged توسط سبد خرید 05:13
-
توسعه قابلیت UpdateItemPriceInBasket در ماژول سبد خرید - بخش 1 04:16
-
توسعه قابلیت UpdateItemPriceInBasket در ماژول سبد خرید - بخش 2 05:20
-
فراخوانی UpdateItemPriceInBasketCommand در ProductPriceChangedIntegrationEventHandler 04:15
-
تست - ProductPriceChangedIntegrationEvent با In-memory MassTransit 13:46
-
RabbitMQ چیست و کامپوننتهای اصلی آن کدامند؟ (Producer و Queue و Consumer) 02:36
-
انتقال In-memory Bus به Message Broker مبتنی بر RabbitMQ در MassTransit 04:42
-
توسعه متدهای افزونه MassTransit برای رجیستر اتصال RabbitMQ در DI 04:20
-
راهاندازی RabbitMQ برای ارتباطات غیرهمزمان با استفاده از فایل Docker-compose 04:07
-
اجرای Docker-Compose در Visual Studio برای راهاندازی RabbitMQ روی Docker 02:56
-
تست - ProductPriceChangedIntegrationEvent با RabbitMQ و MassTransit 12:59
-
مقدمه - توسعه ماژول هویت کاربر با احراز هویت Keycloak 01:52
-
مدیریت هویت و دسترسی Keycloak 02:00
-
مزیتهای اصلی استفاده از Keycloak 02:26
-
بهترین شیوهها هنگام استفاده از Keycloak 03:03
-
جریانهای OAuth2 + OpenID Connect با Keycloak 05:16
-
Keycloak به عنوان سرویس پشتیبان برای ماژولهای Monolith ماژولار 02:35
-
راهاندازی Keycloak در فایل Docker-compose برای ارائهدهنده هویت 03:26
-
اجرای Docker-Compose در Visual Studio و راهاندازی ارائهدهنده هویت Keycloak روی Docker 05:20
-
راهاندازی پایگاه داده هویت کاربر Keycloak به صورت اسکیمای هویت PostgreSQL 07:11
-
اجرای docker-compose برای تولید اسکیمای هویت Keycloak و PostgreSQL 03:55
-
ایجاد حوزه، کاربر و کلاینت برای OpenID Connect با ارائهدهنده هویت Keycloak 10:19
-
ایمنسازی ماژولهای فروشگاه اینترنتی با Keycloak OpenID Connect در AspNet 08:45
-
ایمنسازی و تست اندپوینتهای سبد خرید با یکپارچهسازی Keycloak 03:36
-
دریافت توکن JwtBearer برای OpenID Connect با هویت Keycloak 08:06
-
دریافت کاربر فعلی از توکن با ClaimsPrincipal در احراز هویت AspNet 04:31
-
تست - ایجاد سبد خرید با کاربر فعلی از توکن با ClaimsPrincipal 04:56
-
ایمنسازی اندپوینتهای سبد خرید با OpenID Connect و استفاده از ارائهدهنده هویت Keycloak 08:45
-
مقدمه - ماژول سفارشات با معماری Vertical Slice و CQRS 02:59
-
تحلیل دامنه ماژول سفارشات - مدلها، یوزکیسها، REST APIs و پایگاه دادهها 04:30
-
تحلیل فنی ماژول سفارشات - معماریها، الگوها، کتابخانهها 02:56
-
توسعه انتیتیهای دامنه سفارشات با الگوهای طراحی دامنه محور تاکتیکی 06:49
-
توسعه زیرساخت داده سفارشات با EF Core Code First و PostgreSQL 08:30
-
توسعه لایه اپلیکیشن برای سفارشات با CQRS و MediatR 06:26
-
توسعه اندپوینتهای API سفارشات با ارائه Minimal API توسط Carter 10:02
-
مقدمه - الگوی Outbox برای پیامرسانی قابل اعتماد در میکروسرویسها 02:20
-
تحلیل رویداد چکاوت سبد خرید بین ماژولهای سبد خرید و سفارشات 07:17
-
توسعه رویداد BasketCheckout در کتابخانه کلاس Shared.Messaging 03:12
-
یادآوری سریع راهاندازی ارتباطات غیرهمزمان MassTransit و RabbitMQ 03:24
-
توسعه پوشه ویژگی BasketCheckout برای ارائه اندپوینت POST و رویداد انتشار 05:05
-
توسعه متد هندلر چکاوت سبد خرید برای انتشار رویداد به RabbitMQ از طریق MassTran 09:43
-
مشکل Dual-write و الگوی Outbox 05:06
-
توسعه الگوی Outbox برای پیامرسانی قابل اعتماد در میکروسرویسها با BasketCheckout 01:05
-
مرحله 1 و 2 - ایجاد انتیتی Outbox و اصلاح DbContext 08:04
-
مرحله 3 - بروزرسانی CheckoutBasketHandler با Outbox و راهاندازی و کامیت کردن پایگاه داده 07:52
-
مرحله 4 - ایجاد سرویس پسزمینه برای پردازش پیامهای Outbox 11:32
-
ماژول سفارشات برای Subscribe-Consume کردن رویداد BasketCheckout از RabbitMQ 02:50
-
رجیستر ماژول سفارشات در MassTransit برای ارتباطات غیرهمزمان رویداد محور 02:26
-
توسعه هندلر رویداد یکپارچهسازی Consumer رویداد چکاوت سبد خرید 08:33
-
تست - یوزکیس چکاوت سبد خرید - ارتباطات غیرهمزمان قابل اعتماد با الگوی Outbox - بخش 1 07:35
-
تست - یوزکیس چکاوت سبد خرید - ارتباطات غیرهمزمان قابل اعتماد با الگوی Outbox - بخش 2 11:03
-
آزمون Outbox None
-
مقدمه - کانتینرسازی و ارکستراسیون اپلیکیشن ماژولار فروشگاه اینترنتی در Docker-Compose 01:12
-
استراتژی استقرار Monolith ماژولار فروشگاه اینترنتی 01:25
-
افزودن پروژه Asp.Net Api به فایل Docker-compose برای محیط Docker چندکانتینری 02:44
-
تنظیم متغیرهای محیطی پیکربندی پروژه Api بر اساس appsettings 09:57
-
تست همه موارد - اجرای همه موارد با Docker-compose همراه با پروژه Api و سرویسهای پشتیبان 07:31
-
تیت ماژول سبد خرید - اجرای همه موارد با Docker-compose همراه با پروژه Api 07:25
-
تست CheckoutBasket با RabbitMQ و ماژول سفارشات - اجرای همه موارد با Docker-compose همراه با Api 04:26
-
تست ماژول سفارشات - اجرای همه موارد با Docker-compose همراه با پروژه Api 01:44
-
اپلیکیشنهای کلاینت - Consume کردن ماژول Api در ماژولهای فروشگاه اینترنتی 05:21
-
مهاجرت به میکروسرویسها - چالشها و ملاحظات 02:35
-
الگوی Strangler Fig برای ریفکتور کردن Monolith به میکروسرویسها 02:17
-
مراحل ریفکتور کردن Monolith به میکروسرویسها 00:52
-
مرحله 1 - تجزیه ماژولهای فروشگاه اینترنتی به میکروسرویسها با کانتکسهای محدود DDD 00:50
-
مرحله 2 - اولویتبندی ماژولها و سرویسها برای مهاجرت 00:49
-
مرحله 3 - استخراج یک سرویس از Monolith 00:50
-
مرحله 4 - مدیریت یک پایگاه داده Monolith 01:00
-
مرحله 5 - طراحی و پیادهسازی ارتباطات بین سرویسها 01:45
-
مرحله 6 - ارتباطات غیرهمزمان بین سرویسها 01:12
-
مرحله 7 - تراکنشهای توزیع شده و سازگاری داده 01:00
-
مرحله 8 - استقرار میکروسرویسها پس از Monolith 01:28
-
میکروسرویسهای NET 8. - بررسی DDD و CQRS، معماری تمیز و عمودی 02:31
-
تشکر 00:58
مشخصات آموزش
بوتکمپ بکاند NET 8. - بررسی Modulith ،VSA ،DDD ،CQRS و Outbox
- تاریخ به روز رسانی: 1405/04/02
- سطح دوره:Alls
- تعداد درس:328
- مدت زمان :24:41:46
- حجم :12.79GB
- زبان:دوبله زبان فارسی
- دوره آموزشی:AI Academy