.Net Backend Bootcamp: Modulith, Vsa, Ddd, Cqrs And Outbox - Printable Version +- Softwarez.Info - Software's World! (https://softwarez.info) +-- Forum: Library Zone (https://softwarez.info/Forum-Library-Zone) +--- Forum: Video Tutorials (https://softwarez.info/Forum-Video-Tutorials) +--- Thread: .Net Backend Bootcamp: Modulith, Vsa, Ddd, Cqrs And Outbox (/Thread-Net-Backend-Bootcamp-Modulith-Vsa-Ddd-Cqrs-And-Outbox--532340) |
.Net Backend Bootcamp: Modulith, Vsa, Ddd, Cqrs And Outbox - AD-TEAM - 09-03-2024 .Net Backend Bootcamp: Modulith, Vsa, Ddd, Cqrs And Outbox Published 8/2024 MP4 | Video: h264, 1920x1080 | Audio: AAC, 44.1 KHz Language: English | Size: 10.33 GB | Duration: 20h 12m Develop EShop Modulith on .NET used Asp.Net Web API, PostgreSQL, Redis, RabbitMQ, Keycloak, Seq, Docker, MassTransit
[b]What you'll learn[/b] Modular Monoliths (Modulith) Architecture Vertical Slice Architecture (VSA) Domain-Driven Design (DDD) Command Query Responsibility Segregation (CQRS) Outbox Pattern for Reliable Messaging CQRS (Command Query Responsibility Segregation) and Vertical Slice architectures for module development Communicate over In-process method calls-public APIs and use RabbitMQ for event-driven communication Secure APIs with Keycloak, using OpenID Connect and Bearer Tokens ASPNET Core Minimal APIs and latest features of .Net8 and C# 12 Vertical Slice Architecture implementation with Feature folders DDD, CQRS Patterns using MediatR library w/ following Best Practices Use Domain Events & Integration Events when UpdatePriceChanged event Use Entity Framework Core Code-First Approach and Migrations on PostgreSQL Database Cross-cutting Concerns including Logging with Serilog, Validation with MediatR Pipeline Behaviors, Exceptions, Pagination Using Redis as a Distributed Cache over PostgreSQL database Develop Proxy, Decorator and Cache-aside patterns Sync Communications between Catalog and Basket Modules w/ In-process Method Calls (Public APIs) Async Communications between Modules w/ RabbitMQ & MassTransit Develop User Identity Module with Keycloak Authentication OAuth2 + OpenID Connect Flows with Keycloak Outbox Pattern For Reliable Messaging w/ BasketCheckout Use Case Publish BasketCheckoutEvent to RabbitMQ via MassTransit library, Consume from Ordering Module Migrating to Microservices: EShop Modules to Microservices w/ Stranger Fig Pattern [b]Requirements[/b] Basics of C# and programming [b]Description[/b] In this bootcamp, you'll learn how to build robust, scalable, and maintainable applications using cutting-edge technologies and architectural patterns.We will develop;Modular Monoliths (Modulith) ArchitectureVertical Slice Architecture (VSA)Domain-Driven Design (DDD)Command Query Responsibility Segregation (CQRS)Outbox Pattern for Reliable MessagingWe start with the basics and progressively dive deeper into each topic. You'll get hands-on experience building a complete EShop Modular Monolith application, implementing features like CQRS and the Outbox pattern.We'll follow CQRS (Command Query Responsibility Segregation) and Vertical Slice architectures for module development.Modules will communicate over In-process method calls-public APIs and use RabbitMQ for event-driven communication.We'll secure our APIs with Keycloak, using OpenID Connect and Bearer Tokens.We'll implement the Outbox Pattern for reliable messaging between modules.Along with this you'll develop following modules and items:Catalog module which;Using Asp.Net Core Minimal APIs and latest features of .Net8 and C# 12Develop Vertical Slice Architecture implementation with Feature folders Develop DDD, CQRS Patterns using MediatR library w/ following Best Practices Use Domain Events & Integration Events when UpdatePriceChanged eventUse Entity Framework Core Code-First Approach and Migrations on PostgreSQL DatabaseUse Carter for expose Minimal Api endpointsCross-cutting Concerns including Logging with Serilog, Validation with MediatR Pipeline Behaviors, Exceptions, PaginationBasket module which includes;Similar to Catalog Module; Develop DDD, CQRS, Vertical Slice Architecture implementationAdditionally;Using Redis as a Distributed Cache over PostgreSQL database Develop and Implements Proxy, Decorator and Cache-aside patternsPublish BasketCheckoutEvent to RabbitMQ via MassTransit libraryImplement Outbox Pattern For Reliable Messaging w/ BasketCheckout Use CaseModule Communications;Sync Communications between Catalog and Basket Modules with In-process Method Calls (Public APIs)Async Communications between Modules w/ RabbitMQ & MassTransit for UpdatePrice Between Catalog-Basket ModulesIdentity Module which includes; Develop User Identity Module with Keycloak AuthenticationOAuth2 + OpenID Connect Flows with KeycloakSetup Keycloak into Docker-compose file for Identity Provider as a Backing ServiceSecure EShop Modules with Keycloak OpenId Connect in AspNetJwtBearer token for OpenID Connect with Keycloak Identity Ordering Module which includes;Similar to the Catalog and Basket Module; Develop DDD, CQRS, Vertical Slice Architecture implementationImplement Outbox Pattern For Reliable Messaging w/ BasketCheckout Use CaseLastly, we will discussMigrating to Microservices: EShop Modules to Microservices w/ Stranger Fig PatternThis course is more than just learning .NET, it's a deep dive into the world of Modular Monoliths with Vertical-Slice Architecture, Domain-Driven Design (DDD), CQRS, and advanced architectural patterns for Backend Development. Overview Section 1: Introduction Lecture 1 Introduction Lecture 2 Prerequisites, Source Code and Course Slides Lecture 3 Run the Final Application Lecture 4 Project Code Structure Lecture 5 Modular Monoliths Architectures, Patterns, Libraries and Best Practices Lecture 6 How to Follow the Course (The Course Flow and Way of Learning) Section 2: Monolithic Architecture - What's wrong with Traditional Monoliths ? Lecture 7 What is Traditional Monoliths (Monolithic Architecture) ? Lecture 8 When to use Monolithic Architecture Lecture 9 What's wrong with Traditional Monolithic Architecture ? Lecture 10 Technology Lock-In and Fear Cycle in Traditional Monolithic Architecture Lecture 11 Big Ball of Mud Section 3: Microservices Architectures - Why it is not fit projects ? Lecture 12 What are Microservices and Microservices Architecture ? Lecture 13 When to Use Microservices Architecture Lecture 14 What's wrong with Microservices Architecture ? Lecture 15 Fallacies of Distributed Computing Lecture 16 Microservices Antipattern: The Distributed Monolith Lecture 17 Amazon Case: Rearchitecting from a Distributed Microservices to a Monolith Section 4: The Bridge: Modular Monolith Architectures - Gateway between Monolithic and MS Lecture 18 What is Modular Monolithic (Modulith) Architecture ? Lecture 19 Why Modular Monoliths ? Advantages over Microservices ? Lecture 20 Monolith First Approaches from Martin Fowler and Sam Newman Lecture 21 Starting Point for Microservices: Gradually Transition with Incremental Refactor Lecture 22 Compare of Monolith, Microservices, Modular Monolith: Communications and Data Lecture 23 Compare of Monolith, Microservices, Modular Monolith: Development and Deployment Lecture 24 Shopify Modular Monolithic Architecture Lecture 25 Decomposition of EShop Modules: Catalog, Basket, Identity and Ordering Modules Section 5: Create EShop Modular Monolith Project Solution Structure Lecture 26 Introduction - Create EShop Modular Monolith Project Solution Structure Lecture 27 Create GitHub Repository for EShop Modular Monolithic Architecture Lecture 28 Create New Blank Solution: eshop-modular-monoliths Lecture 29 Modular Monolith Folder Structure: Bootstrapper, Modules, Shared Lecture 30 Create Bootstrapper Api Project Lecture 31 Configure Empty Web Project to Bootstrapper Api of Modular Monolith Lecture 32 Create Modules Folders according to DDD Bounded Context Analysis Lecture 33 External vs Internal Architecture of Modular Monoliths Architecture Lecture 34 Vertical Slice Architecture Lecture 35 Clean Architecture Lecture 36 Vertical Slice versus Clean Architecture Lecture 37 Create Module Projects as a Class Library Lecture 38 Shared Kernel Pattern in DDD Lecture 39 Created Shared Kernel Class Library Project for All Modules Lecture 40 Shared Project Dependencies to Modules Projects Lecture 41 Module Dependencies to Bootstrapper Asp.Net Api Project Section 6: Wire-up Dependencies Between Modules (DI Management of Modules) Lecture 42 Introduction - Wire-up Dependencies Between Modules (DI Management of Modules) Lecture 43 Asp.net Dependency Injection Management and Program.cs Lecture 44 Wiring up dependencies between modules Lecture 45 Develop AddCatalogModule extention method in CatalogModule.cs Lecture 46 Registering Catalog Dependencies into Program.cs Lecture 47 Develop AddBasketModule, AddOrderingModule extention methods Lecture 48 Registering Basket and Ordering Dependencies into Program.cs Lecture 49 Asp.net Middlewares and Http Request Pipeline Lecture 50 Configure Http Request Pipelines for Modules in Program.cs Lecture 51 Examine WebApplication Class Use Abstractions and Install Required Packages Lecture 52 Develop UseCatalogModule extention method for Module Configure the HTTP request Lecture 53 Integrating UseCatalogModule in Program.cs Lecture 54 Develop UseBasketModule and UseOrderingModule extention method for Module Config Lecture 55 Integrating UseBasketModule and UseOrderingModule extention method in Program.cs Lecture 56 Add GlobalUsings.cs for Each Project to Avoid Redundant Using Statements Section 7: First Module: Catalog Module with Vertical Slice Architecture and CQRS Lecture 57 Introduction - First Module: Catalog Module with Vertical Slice Architecture Lecture 58 Domain Analysis of Catalog Module: Models, UCs, Rest Apis, Databases Lecture 59 Technical Analysis of Catalog Module: Architectures, Patterns, Libraries, Folder Lecture 60 Way of Development: Shared -> Modules -> API Section 8: Develop Shared Domain for Tactical DDD Abstraction (Entity, Aggreagate, Events) Lecture 61 Introduction - Develop Shared Domain for Tactical DDD Abstraction Lecture 62 Domain Driven Design - DDD Lecture 63 Tactical Domain-Driven Design: Entities, Value Objects, Aggregates, A. Rooots Lecture 64 Develop DDD Abstractions (Entity, Aggregate, DomainEvent) in Shared Library Lecture 65 Develop IDomainEvent interface in Tactical DDD Abstraction using MediatR Lecture 66 Develop Aggregate classes in Tactical DDD Abstraction Section 9: Develop Catalog Domain with Product Domain Entity Models Lecture 67 Introduction - Develop Catalog Domain with Product Domain Entity Models Lecture 68 Develop Product Domain Entity Models in Catalog Module Domain Models Lecture 69 Anemic-domain vs Rich-domain Model Entities Entities in DDD Lecture 70 Develop DDD Rich-domain model Entity for Product Entity Lecture 71 Domain Events in DDD and Domain vs Integration Events Lecture 72 Develop Product Created and Updated Domain Event in Catalog Module Lecture 73 Raise ProductCreated and ProductPriceChanged Domain Event in Catalog Module Section 10: Data Management of Modular Monolith: Setup Postgres as a Main Database Lecture 74 Introduction - Data Management of Modular Monolith: Setup Postgres DB Lecture 75 Data Management of Modular Monoliths: 4 Data Isolation Strategies Lecture 76 Best Practice: DB Schema separation of Modules in Modular Monoliths apps Lecture 77 Multi-context EF DB Context object for DB Separate Schema for Data Isolation Lecture 78 Backing Services for Cloud-Native Architectures Lecture 79 EShop Modular Monolith Deployment Strategy Lecture 80 Setup PostgreSQL DB using Docker-compose file for Multi-container Docker env Lecture 81 Add PostgreSQL DB image into Docker-compose file for Multi-container Docker env Lecture 82 Run Docker-Compose on Visual Studio to setup PostgreSQL DB on Docker Lecture 83 Connect and Browse PostgreSQL DB using pgAdmin Section 11: Develop Shared and Catalog Data-Infrastructure with EF Core Code First Lecture 84 Introduction - Develop Shared and Catalog Data-Infrastructure Layer with EF Core Lecture 85 EF Core 8 Features, Code First Approach, Migrations and PostgreSQL Connection Lecture 86 Steps of EF Core Developments for Shared and Catalog Data-Infrastructure Lecture 87 Install EF Core Nuget Packages in Shared Library Lecture 88 Develop EF Core DBContext Object for Storing Entities in Catalog Module Lecture 89 Mapping DDD Objects to EF Entities - Develop EF Core Entity Configurations Lecture 90 EF Core PostgreSQL Connection String in appsettings.json file Lecture 91 Register EF Core DbContext in Asp.Net DependencyInjection Tool for PostgreSQL Lecture 92 Create EF Core Migrations for CatalogDbContext - Part 1 Lecture 93 Create EF Core Migrations for CatalogDbContext - Part 2 Lecture 94 Review and Run Docker-Compose on Visual Studio to setup PostgreSQL DB on Docker Lecture 95 Apply EF Core Migrations to PostgreSQL DB with Update-Database Command Lecture 96 Auto Migrate EF Core Entities to PostgreSQL DB when Application Startup Lecture 97 Develop Generic UseMigration extention method for DB Migration and Seed Lecture 98 Using UseMigration extention method on Module DependencyInjection classes Lecture 99 Test Auto-Migrations with UseMigration extention method on WebApplication Lecture 100 Seed EShopDb Product Data When Application Startup Just After UseMigration Lecture 101 Run Catalog Module to Migrate and Seed EShopDb with UseMigration method Lecture 102 EF Core Interceptors: SaveChangesInterceptor for Auditing Entities Lecture 103 Develop SaveChangesInterceptor to Auditing Entities for Order Entities Lecture 104 Run&Test Catalog Module for Audit with EF Save Changes Interceptor Lecture 105 Dispatch Domain Events w/ EF Core SaveChangesInterceptor Lecture 106 Develop DispatchDomainEventsInterceptor to Trigger Domain Event Handlers Lecture 107 Run&Test Catalog Module for Dispatch DomainEvents w/ EF SaveChanges Interceptor Section 12: Application Use Case Development with CQRS and MediatR Lecture 108 Introduction - Application Use Case development with CQRS and MediatR Lecture 109 CQRS (Command Query Responsibility Segregation) Pattern Lecture 110 Logical and Physical Implementation of CQRS Pattern Lecture 111 CQRS Design Pattern With MediatR Library (Logical CQRS Implementation) Lecture 112 Develop Feature Handler class with CQRS and MediatR Lecture 113 Create Abstraction on MediatR for CQRS - Command and Query Separation Lecture 114 Create Abstraction on MediatR for CQRS - Command and Query Separation - 2 Section 13: Catalog Application Use Case Development with CQRS and MediatR Lecture 115 Introduction - Catalog Application Use Case Development with CQRS and MediatR Lecture 116 Quick Remember Catalog Module Application Use Cases Analysis Lecture 117 Develop Catalog Module Folder Structure for CQRS Lecture 118 Develop Dto Classes for Product in Catalog Module Lecture 119 Develop Products CreateProductCommand and Handler in Catalog Modules Application Lecture 120 Develop Products CreateProductCommandHandler using CatalogDbContext in Catalog Lecture 121 Develop Products UpdateProductCommand and Handler using CatalogDbContext Lecture 122 Develop Products DeleteProductCommand and Handler using CatalogDbContext Lecture 123 Develop Product Queries with CQRS and MediatR in Catalog Module Lecture 124 Mapping with Mapster Lecture 125 Develop Product Queries with CQRS and MediatR in Catalog Module w/ Mapster Lecture 126 Develop GetProductByCategory Queries with CQRS and MediatR in Catalog Module Lecture 127 Develop GetProductById Queries with CQRS and MediatR in Catalog Module Lecture 128 Develop Domain Event Handlers with MediatR INotificationHandler in Catalog Lecture 129 Develop Domain Event Handlers with MediatR INotificationHandler - Part 2 Section 14: Develop Catalog API Endpoints Expose Minimal Api Endpoints with Carter and REPR Lecture 130 Introduction - Develop Catalog API Endpoints Exposing Minimal Api Endpoints Lecture 131 REPR Design Pattern and CQRS MediatR Request LifeCycle Lecture 132 Minimal Apis and Install Carter Library to Expose Minimal Apis Lecture 133 Quick Remember Catalog Module Endpoints Analysis Lecture 134 Develop CreateProduct POST Endpoint with Carter implements ICarterModule Lecture 135 Develop CreateProduct POST Endpoint with Carter implements ICarterModule- Part 2 Lecture 136 Developing UpdateProduct Endpoint for REST APIs in Catalog Module Lecture 137 Developing DeleteProduct Endpoint for REST APIs in Catalog Module Lecture 138 Developing GetProducts Endpoint for REST APIs in Catalog Module Lecture 139 Developing GetProductById Endpoint for REST APIs in Catalog Module Lecture 140 Developing GetProductByCategory Endpoint for REST APIs in Catalog Module Lecture 141 Register Carter libraries into Asp.Net Dependency Injection Service and Request Lecture 142 Create Extention Method for Carter Assembly Registrations Lecture 143 Create Postman Collection for EShopModules Lecture 144 Test Catalog Module - CreateProduct POST Request - Debug Carter Minimal API Lecture 145 Test UpdateProduct Endpoint with CQRS and VSA in Catalog Module Lecture 146 Test Get Product Endpoints with CQRS and VSA in Catalog Module Lecture 147 Test DeleteProduct Endpoint with CQRS and VSA in Catalog Module Section 15: Develop Cross-cutting Concerns for Catalog and Each Module in EShop Modules Lecture 148 Introduction - Develop Cross-cutting Concerns for Catalog and Each Module Lecture 149 MediatR Pipeline Behaviours and Fluent Validation Library Lecture 150 Add Cross-cutting Concerns into Shared Class Library to use in all modules Lecture 151 Apply Validation with AbstractValidator using Fluent Validation Library Lecture 152 Apply Validation with AbstractValidator using Fluent Validation Library - Part 2 Lecture 153 Validation Pipeline Behaviour with MediatR using Fluent Validation Library Lecture 154 Remove Manual Validator and Test Validation Pipeline Behaviour with MediatR usin Lecture 155 Develop CRUD Command Validators with Fluent Validation Lecture 156 Global Handling Exceptions in ASP.NET Core with app.UseExceptionHandler Lecture 157 Shared Handle Exceptions Generic Way in ASP.NET Core w/ app.UseExceptionHandler Lecture 158 Global Exception Handling with IExceptionHandler interface in Asp.Net Core Lecture 159 Register Custom Exception Handling into Asp.net with AddExceptionHandler method Lecture 160 Logging Behavior in MediatR Pipeline for Cross-cutting concerns Lecture 161 Test Logging Behaviour for all MediatR Requests on Catalog Module Lecture 162 Structured Logging Using Serilog in .NET 8.0 Minimal APIs Lecture 163 Serilog WriteTo Seq for Structured Logging in .NET Lecture 164 Develop Pagination Class for Query GetProducts using CQRS and MediatR Lecture 165 Develop GetProducts Query apply Pagination using CQRS and MediatR Section 16: Develop Basket Module with Vertical Slice Architecture and CQRS Lecture 166 Introduction - Develop Basket Module with Vertical Slice Architecture and CQRS Lecture 167 Domain Analysis of Basket Module: Models, UCs, Rest Apis, Databases Lecture 168 Technical Analysis of Basket Module: Architectures, Patterns, Libraries, Folders Lecture 169 Develop ShoppingCart Domain Entity Models in Basket Domain Entities Lecture 170 Develop DDD Rich-domain model Entity for ShoppingCart Entities Section 17: Develop Basket Data-Infrastructure with EF Core Code First and PostgreSQL Lecture 171 Introduction - Develop Basket Data-Infrastructure with EF Core Code First Lecture 172 Steps of Infrastructure EF Core Developments for Basket Module Lecture 173 Develop EF Core DBContext Object for Storing Entities in Basket Infrastructure Lecture 174 Mapping DDD Objects to EF Entities - Develop EF Core Entity Configurations Lecture 175 EF Core 8 Relations and DDD ValueObject Mapping with ComplexType and Property Lecture 176 Develop SC and SC Items Relations Entity Configurations Lecture 177 EF Core SQL Server Connection String in appsettings.json file Lecture 178 Register EF Core DbContext in Asp.Net Dependency Injection Tool for PostgreSQL Lecture 179 Create EF Core Migrations for BasketDbContext in Basket Infrastructure Lecture 180 Run Docker-Compose on Visual Studio to setup PostgreSQL on Docker Lecture 181 Apply EF Core Migrations to PostgreSQL DB with Update-Database Command Lecture 182 Auto Migrate EF Core Entities to PostgreSQL when Application Startup with Coding Lecture 183 Test Auto-Migrations with UseMigration Extention Method on WebApplication Section 18: Develop Basket Application Use Case Development with CQRS and MediatR Lecture 184 Introduction - Basket Application Use Case Development with CQRS and MediatR Lecture 185 Develop Basket Folder Structure for CQRS Lecture 186 Develop Dto Classes for ShoppingCart in Basket Module Lecture 187 Develop Basket CreateBasketCommand and Handler in Basket Application Use Cases Lecture 188 Develop Basket CreateBasketCommandHandler using BasketDbContext in Basket Module Lecture 189 Develop Basket DeleteBasketCommand and Handler using BasketDbContext in Basket Lecture 190 Develop Basket Queries with CQRS and MediatR in Basket Module Lecture 191 Develop Basket AddItemIntoBasketHandler with CQRS and MediatR Lecture 192 Develop Basket RemoveItemFromBasketHandler with CQRS and MediatR Section 19: Develop Basket API Endpoints Exposing Minimal Api Endpoints with Carter and REPR Lecture 193 Introduction - Develop Basket API Endpoints Exposing Minimal Api Endpoints Lecture 194 Develop CreateBasket POST Endpoint with Carter implements ICarterModule Lecture 195 Develop DeleteBasket Endpoint with Carter implements ICarterModule Lecture 196 Develop GetBasket Endpoint with Carter implements ICarterModule for Minimal Apis Lecture 197 Develop AddItemIntoBasket Endpoint with Carter implements ICarterModule Lecture 198 Develop RemoveItemFromBasket Endpoint with Carter implements ICarterModule Lecture 199 Register MediatR and Carter libraries into Asp.Net Dependency Injection Service Lecture 200 Register MediatR libraries into Asp.Net Dependency Injection Service and Request Lecture 201 Develop MediatR Extention Method for Custom Registration With Assemblies Lecture 202 Test Basket API - CreateBasket POST Request - Debug Carter Minimal API Lecture 203 Test Get Basket Endpoints with CQRS and VSA in Basket Module Lecture 204 Test DeleteBasket Endpoint with CQRS and VSA in Basket Module Lecture 205 Test AddItemIntoBasket Endpoint with CQRS and VSA in Basket Module Lecture 206 Test RemoveItemFromBasket Endpoint with CQRS and VSA in Basket Module Section 20: Develop Distributed Caching with Redis in Basket Module Lecture 207 Introduction - Develop Distributed Caching with Redis in Basket Module Lecture 208 Develop BasketRepository Class using EF Core DbContext object Lecture 209 Implement IBasketRepository Class using EF Core DbContext object Lecture 210 Register IBasketRepository into DI of Basket Module Lecture 211 Inject and Use IBasketRepository into Handler classes in Basket Module Lecture 212 Inject and Use IBasketRepository into AddItem and RemoveItem Handler classes Lecture 213 Quick Test Basket Endpoint with CQRS and VSA in Basket Module Lecture 214 Cache-aside Pattern and Cache Invalidation Lecture 215 Proxy Pattern, Decorator Pattern and Scrutor Library Lecture 216 Develop CachedBasketRepository with Proxy Pattern, Decorator Pattern and Scrutor Lecture 217 Develop CachedBasketRepository with Proxy Pattern, Decorator Pattern - Part 2 Lecture 218 Develop CachedBasketRepository with Proxy Pattern, Decorator Pattern - Part 3 Lecture 219 Register Decorated CachedBasketRepository and StackExchangeRedis with Scrutor Lecture 220 Register StackExchangeRedis into Common DI in Api Project Program.cs Lecture 221 Setup Redis as a Distributed Cache using Docker-compose file for Multi-container Lecture 222 Run Docker-Compose on Visual Studio to setup Redis Distributed Cache on Docker Lecture 223 Connect Redis Cache from Local Basket Module and send GET request Basket Cache Lecture 224 Develop Custom JsonConverter for ShoppingCart and Items When Reading to Redis Lecture 225 Develop Custom JsonConverter for ShoppingCart and Items - Part 2 Lecture 226 Use Custom JsonSerializerOptions with JsonConverter for ShoppingCart and Items Lecture 227 Quick Test Basket Endpoint with CachedBasket Repository and Custom JsonConverter Section 21: Sync Communications between Modules with In-process Method Calls (Public APIs) Lecture 228 Introduction - Sync Communications between Modules with In-process Method Calls Lecture 229 How Modular Monolithic Architecture Handle Communications Between Modules Lecture 230 Basket Module Synchronous Use Cases - Adding an Item to the Basket Communication Lecture 231 Examine AddItemIntoBasketHandler Class: Get Product Price from Catalog Module Lecture 232 Sync Communication Between Modules Using Contracts Class Libraries Lecture 233 Step 1: Create Catalog.Contracts Class Library Lecture 234 Step 2: Move exposing MediatR method Query or Commands into Catalog.Contracts Lecture 235 Spliting CQRS Contract related common operations into Shared.Contracts Class lib Lecture 236 Step 3: Modify Catalog Module getting reference from Catalog.Contracts Class Lib Lecture 237 Step 4: Basket Get Reference from Catalog.Contracts Class Library Lecture 238 Step 6: Get Product entity values into AddItemIntoBasketHandler and set Price Lecture 239 Test Basket AddItemIntoBasket Sync Call to Catalog Module to Get Product Data Lecture 240 Step 7: Migrating Microservices: Evolving Contracts Sync Communication Section 22: Async Communications between Modules w/ RabbitMQ & MassTransit for UpdatePrice Lecture 241 Introduction - Async Communications between Modules w/ RabbitMQ & MassTransit Lecture 242 How Modular Monolithic Architecture Handle Async Communications Between Modules Lecture 243 Fan-Out Publish/Subscribe Messaging Pattern Lecture 244 Quick Remember: Domain vs Integration Events - Domain leads to Integration Event Lecture 245 Domain Analysis of Async Communication between Catalog and Basket Modules Lecture 246 Technical Analysis of Async Communication between Catalog and Basket Modules Lecture 247 Steps of Developing Async Communication between Catalog and Basket Modules Lecture 248 Step1: Examine Catalog Module Domain and Integration Events Lecture 249 Step2: Create Shared.Messaging Class Library Lecture 250 Develop ProductPriceChangedIntegration Event in Shared.Messaging Class Library Lecture 251 Develop MassTransit Extention Methods to Register RabbitMQ connection into DI Lecture 252 Develop MassTransit Extention Methods to Register connection into DI of Catalog Lecture 253 Add Project Reference to Shared.Messaging in Catalog and Basket Modules Lecture 254 Register MassTransit Packages into Bootstrapper Api DI in Program.cs file Lecture 255 ProductPriceChanged Integration Event: How Domain leads to Integration Event Lecture 256 Step3: Catalog Publish UpdatePrice Integration Event Lecture 257 Step4: Basket Subscribe and consume ProductPriceChanged Integration Event Lecture 258 Develop UpdateItemPriceInBasket Feature in Basket Module Lecture 259 Develop UpdateItemPriceInBasket Feature in Basket Module - Part 2 Lecture 260 Call UpdateItemPriceInBasketCommand in ProductPriceChangedIntegrationEventHander Lecture 261 TEST - ProductPriceChangedIntegrationEvent w/ In-memory MassTransit Lecture 262 What is RabbitMQ and Main Components of RabbitMQ (Producer, Queue, Consumer) Lecture 263 Shifting In-memory Bus to RabbitMQ Message broker in Masstransit Lecture 264 Develop MassTransit Extention Methods to Register RabbitMQ connection into DI Lecture 265 Setup RabbitMQ for Async Communication using Docker-compose file Lecture 266 Run Docker-Compose on Visual Studio to setup RabbitMQ on Docker Lecture 267 TEST - ProductPriceChangedIntegrationEvent w/ RabbitMQ MassTransit Beginner .NET Developers who is curious about .NET Backend technologies with Modular Monolith Architectures |