NET 8 Backend Bootcamp: Modulith، VSA، DDD، CQRS و Outbox

.NET 8 Backend Bootcamp: Modulith, VSA, DDD, CQRS and Outbox

نکته: آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
نمونه ویدیوها:
توضیحات دوره: توسعه ماژول EShop در دات نت با استفاده از Asp.Net Web API، PostgreSQL، Redis، RabbitMQ، Keycloak، Seq، Docker، MassTransit Modular Monoliths (Modulith) CQRS) الگوی صندوق خروجی برای پیام‌رسانی قابل اعتماد CQRS (تفکیک مسئولیت پرس و جوی فرمان) و معماری‌های برش عمودی برای توسعه ماژول، از طریق فراخوان‌های روش در فرآیند-APIهای عمومی ارتباط برقرار کنید و از RabbitMQ برای ارتباطات مبتنی بر رویداد استفاده کنید. APIهای امن با Keycloak، با استفاده از OpenID Connect و Bearer Token ASPNET Core Minimal API و آخرین ویژگی‌های Net8. و C# 12 Vertical Slice Architecture با پوشه‌های ویژگی DDD، الگوهای CQRS با استفاده از کتابخانه MediatR با بهترین روش‌ها استفاده از رویدادهای دامنه و رویدادهای یکپارچه‌سازی هنگام UpdatePriceChanged رویداد استفاده از Entity Framework Code-F Core مهاجرت در پایگاه داده PostgreSQL نگرانی های متقاطع از جمله ثبت با Serilog، اعتبارسنجی با رفتارهای خط لوله MediatR، استثناها، صفحه بندی با استفاده از Redis به عنوان حافظه پنهان توزیع شده روی پایگاه داده PostgreSQL توسعه الگوهای پروکسی، دکوراتور و Cache-Aside همگام سازی ارتباطات بین کاتالوگ ها و Basket فراخوانی روش (APIهای عمومی) ارتباطات غیرهمگام بین ماژول‌ها با RabbitMQ و MassTransit توسعه ماژول هویت کاربر با تأیید اعتبار Keycloak OAuth2 + OpenID اتصال جریان‌ها با الگوی صندوق خروجی Keycloak برای پیام‌رسانی قابل اعتماد با استفاده از BasketCheckout CasketyT ، مصرف کنید from Ordering Module Migring to Microservices: EShop Modules to Microservices w/Stranger Fig Pattern پیش نیازها:مبانی سی شارپ و برنامه نویسی

در این بوت کمپ، نحوه ایجاد برنامه‌های کاربردی قوی، مقیاس‌پذیر و قابل نگهداری با استفاده از فناوری‌های پیشرفته و الگوهای معماری را خواهید آموخت.

ما توسعه خواهیم داد؛

  1. معماری یکپارچه مدولار (مدولیت)

  2. معماری برش عمودی (VSA)

  3. طراحی دامنه محور (DDD)

  4. تفکیک مسئولیت پرس و جو فرمان (CQRS)

  5. الگوی صندوق خروجی برای پیام رسانی قابل اعتماد

ما با اصول اولیه شروع می کنیم و به تدریج در هر موضوع عمیق تر می شویم. شما تجربه عملی در ساخت یک برنامه EShop Modular Monolith کامل، پیاده سازی ویژگی هایی مانند CQRS و الگوی صندوق خروجی خواهید داشت.

  • برای توسعه ماژول از معماری‌های CQRS (تفکیک مسئولیت پرس و جو فرمان) و برش عمودی پیروی می‌کنیم.

  • ماژول‌ها از طریق فراخوانی روش در فرآیند-APIهای عمومی ارتباط برقرار می‌کنند و از RabbitMQ برای ارتباطات مبتنی بر رویداد استفاده می‌کنند.

  • ما API های خود را با Keycloak، با استفاده از OpenID Connect و Bearer Tokens ایمن می کنیم.

  • ما الگوی صندوق خروجی را برای پیام رسانی مطمئن بین ماژول ها پیاده سازی می کنیم.

همراه با این، ماژول ها و موارد زیر را توسعه خواهید داد:

ماژول کاتالوگ که;

  • استفاده از Asp.Net Core Minimal API و آخرین ویژگی‌های Net8. و C# 12

  • معماری برش عمودی را با پوشه‌های Feature توسعه دهید

  • توسعه الگوهای DDD، CQRS با استفاده از کتابخانه MediatR با پیروی از بهترین روش‌ها

  • از رویدادهای ادغام رویدادهای دامنه هنگام رویداد UpdatePriceChanged استفاده کنید

  • استفاده از Entity Framework Core Code-First Approach and Migrations در پایگاه داده PostgreSQL

  • از Carter برای نمایش نقاط پایانی Minimal Api

    استفاده کنید
  • نگرانی های متقابل از جمله ثبت با Serilog، اعتبارسنجی با رفتارهای خط لوله MediatR، استثناها، صفحه بندی

ماژول سبد که شامل؛

  • مشابه کاتالوگ ماژول. توسعه DDD، CQRS، اجرای معماری برش عمودی

    به علاوه؛

  • استفاده از Redis به عنوان کش توزیع شده روی پایگاه داده PostgreSQL

  • توسعه و پیاده سازی الگوهای Proxy، Decorator و Cache-Aside

  • انتشار BasketCheckoutEvent در RabbitMQ از طریق کتابخانه MassTransit

  • پیاده‌سازی الگوی صندوق خروجی برای پیام‌رسانی قابل اعتماد با استفاده از حالت BasketCheckout

ارتباطات ماژول.

  • همگام‌سازی ارتباطات بین ماژول‌های کاتالوگ و سبد با فراخوان‌های روش در فرآیند (APIهای عمومی)

  • ارتباطات همگام بین ماژول ها با RabbitMQ MassTransit برای UpdatePrice بین ماژول های کاتالوگ-سبد

ماژول هویت که شامل؛

  • ماژول هویت کاربر را با تأیید هویت Keycloak توسعه دهید

  • OAuth2 + OpenID Connect Flows با Keycloak

  • راه اندازی Keycloak در فایل Docker-compose برای Identity Provider به عنوان یک سرویس پشتیبان

  • ماژول‌های EShop را با Keycloak OpenId Connect در AspNet ایمن کنید

  • توکن JwtBearer برای OpenID Connect with Keycloak Identity

ماژول سفارش که شامل؛

  • مشابه کاتالوگ و ماژول سبد. توسعه DDD، CQRS، اجرای معماری برش عمودی

  • پیاده‌سازی الگوی صندوق خروجی برای پیام‌رسانی قابل اعتماد با استفاده از حالت BasketCheckout

در آخر،

را مورد بحث قرار خواهیم داد
  • مهاجرت به Microservices: ماژول های EShop به Microservices با الگوی عجیب و غریب Fig

این دوره فراتر از یادگیری دات نت است، این دوره یک شیرجه عمیق به دنیای یکپارچه های مدولار با معماری برش عمودی، طراحی دامنه محور (DDD)، CQRS و الگوهای معماری پیشرفته برای توسعه Backend است.


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

مقدمه Introduction

  • مقدمه Introduction

  • پیش نیازها، کد منبع و اسلایدهای دوره Prerequisites, Source Code and Course Slides

  • برنامه نهایی را اجرا کنید Run the Final Application

  • ساختار کد پروژه Project Code Structure

  • معماری‌ها، الگوها، کتابخانه‌ها و بهترین روش‌های مونولیت مدولار Modular Monoliths Architectures, Patterns, Libraries and Best Practices

  • نحوه پیگیری دوره (جریان دوره و نحوه یادگیری) How to Follow the Course (The Course Flow and Way of Learning)

معماری یکپارچه - اشکال یکپارچه های سنتی چیست؟ Monolithic Architecture - What's wrong with Traditional Monoliths ?

  • یکپارچه های سنتی (معماری یکپارچه) چیست؟ What is Traditional Monoliths (Monolithic Architecture) ?

  • زمان استفاده از معماری یکپارچه When to use Monolithic Architecture

  • چه اشکالی در معماری سنتی یکپارچه وجود دارد؟ What's wrong with Traditional Monolithic Architecture ?

  • قفل فناوری و چرخه ترس در معماری یکپارچه سنتی Technology Lock-In and Fear Cycle in Traditional Monolithic Architecture

  • توپ بزرگ از گل Big Ball of Mud

Microservices Architectures - چرا پروژه ها مناسب نیستند؟ Microservices Architectures - Why it is not fit projects ?

  • Microservices و Microservices Architecture چیست؟ What are Microservices and Microservices Architecture ?

  • زمان استفاده از معماری Microservices When to Use Microservices Architecture

  • مشکل معماری Microservices چیست؟ What's wrong with Microservices Architecture ?

  • اشتباهات محاسبات توزیع شده Fallacies of Distributed Computing

  • Microservices Antipattern: The Distributed Monolith Microservices Antipattern: The Distributed Monolith

  • مورد آمازون: معماری مجدد از یک میکروسرویس های توزیع شده به یک تک سنگ Amazon Case: Rearchitecting from a Distributed Microservices to a Monolith

پل: معماری های یکپارچه مدولار - دروازه بین یکپارچه و MS The Bridge: Modular Monolith Architectures - Gateway between Monolithic and MS

  • معماری مدولار یکپارچه (مدولیت) چیست؟ What is Modular Monolithic (Modulith) Architecture ?

  • چرا یکپارچه های مدولار؟ مزایا نسبت به میکروسرویس ها؟ Why Modular Monoliths ? Advantages over Microservices ?

  • اولین رویکردهای یکپارچه از مارتین فاولر و سام نیومن Monolith First Approaches from Martin Fowler and Sam Newman

  • نقطه شروع برای میکروسرویس ها: انتقال تدریجی با Refactor افزایشی Starting Point for Microservices: Gradually Transition with Incremental Refactor

  • مقایسه Monolith، Microservices، Modular Monolith: Communications and Data Compare of Monolith, Microservices, Modular Monolith: Communications and Data

  • مقایسه Monolith، Microservices، Modular Monolith: Development and Deployment Compare of Monolith, Microservices, Modular Monolith: Development and Deployment

  • معماری یکپارچه مدولار Shopify Shopify Modular Monolithic Architecture

  • تجزیه ماژول های EShop: کاتالوگ، سبد، ماژول های هویت و سفارش Decomposition of EShop Modules: Catalog, Basket, Identity and Ordering Modules

ساختار راه حل پروژه EShop Modular Monolith را ایجاد کنید Create EShop Modular Monolith Project Solution Structure

  • مقدمه - ساختار راه حل پروژه EShop Modular Monolith را ایجاد کنید Introduction - Create EShop Modular Monolith Project Solution Structure

  • مخزن GitHub را برای EShop Modular Monolithic Architecture ایجاد کنید Create GitHub Repository for EShop Modular Monolithic Architecture

  • ایجاد راه حل خالی جدید: eshop-modular-monoliths Create New Blank Solution: eshop-modular-monoliths

  • ساختار پوشه یکپارچه مدولار: Bootstrapper، Modules، Shared Modular Monolith Folder Structure: Bootstrapper, Modules, Shared

  • پروژه Bootstrapper Api را ایجاد کنید Create Bootstrapper Api Project

  • Empty Web Project را برای Bootstrapper Api Modular Monolith پیکربندی کنید Configure Empty Web Project to Bootstrapper Api of Modular Monolith

  • پوشه‌های ماژول‌ها را مطابق با تحلیل زمینه محدود DDD ایجاد کنید Create Modules Folders according to DDD Bounded Context Analysis

  • معماری خارجی در مقابل معماری داخلی معماری تک سنگ های مدولار External vs Internal Architecture of Modular Monoliths Architecture

  • معماری برش عمودی Vertical Slice Architecture

  • معماری پاک Clean Architecture

  • برش عمودی در مقابل معماری تمیز Vertical Slice versus Clean Architecture

  • پروژه های ماژول را به عنوان کتابخانه کلاس ایجاد کنید Create Module Projects as a Class Library

  • الگوی هسته مشترک در DDD Shared Kernel Pattern in DDD

  • پروژه کتابخانه کلاس هسته مشترک برای همه ماژول ها ایجاد شد Created Shared Kernel Class Library Project for All Modules

  • وابستگی های پروژه مشترک به پروژه های ماژول Shared Project Dependencies to Modules Projects

  • وابستگی های ماژول به Bootstrapper Asp.Net Api Project Module Dependencies to Bootstrapper Asp.Net Api Project

وابستگی های بین ماژول ها (مدیریت DI ماژول ها) Wire-up Dependencies Between Modules (DI Management of Modules)

  • مقدمه - وابستگی های اتصال بین ماژول ها (مدیریت DI ماژول ها) Introduction - Wire-up Dependencies Between Modules (DI Management of Modules)

  • Asp.net Dependency Injection Management و Program.cs Asp.net Dependency Injection Management and Program.cs

  • سیم کشی وابستگی بین ماژول ها Wiring up dependencies between modules

  • روش گسترش AddCatalogModule را در CatalogModule.cs توسعه دهید Develop AddCatalogModule extention method in CatalogModule.cs

  • ثبت وابستگی های کاتالوگ در Program.cs Registering Catalog Dependencies into Program.cs

  • روش های توسعه AddBasketModule، AddOrderingModule را توسعه دهید Develop AddBasketModule, AddOrderingModule extention methods

  • ثبت سبد و سفارش وابستگی ها در Program.cs Registering Basket and Ordering Dependencies into Program.cs

  • Asp.net Middlewares and Http Request Pipeline Asp.net Middlewares and Http Request Pipeline

  • پیکربندی خطوط لوله درخواست Http برای ماژول ها در Program.cs Configure Http Request Pipelines for Modules in Program.cs

  • کلاس WebApplication Use Abstractions را بررسی کنید و بسته های مورد نیاز را نصب کنید Examine WebApplication Class Use Abstractions and Install Required Packages

  • روش گسترش UseCatalogModule را برای ماژول توسعه دهید. درخواست HTTP را پیکربندی کنید Develop UseCatalogModule extention method for Module Configure the HTTP request

  • ادغام UseCatalogModule در Program.cs Integrating UseCatalogModule in Program.cs

  • روش گسترش UseBasketModule و UseOrderingModule را برای پیکربندی ماژول توسعه دهید Develop UseBasketModule and UseOrderingModule extention method for Module Config

  • ادغام روش گسترش UseBasketModule و UseOrderingModule در Program.cs Integrating UseBasketModule and UseOrderingModule extention method in Program.cs

  • GlobalUsings.cs را برای هر پروژه اضافه کنید تا از بیانیه های اضافی استفاده نکنید Add GlobalUsings.cs for Each Project to Avoid Redundant Using Statements

ماژول اول: ماژول کاتالوگ با معماری برش عمودی و CQRS First Module: Catalog Module with Vertical Slice Architecture and CQRS

  • مقدمه - ماژول اول: ماژول کاتالوگ با معماری برش عمودی Introduction - First Module: Catalog Module with Vertical Slice Architecture

  • ماژول تجزیه و تحلیل دامنه کاتالوگ: مدل ها، UC ها، Rest Apis، پایگاه های داده Domain Analysis of Catalog Module: Models, UCs, Rest Apis, Databases

  • ماژول تحلیل فنی کاتالوگ: معماری، الگوها، کتابخانه ها، پوشه ها Technical Analysis of Catalog Module: Architectures, Patterns, Libraries, Folder

  • راه توسعه: اشتراک گذاری شده -> ماژول ها -> API Way of Development: Shared -> Modules -> API

توسعه دامنه مشترک برای انتزاع تاکتیکی DDD (موجود، جمع، رویدادها) Develop Shared Domain for Tactical DDD Abstraction (Entity, Aggreagate, Events)

  • مقدمه - توسعه دامنه مشترک برای انتزاع تاکتیکی DDD Introduction - Develop Shared Domain for Tactical DDD Abstraction

  • طراحی دامنه محور - DDD Domain Driven Design - DDD

  • طراحی دامنه محور تاکتیکی: موجودیت ها، اشیاء ارزش، مجموع، ریشه های A. Tactical Domain-Driven Design: Entities, Value Objects, Aggregates, A. Rooots

  • توسعه انتزاعات DDD (Entity، Aggregate، DomainEvent) در کتابخانه مشترک Develop DDD Abstractions (Entity, Aggregate, DomainEvent) in Shared Library

  • توسعه رابط IDomainEvent در Tactical DDD Abstraction با استفاده از MediatR Develop IDomainEvent interface in Tactical DDD Abstraction using MediatR

  • کلاس‌های مجموع را در انتزاع تاکتیکی DDD ایجاد کنید Develop Aggregate classes in Tactical DDD Abstraction

دامنه کاتالوگ را با مدل های موجودیت دامنه محصول توسعه دهید Develop Catalog Domain with Product Domain Entity Models

  • مقدمه - توسعه دامنه کاتالوگ با مدل های موجودیت دامنه محصول Introduction - Develop Catalog Domain with Product Domain Entity Models

  • مدل‌های موجودیت دامنه محصول را در مدل‌های دامنه ماژول کاتالوگ توسعه دهید Develop Product Domain Entity Models in Catalog Module Domain Models

  • دامنه کم خون در مقابل نهادهای مدل دارای دامنه غنی در DDD Anemic-domain vs Rich-domain Model Entities Entities in DDD

  • مدل DDD Rich-domin Entity برای نهاد محصول توسعه دهید Develop DDD Rich-domain model Entity for Product Entity

  • رویدادهای دامنه در DDD و رویدادهای دامنه در مقابل ادغام Domain Events in DDD and Domain vs Integration Events

  • رویداد دامنه ایجاد شده و به روز شده محصول را در ماژول کاتالوگ توسعه دهید Develop Product Created and Updated Domain Event in Catalog Module

  • رویداد دامنه ProductCreated و ProductPriceChanged را در ماژول کاتالوگ افزایش دهید Raise ProductCreated and ProductPriceChanged Domain Event in Catalog Module

مدیریت داده های یکپارچه مدولار: راه اندازی Postgres به عنوان یک پایگاه داده اصلی Data Management of Modular Monolith: Setup Postgres as a Main Database

  • مقدمه - مدیریت داده های یکپارچه مدولار: راه اندازی Postgres DB Introduction - Data Management of Modular Monolith: Setup Postgres DB

  • مدیریت داده های یکپارچه های مدولار: 4 استراتژی جداسازی داده ها Data Management of Modular Monoliths: 4 Data Isolation Strategies

  • بهترین تمرین: جداسازی طرحواره DB ماژول ها در برنامه های Modular Monoliths Best Practice: DB Schema separation of Modules in Modular Monoliths apps

  • شیء متنی چند متنی EF DB برای طرحواره جداگانه DB برای جداسازی داده ها Multi-context EF DB Context object for DB Separate Schema for Data Isolation

  • خدمات پشتیبان برای معماری‌های Cloud-Native Backing Services for Cloud-Native Architectures

  • استراتژی استقرار یکپارچه مدولار EShop EShop Modular Monolith Deployment Strategy

  • راه اندازی PostgreSQL DB با استفاده از فایل Docker-compose برای Multi-container Docker env Setup PostgreSQL DB using Docker-compose file for Multi-container Docker env

  • تصویر PostgreSQL DB را به فایل Docker-compose برای Multi-container Docker env اضافه کنید Add PostgreSQL DB image into Docker-compose file for Multi-container Docker env

  • برای راه اندازی PostgreSQL DB در داکر، Docker-Compose را در ویژوال استودیو اجرا کنید Run Docker-Compose on Visual Studio to setup PostgreSQL DB on Docker

  • با استفاده از pgAdmin، PostgreSQL DB را متصل و مرور کنید Connect and Browse PostgreSQL DB using pgAdmin

ابتدا زیرساخت داده های اشتراکی و کاتالوگ را با کد اصلی EF توسعه دهید Develop Shared and Catalog Data-Infrastructure with EF Core Code First

  • مقدمه - لایه زیرساخت داده مشترک و کاتالوگ را با EF Core توسعه دهید Introduction - Develop Shared and Catalog Data-Infrastructure Layer with EF Core

  • ویژگی های EF Core 8، رویکرد اول کد، مهاجرت و اتصال PostgreSQL EF Core 8 Features, Code First Approach, Migrations and PostgreSQL Connection

  • مراحل توسعه هسته EF برای زیرساخت داده مشترک و کاتالوگ Steps of EF Core Developments for Shared and Catalog Data-Infrastructure

  • بسته‌های EF Core Nuget را در کتابخانه مشترک نصب کنید Install EF Core Nuget Packages in Shared Library

  • EF Core DBContext Object را برای ذخیره نهادها در ماژول کاتالوگ توسعه دهید Develop EF Core DBContext Object for Storing Entities in Catalog Module

  • نگاشت اشیاء DDD به موجودیت های EF - پیکربندی های موجودیت هسته EF را توسعه دهید Mapping DDD Objects to EF Entities - Develop EF Core Entity Configurations

  • رشته اتصال EF Core PostgreSQL در فایل appsettings.json EF Core PostgreSQL Connection String in appsettings.json file

  • ثبت EF Core DbContext در Asp.Net DependencyInjection Tool برای PostgreSQL Register EF Core DbContext in Asp.Net DependencyInjection Tool for PostgreSQL

  • ایجاد EF Core Migrations برای CatalogDbContext - قسمت 1 Create EF Core Migrations for CatalogDbContext - Part 1

  • ایجاد EF Core Migrations برای CatalogDbContext - قسمت 2 Create EF Core Migrations for CatalogDbContext - Part 2

  • بررسی و اجرای Docker-Compose در Visual Studio برای راه اندازی PostgreSQL DB در Docker Review and Run Docker-Compose on Visual Studio to setup PostgreSQL DB on Docker

  • اعمال EF Core Migrations به PostgreSQL DB با دستور Update-Database Apply EF Core Migrations to PostgreSQL DB with Update-Database Command

  • هنگام راه‌اندازی برنامه، نهادهای اصلی EF را به PostgreSQL DB منتقل کنید Auto Migrate EF Core Entities to PostgreSQL DB when Application Startup

  • برای مهاجرت و بذر DB، روش گسترش مهاجرت عمومی را توسعه دهید Develop Generic UseMigration extention method for DB Migration and Seed

  • استفاده از روش گسترش UseMigration در کلاس‌های DependencyInjection ماژول Using UseMigration extention method on Module DependencyInjection classes

  • انتقال خودکار را با روش گسترش UseMigration در WebApplication آزمایش کنید Test Auto-Migrations with UseMigration extention method on WebApplication

  • داده‌های محصول EShopDb را هنگام راه‌اندازی برنامه درست پس از مهاجرت استفاده کنید Seed EShopDb Product Data When Application Startup Just After UseMigration

  • ماژول کاتالوگ را برای مهاجرت و Seed EShopDb با روش UseMigration اجرا کنید Run Catalog Module to Migrate and Seed EShopDb with UseMigration method

  • EF Core Interceptor: SaveChangesInterceptor برای نهادهای حسابرسی EF Core Interceptors: SaveChangesInterceptor for Auditing Entities

  • SaveChangesInterceptor را برای نهادهای حسابرسی برای نهادهای سفارش توسعه دهید Develop SaveChangesInterceptor to Auditing Entities for Order Entities

  • ماژول کاتالوگ اجرا و آزمایش برای حسابرسی با EF Save Changes Interceptor Run&Test Catalog Module for Audit with EF Save Changes Interceptor

  • رویدادهای دامنه را با EF Core SaveChangesInterceptor ارسال کنید Dispatch Domain Events w/ EF Core SaveChangesInterceptor

  • توسعه DispatchDomainEventsInterceptor برای فعال کردن Domain Event Handlers Develop DispatchDomainEventsInterceptor to Trigger Domain Event Handlers

  • ماژول کاتالوگ اجرا و آزمایش برای Dispatch DomainEvents با EF SaveChanges Interceptor Run&Test Catalog Module for Dispatch DomainEvents w/ EF SaveChanges Interceptor

توسعه مورد استفاده برنامه با CQRS و MediatR Application Use Case Development with CQRS and MediatR

  • مقدمه - توسعه کاربرد کاربرد با CQRS و MediatR Introduction - Application Use Case development with CQRS and MediatR

  • الگوی CQRS (تفکیک مسئولیت پرس و جوی فرمان). CQRS (Command Query Responsibility Segregation) Pattern

  • پیاده سازی منطقی و فیزیکی الگوی CQRS Logical and Physical Implementation of CQRS Pattern

  • الگوی طراحی CQRS با کتابخانه MediatR (اجرای منطقی CQRS) CQRS Design Pattern With MediatR Library (Logical CQRS Implementation)

  • کلاس Feature Handler را با CQRS و MediatR توسعه دهید Develop Feature Handler class with CQRS and MediatR

  • ایجاد Abstraction در MediatR برای CQRS - Command and Query Separation Create Abstraction on MediatR for CQRS - Command and Query Separation

  • ایجاد Abstraction در MediatR برای CQRS - Command and Query Separation - 2 Create Abstraction on MediatR for CQRS - Command and Query Separation - 2

توسعه مورد استفاده برنامه کاتالوگ با CQRS و MediatR Catalog Application Use Case Development with CQRS and MediatR

  • مقدمه - توسعه مورد کاربرد برنامه کاتالوگ با CQRS و MediatR Introduction - Catalog Application Use Case Development with CQRS and MediatR

  • به یاد داشته باشید سریع ماژول کاتالوگ تجزیه و تحلیل موارد استفاده برنامه Quick Remember Catalog Module Application Use Cases Analysis

  • ساختار پوشه ماژول کاتالوگ را برای CQRS توسعه دهید Develop Catalog Module Folder Structure for CQRS

  • کلاس های Dto را برای محصول در ماژول کاتالوگ توسعه دهید Develop Dto Classes for Product in Catalog Module

  • محصولات CreateProductCommand و Handler را در برنامه ماژول های کاتالوگ توسعه دهید Develop Products CreateProductCommand and Handler in Catalog Modules Application

  • توسعه محصولات CreateProductCommandHandler با استفاده از CatalogDbContext در کاتالوگ Develop Products CreateProductCommandHandler using CatalogDbContext in Catalog

  • توسعه محصولات UpdateProductCommand و Handler با استفاده از CatalogDbContext Develop Products UpdateProductCommand and Handler using CatalogDbContext

  • محصولات DeleteProductCommand و Handler را با استفاده از CatalogDbContext توسعه دهید Develop Products DeleteProductCommand and Handler using CatalogDbContext

  • پرس و جوهای محصول را با CQRS و MediatR در ماژول کاتالوگ توسعه دهید Develop Product Queries with CQRS and MediatR in Catalog Module

  • نقشه برداری با Mapster Mapping with Mapster

  • پرس و جوهای محصول را با CQRS و MediatR در ماژول کاتالوگ با Mapster توسعه دهید Develop Product Queries with CQRS and MediatR in Catalog Module w/ Mapster

  • پرس و جوهای GetProductByCategory را با CQRS و MediatR در ماژول کاتالوگ توسعه دهید Develop GetProductByCategory Queries with CQRS and MediatR in Catalog Module

  • پرس و جوهای GetProductById را با CQRS و MediatR در ماژول کاتالوگ توسعه دهید Develop GetProductById Queries with CQRS and MediatR in Catalog Module

  • مدیریت رویدادهای دامنه را با MediatR INotificationHandler در کاتالوگ توسعه دهید Develop Domain Event Handlers with MediatR INotificationHandler in Catalog

  • مدیریت رویدادهای دامنه را با MediatR INotificationHandler - قسمت 2 توسعه دهید Develop Domain Event Handlers with MediatR INotificationHandler - Part 2

ایجاد نقاط پایانی API کاتالوگ با Carter و REPR نقاط پایانی API را در معرض دید قرار دهید Develop Catalog API Endpoints Expose Minimal Api Endpoints with Carter and REPR

  • مقدمه - ایجاد نقاط پایانی API کاتالوگ با افشای نقاط پایانی Api حداقل Introduction - Develop Catalog API Endpoints Exposing Minimal Api Endpoints

  • الگوی طراحی REPR و CQRS MediatR Request Life Cycle REPR Design Pattern and CQRS MediatR Request LifeCycle

  • Minimal Apis و نصب Carter Library برای افشای Minimal Apis Minimal Apis and Install Carter Library to Expose Minimal Apis

  • به خاطر سپردن سریع تجزیه و تحلیل نقاط پایانی ماژول کاتالوگ Quick Remember Catalog Module Endpoints Analysis

  • CreateProduct POST Endpoint را با پیاده سازی Carter ICarterModule توسعه دهید Develop CreateProduct POST Endpoint with Carter implements ICarterModule

  • توسعه CreateProduct POST Endpoint با پیاده سازی Carter ICarterModule- Part 2 Develop CreateProduct POST Endpoint with Carter implements ICarterModule- Part 2

  • توسعه UpdateProduct Endpoint برای REST API در ماژول کاتالوگ Developing UpdateProduct Endpoint for REST APIs in Catalog Module

  • در حال توسعه DeleteProduct Endpoint برای REST API در ماژول کاتالوگ Developing DeleteProduct Endpoint for REST APIs in Catalog Module

  • در حال توسعه GetProducts Endpoint برای REST API در ماژول کاتالوگ Developing GetProducts Endpoint for REST APIs in Catalog Module

  • در حال توسعه GetProductById Endpoint برای REST API در ماژول کاتالوگ Developing GetProductById Endpoint for REST APIs in Catalog Module

  • ایجاد نقطه پایانی GetProductByCategory برای REST API در ماژول کاتالوگ Developing GetProductByCategory Endpoint for REST APIs in Catalog Module

  • کتابخانه های Carter را در Asp.Net Dependency Injection Service و درخواست ثبت کنید Register Carter libraries into Asp.Net Dependency Injection Service and Request

  • ایجاد روش گسترش برای ثبت نام های مونتاژ کارتر Create Extention Method for Carter Assembly Registrations

  • مجموعه Postman را برای EShopModules ایجاد کنید Create Postman Collection for EShopModules

  • ماژول کاتالوگ آزمایشی - درخواست ارسال محصول ایجاد کنید - API حداقل Carter اشکال زدایی Test Catalog Module - CreateProduct POST Request - Debug Carter Minimal API

  • UpdateProduct Endpoint را با CQRS و VSA در ماژول کاتالوگ آزمایش کنید Test UpdateProduct Endpoint with CQRS and VSA in Catalog Module

  • دریافت نقاط پایانی محصول را با CQRS و VSA در ماژول کاتالوگ آزمایش کنید Test Get Product Endpoints with CQRS and VSA in Catalog Module

  • DeleteProduct Endpoint را با CQRS و VSA در ماژول کاتالوگ آزمایش کنید Test DeleteProduct Endpoint with CQRS and VSA in Catalog Module

ایجاد نگرانی های متقابل برای کاتالوگ و هر ماژول در ماژول های EShop Develop Cross-cutting Concerns for Catalog and Each Module in EShop Modules

  • مقدمه - ایجاد نگرانی های متقابل برای کاتالوگ و هر ماژول Introduction - Develop Cross-cutting Concerns for Catalog and Each Module

  • کتابخانه رفتارهای خط لوله MediatR و اعتبارسنجی روان MediatR Pipeline Behaviours and Fluent Validation Library

  • برای استفاده در همه ماژول‌ها، نگرانی‌های متقابل را به کتابخانه کلاس مشترک اضافه کنید Add Cross-cutting Concerns into Shared Class Library to use in all modules

  • با استفاده از کتابخانه Fluent Validation، اعتبارسنجی را با AbstractValidator اعمال کنید Apply Validation with AbstractValidator using Fluent Validation Library

  • اعتبارسنجی را با AbstractValidator با استفاده از کتابخانه اعتبارسنجی فلوئنت - قسمت 2 اعمال کنید Apply Validation with AbstractValidator using Fluent Validation Library - Part 2

  • رفتار خط لوله اعتبار سنجی با MediatR با استفاده از کتابخانه اعتبارسنجی روان Validation Pipeline Behaviour with MediatR using Fluent Validation Library

  • حذف Manual Validator و Test Validation Pipeline Behavior با استفاده از MediatR Remove Manual Validator and Test Validation Pipeline Behaviour with MediatR usin

  • اعتبارسنجی فرمان CRUD را با اعتبارسنجی روان توسعه دهید Develop CRUD Command Validators with Fluent Validation

  • استثناهای مدیریت جهانی در هسته ASP.NET با app.UseExceptionHandler Global Handling Exceptions in ASP.NET Core with app.UseExceptionHandler

  • روش عمومی استثناهای دسته مشترک در هسته ASP.NET با برنامه.UseExceptionHandler Shared Handle Exceptions Generic Way in ASP.NET Core w/ app.UseExceptionHandler

  • مدیریت استثناهای جهانی با رابط IExceptionHandler در Asp.Net Core Global Exception Handling with IExceptionHandler interface in Asp.Net Core

  • با متد AddExceptionHandler، Custom Exception Handling را در Asp.net ثبت کنید Register Custom Exception Handling into Asp.net with AddExceptionHandler method

  • رفتار ورود به سیستم در خط لوله MediatR برای نگرانی های متقابل Logging Behavior in MediatR Pipeline for Cross-cutting concerns

  • آزمایش رفتار ثبت‌نام برای همه درخواست‌های MediatR در ماژول کاتالوگ Test Logging Behaviour for all MediatR Requests on Catalog Module

  • لاگ ساختاری با استفاده از Serilog در .NET 8.0 Minimal API Structured Logging Using Serilog in .NET 8.0 Minimal APIs

  • Serilog WriteTo Seq برای ورود ساختار یافته به دات نت Serilog WriteTo Seq for Structured Logging in .NET

  • کلاس صفحه بندی را برای Query GetProducts با استفاده از CQRS و MediatR ایجاد کنید Develop Pagination Class for Query GetProducts using CQRS and MediatR

  • پرس و جو GetProducts را توسعه دهید صفحه بندی را با استفاده از CQRS و MediatR اعمال کنید Develop GetProducts Query apply Pagination using CQRS and MediatR

ماژول سبد را با معماری برش عمودی و CQRS توسعه دهید Develop Basket Module with Vertical Slice Architecture and CQRS

  • مقدمه - توسعه ماژول سبد با معماری برش عمودی و CQRS Introduction - Develop Basket Module with Vertical Slice Architecture and CQRS

  • تجزیه و تحلیل دامنه ماژول سبد: مدل ها، UC ها، Rest Apis، پایگاه های داده Domain Analysis of Basket Module: Models, UCs, Rest Apis, Databases

  • تحلیل فنی ماژول سبد: معماری، الگوها، کتابخانه ها، پوشه ها Technical Analysis of Basket Module: Architectures, Patterns, Libraries, Folders

  • مدل‌های موجودیت دامنه سبد خرید را در نهادهای دامنه سبد توسعه دهید Develop ShoppingCart Domain Entity Models in Basket Domain Entities

  • نهاد مدل DDD Rich-domin برای نهادهای سبد خرید توسعه دهید Develop DDD Rich-domain model Entity for ShoppingCart Entities

زیرساخت داده سبد را با EF Core Code First و PostgreSQL توسعه دهید Develop Basket Data-Infrastructure with EF Core Code First and PostgreSQL

  • مقدمه - ابتدا زیرساخت داده های سبد را با کد اصلی EF توسعه دهید Introduction - Develop Basket Data-Infrastructure with EF Core Code First

  • مراحل توسعه زیرساخت EF Core برای ماژول سبد Steps of Infrastructure EF Core Developments for Basket Module

  • EF Core DBContext Object را برای ذخیره نهادها در زیرساخت سبد توسعه دهید Develop EF Core DBContext Object for Storing Entities in Basket Infrastructure

  • نگاشت اشیاء DDD به موجودیت های EF - پیکربندی های موجودیت هسته EF را توسعه دهید Mapping DDD Objects to EF Entities - Develop EF Core Entity Configurations

  • EF Core 8 Relations و DDD ValueObject Mapping با ComplexType و Property EF Core 8 Relations and DDD ValueObject Mapping with ComplexType and Property

  • SC و SC Items Relations Entity Configurations را توسعه دهید Develop SC and SC Items Relations Entity Configurations

  • رشته اتصال EF Core SQL Server در فایل appsettings.json EF Core SQL Server Connection String in appsettings.json file

  • ثبت EF Core DbContext در Asp.Net Dependency Injection Tool برای PostgreSQL Register EF Core DbContext in Asp.Net Dependency Injection Tool for PostgreSQL

  • EF Core Migrations را برای BasketDbContext در Basket Infrastructure ایجاد کنید Create EF Core Migrations for BasketDbContext in Basket Infrastructure

  • برای راه اندازی PostgreSQL در Docker، Docker-Compose را در ویژوال استودیو اجرا کنید Run Docker-Compose on Visual Studio to setup PostgreSQL on Docker

  • اعمال EF Core Migrations به PostgreSQL DB با دستور Update-Database Apply EF Core Migrations to PostgreSQL DB with Update-Database Command

  • هنگام راه‌اندازی برنامه با کدنویسی، نهادهای اصلی EF را به PostgreSQL منتقل کنید Auto Migrate EF Core Entities to PostgreSQL when Application Startup with Coding

  • انتقال خودکار را با روش گسترش UserMigration در WebApplication آزمایش کنید Test Auto-Migrations with UseMigration Extention Method on WebApplication

توسعه کاربرد سبد مورد استفاده با CQRS و MediatR Develop Basket Application Use Case Development with CQRS and MediatR

  • مقدمه - توسعه مورد استفاده از برنامه سبد با CQRS و MediatR Introduction - Basket Application Use Case Development with CQRS and MediatR

  • ساختار پوشه سبد را برای CQRS توسعه دهید Develop Basket Folder Structure for CQRS

  • کلاس‌های Dto را برای سبد خرید در ماژول سبد توسعه دهید Develop Dto Classes for ShoppingCart in Basket Module

  • Basket CreateBasketCommand و Handler را در موارد استفاده از برنامه Basket توسعه دهید Develop Basket CreateBasketCommand and Handler in Basket Application Use Cases

  • توسعه Basket CreateBasketCommandHandler با استفاده از BasketDbContext در ماژول Basket Develop Basket CreateBasketCommandHandler using BasketDbContext in Basket Module

  • توسعه Basket DeleteBasketCommand و Handler با استفاده از BasketDbContext در Basket Develop Basket DeleteBasketCommand and Handler using BasketDbContext in Basket

  • سبد جستجوها را با CQRS و MediatR در ماژول سبد توسعه دهید Develop Basket Queries with CQRS and MediatR in Basket Module

  • Basket AddItemIntoBasketHandler را با CQRS و MediatR توسعه دهید Develop Basket AddItemIntoBasketHandler with CQRS and MediatR

  • سبد RemoveItemFromBasketHandler را با CQRS و MediatR توسعه دهید Develop Basket RemoveItemFromBasketHandler with CQRS and MediatR

ایجاد نقاط پایانی Basket API با افشای حداقل نقاط پایانی API با Carter و REPR Develop Basket API Endpoints Exposing Minimal Api Endpoints with Carter and REPR

  • مقدمه - ایجاد نقاط پایانی Basket API با افشای حداقل نقاط پایانی API Introduction - Develop Basket API Endpoints Exposing Minimal Api Endpoints

  • CreateBasket POST Endpoint را با پیاده سازی Carter ICarterModule توسعه دهید Develop CreateBasket POST Endpoint with Carter implements ICarterModule

  • DeleteBasket Endpoint را با پیاده سازی Carter ICarterModule توسعه دهید Develop DeleteBasket Endpoint with Carter implements ICarterModule

  • توسعه GetBasket Endpoint با پیاده سازی Carter ICarterModule برای Minimal Apis Develop GetBasket Endpoint with Carter implements ICarterModule for Minimal Apis

  • AddItemIntoBasket Endpoint را با پیاده سازی Carter ICarterModule توسعه دهید Develop AddItemIntoBasket Endpoint with Carter implements ICarterModule

  • RemoveItemFromBasket Endpoint را با پیاده سازی Carter ICarterModule توسعه دهید Develop RemoveItemFromBasket Endpoint with Carter implements ICarterModule

  • کتابخانه های MediatR و Carter را در Asp.Net Dependency Injection Service ثبت کنید Register MediatR and Carter libraries into Asp.Net Dependency Injection Service

  • کتابخانه های MediatR را در Asp.Net Dependency Injection Service و درخواست ثبت کنید Register MediatR libraries into Asp.Net Dependency Injection Service and Request

  • روش توسعه MediatR را برای ثبت سفارشی با مجموعه ها توسعه دهید Develop MediatR Extention Method for Custom Registration With Assemblies

  • Test Basket API - CreateBasket POST Request - Debug Carter Minimal API Test Basket API - CreateBasket POST Request - Debug Carter Minimal API

  • دریافت نقاط پایانی سبد را با CQRS و VSA در ماژول سبد آزمایش کنید Test Get Basket Endpoints with CQRS and VSA in Basket Module

  • DeleteBasket Endpoint را با CQRS و VSA در ماژول سبد آزمایش کنید Test DeleteBasket Endpoint with CQRS and VSA in Basket Module

  • AddItemIntoBasket Endpoint را با CQRS و VSA در ماژول سبد آزمایش کنید Test AddItemIntoBasket Endpoint with CQRS and VSA in Basket Module

  • RemoveItemFromBasket Endpoint را با CQRS و VSA در ماژول سبد آزمایش کنید Test RemoveItemFromBasket Endpoint with CQRS and VSA in Basket Module

ذخیره سازی توزیع شده را با Redis در ماژول سبد توسعه دهید Develop Distributed Caching with Redis in Basket Module

  • مقدمه - ذخیره سازی توزیع شده را با Redis در ماژول سبد توسعه دهید Introduction - Develop Distributed Caching with Redis in Basket Module

  • کلاس BasketRepository را با استفاده از شیء EF Core DbContext توسعه دهید Develop BasketRepository Class using EF Core DbContext object

  • کلاس IBasketRepository را با استفاده از شیء EF Core DbContext پیاده سازی کنید Implement IBasketRepository Class using EF Core DbContext object

  • IBasketRepository را در DI ماژول سبد ثبت کنید Register IBasketRepository into DI of Basket Module

  • IBasketRepository را به کلاس های Handler در ماژول Basket تزریق و استفاده کنید Inject and Use IBasketRepository into Handler classes in Basket Module

  • IBasketRepository را به کلاس های AddItem و RemoveItem Handler تزریق و استفاده کنید Inject and Use IBasketRepository into AddItem and RemoveItem Handler classes

  • نقطه پایانی سبد تست سریع با CQRS و VSA در ماژول سبد Quick Test Basket Endpoint with CQRS and VSA in Basket Module

  • الگوی Cache-Aside و Cache Invalidation Cache-aside Pattern and Cache Invalidation

  • الگوی پروکسی، الگوی دکوراتور و کتابخانه اسکروتور Proxy Pattern, Decorator Pattern and Scrutor Library

  • توسعه CachedBasketRepository با Proxy Pattern، Decorator Pattern و Scrutor Develop CachedBasketRepository with Proxy Pattern, Decorator Pattern and Scrutor

  • توسعه CachedBasketRepository با الگوی پراکسی، الگوی دکوراتور - قسمت 2 Develop CachedBasketRepository with Proxy Pattern, Decorator Pattern - Part 2

  • توسعه CachedBasketRepository با الگوی پراکسی، الگوی دکوراتور - قسمت 3 Develop CachedBasketRepository with Proxy Pattern, Decorator Pattern - Part 3

  • Repository CachedBasket Decorated و StackExchangeRedis را با Scrutor ثبت کنید Register Decorated CachedBasketRepository and StackExchangeRedis with Scrutor

  • StackExchangeRedis را در Common DI در Api Project Program.cs ثبت کنید Register StackExchangeRedis into Common DI in Api Project Program.cs

  • Redis را به عنوان یک کش توزیع شده با استفاده از فایل Docker-compose برای Multi-container راه اندازی کنید Setup Redis as a Distributed Cache using Docker-compose file for Multi-container

  • Docker-Compose را در ویژوال استودیو اجرا کنید تا کش توزیع شده Redis را در داکر راه اندازی کنید Run Docker-Compose on Visual Studio to setup Redis Distributed Cache on Docker

  • Redis Cache را از Local Basket Module متصل کنید و درخواست GET را ارسال کنید Connect Redis Cache from Local Basket Module and send GET request Basket Cache

  • هنگام خواندن در Redis، JsonConverter سفارشی را برای سبد خرید و اقلام توسعه دهید Develop Custom JsonConverter for ShoppingCart and Items When Reading to Redis

  • توسعه JsonConverter سفارشی برای سبد خرید و اقلام - قسمت 2 Develop Custom JsonConverter for ShoppingCart and Items - Part 2

  • از گزینه های سفارشی JsonSerializer با JsonConverter برای سبد خرید و اقلام استفاده کنید Use Custom JsonSerializerOptions with JsonConverter for ShoppingCart and Items

  • نقطه پایانی سبد تست سریع با مخزن CachedBasket و JsonConverter سفارشی Quick Test Basket Endpoint with CachedBasket Repository and Custom JsonConverter

همگام سازی ارتباطات بین ماژول ها با فراخوانی روش در فرآیند (API های عمومی) Sync Communications between Modules with In-process Method Calls (Public APIs)

  • مقدمه - همگام سازی ارتباطات بین ماژول ها با فراخوانی روش در فرآیند Introduction - Sync Communications between Modules with In-process Method Calls

  • چگونه معماری یکپارچه مدولار ارتباطات بین ماژول ها را مدیریت می کند How Modular Monolithic Architecture Handle Communications Between Modules

  • موارد استفاده همزمان ماژول سبد - افزودن یک آیتم به ارتباطات سبد Basket Module Synchronous Use Cases - Adding an Item to the Basket Communication

  • کلاس AddItemIntoBasketHandler را بررسی کنید: قیمت محصول را از ماژول کاتالوگ دریافت کنید Examine AddItemIntoBasketHandler Class: Get Product Price from Catalog Module

  • همگام سازی ارتباطات بین ماژول ها با استفاده از کتابخانه های کلاس قرارداد Sync Communication Between Modules Using Contracts Class Libraries

  • مرحله 1: ایجاد کتابخانه کلاس Catalog.Contracts Step 1: Create Catalog.Contracts Class Library

  • مرحله 2: پرس و جو یا دستورات متد MediatR در معرض نمایش را به Catalog.Contracts منتقل کنید Step 2: Move exposing MediatR method Query or Commands into Catalog.Contracts

  • تقسیم عملیات مشترک مربوط به قرارداد CQRS به lib Shared.Contracts Class Spliting CQRS Contract related common operations into Shared.Contracts Class lib

  • مرحله 3: تغییر ماژول کاتالوگ دریافت مرجع از Catalog.Contracts Class Lib Step 3: Modify Catalog Module getting reference from Catalog.Contracts Class Lib

  • مرحله 4: دریافت مرجع سبد از کتابخانه کلاس Catalog.Contracts Step 4: Basket Get Reference from Catalog.Contracts Class Library

  • مرحله 6: مقادیر موجودیت محصول را در AddItemIntoBasketHandler دریافت کنید و Price را تنظیم کنید Step 6: Get Product entity values into AddItemIntoBasketHandler and set Price

  • برای دریافت داده‌های محصول، ماژول تماس با کاتالوگ را همگام‌سازی سبد AddItemIntoBasket آزمایش کنید Test Basket AddItemIntoBasket Sync Call to Catalog Module to Get Product Data

  • مرحله 7: انتقال میکروسرویس ها: ارتباطات همگام سازی قراردادهای در حال توسعه Step 7: Migrating Microservices: Evolving Contracts Sync Communication

ارتباطات Async بین ماژول ها با RabbitMQ و MassTransit برای UpdatePrice Async Communications between Modules w/ RabbitMQ & MassTransit for UpdatePrice

  • مقدمه - ارتباطات Async بین ماژول ها با RabbitMQ و MassTransit Introduction - Async Communications between Modules w/ RabbitMQ & MassTransit

  • چگونه معماری یکپارچه مدولار ارتباطات Async بین ماژول ها را مدیریت می کند How Modular Monolithic Architecture Handle Async Communications Between Modules

  • الگوی پیام رسانی Fan-Out Publish/اشتراک Fan-Out Publish/Subscribe Messaging Pattern

  • به یاد داشته باشید سریع: دامنه در مقابل رویدادهای یکپارچه سازی - دامنه به رویداد یکپارچه سازی منتهی می شود Quick Remember: Domain vs Integration Events - Domain leads to Integration Event

  • تجزیه و تحلیل دامنه ارتباط Async بین کاتالوگ و ماژول های سبد Domain Analysis of Async Communication between Catalog and Basket Modules

  • تجزیه و تحلیل فنی ارتباط Async بین ماژول های کاتالوگ و سبد Technical Analysis of Async Communication between Catalog and Basket Modules

  • مراحل توسعه ارتباط Async بین کاتالوگ و ماژول های سبد Steps of Developing Async Communication between Catalog and Basket Modules

  • مرحله 1: رویدادهای دامنه و ادغام ماژول کاتالوگ را بررسی کنید Step1: Examine Catalog Module Domain and Integration Events

  • مرحله ۲: کتابخانه کلاس Shared.Messaging ایجاد کنید Step2: Create Shared.Messaging Class Library

  • رویداد ProductPriceChangedIntegration را در کتابخانه کلاس Shared.Messaging توسعه دهید Develop ProductPriceChangedIntegration Event in Shared.Messaging Class Library

  • برای ثبت اتصال RabbitMQ در DI، متدهای گسترش MassTransit را توسعه دهید Develop MassTransit Extention Methods to Register RabbitMQ connection into DI

  • برای ثبت اتصال در DI کاتالوگ، روش‌های گسترش MassTransit را توسعه دهید Develop MassTransit Extention Methods to Register connection into DI of Catalog

  • ارجاع پروژه را به Shared.Messaging در ماژول های کاتالوگ و سبد اضافه کنید Add Project Reference to Shared.Messaging in Catalog and Basket Modules

  • بسته های MassTransit را در Bootstrapper Api DI در فایل Program.cs ثبت کنید Register MassTransit Packages into Bootstrapper Api DI in Program.cs file

  • رویداد یکپارچه سازی ProductPriceChanged: چگونه دامنه به رویداد یکپارچه سازی منجر می شود ProductPriceChanged Integration Event: How Domain leads to Integration Event

  • مرحله 3: رویداد ادغام UpdatePrice انتشار کاتالوگ Step3: Catalog Publish UpdatePrice Integration Event

  • مرحله 4: اشتراک سبد خرید و رویداد یکپارچه سازی ProductPriceChanged را مصرف کنید Step4: Basket Subscribe and consume ProductPriceChanged Integration Event

  • ویژگی UpdateItemPriceInBasket را در ماژول سبد توسعه دهید Develop UpdateItemPriceInBasket Feature in Basket Module

  • ویژگی UpdateItemPriceInBasket را در ماژول سبد توسعه دهید - قسمت 2 Develop UpdateItemPriceInBasket Feature in Basket Module - Part 2

  • فراخوانی UpdateItemPriceInBasketCommand در ProductPriceChangedIntegrationEventHander Call UpdateItemPriceInBasketCommand in ProductPriceChangedIntegrationEventHander

  • TEST - ProductPriceChangedIntegrationEvent با ترانزیت انبوه در حافظه TEST - ProductPriceChangedIntegrationEvent w/ In-memory MassTransit

  • RabbitMQ چیست و اجزای اصلی RabbitMQ (تولید کننده، صف، مصرف کننده) What is RabbitMQ and Main Components of RabbitMQ (Producer, Queue, Consumer)

  • انتقال گذرگاه حافظه به کارگزار پیام RabbitMQ در Masstransit Shifting In-memory Bus to RabbitMQ Message broker in Masstransit

  • برای ثبت اتصال RabbitMQ در DI، متدهای گسترش MassTransit را توسعه دهید Develop MassTransit Extention Methods to Register RabbitMQ connection into DI

  • راه اندازی RabbitMQ برای ارتباط Async با استفاده از فایل Docker-compose Setup RabbitMQ for Async Communication using Docker-compose file

  • برای راه اندازی RabbitMQ در داکر، Docker-Compose را در ویژوال استودیو اجرا کنید Run Docker-Compose on Visual Studio to setup RabbitMQ on Docker

  • TEST - ProductPriceChangedIntegrationEvent با RabbitMQ MassTransit TEST - ProductPriceChangedIntegrationEvent w/ RabbitMQ MassTransit

ماژول هویت کاربر را با تأیید هویت Keycloak توسعه دهید Develop User Identity Module with Keycloak Authentication

  • مقدمه - ماژول هویت کاربر را با تأیید هویت Keycloak توسعه دهید Introduction - Develop User Identity Module with Keycloak Authentication

  • مدیریت هویت و دسترسی Keycloak Keycloak Identity and Access Management

  • مزایای اصلی استفاده از Keycloak Main Advantages of using Keycloak

  • بهترین روش ها هنگام استفاده از Keycloak Best Practices when using Keycloak

  • OAuth2 + OpenID اتصال جریان با Keycloak OAuth2 + OpenID Connect Flows with Keycloak

  • Keycloak به عنوان خدمات پشتیبان ماژول های یکپارچه مدولار Keycloak as a Backing Services of Modular Monolith Modules

  • Keycloak را در فایل Docker-compose برای Identity Provider راه اندازی کنید Setup Keycloak into Docker-compose file for Identity Provider

  • اجرای Docker-Compose در Visual Studio Setup Keycloak Identity Provider در Docker Run Docker-Compose on Visual Studio Setup Keycloak Identity Provider on Docker

  • پایگاه داده هویت کاربر Keycloak را به عنوان طرح هویت PostgreSQL DB تنظیم کنید Setup Keycloak User Identity Database as a PostgreSQL DB identity schema

  • docker-compose را برای تولید طرح هویت Keycloak PostgreSQL اجرا کنید Run docker-compose for Keycloak PostgreSQL identity schema generation

  • قلمرو، کاربر و کلاینت را برای اتصال OpenID با ارائه دهنده هویت Keycloak ایجاد کنید Create Realm, User and Client for OpenID Connect with Keycloak Identity Provider

  • ماژول های EShop ایمن با Keycloak OpenId Connect در AspNet Secure EShop Modules with Keycloak OpenId Connect in AspNet

  • ایمن و تست نقاط پایانی سبد با ادغام Keycloak Secure and Test Basket Endpoints with Keycloak Integration

  • دریافت JwtBearer Token برای OpenID Connect با Keycloak Identity Get JwtBearer Token for OpenID Connect with Keycloak Identity

  • دریافت کاربر فعلی از Token با ClaimsPrincipal در Aspnet Authentication Get Current User from Token with ClaimsPrincipal in Aspnet Authentication

  • TEST - ایجاد سبد با کاربر فعلی از Token با ClaimsPrincipal TEST - Create Basket with Current User from Token with ClaimsPrincipal

  • نقاط پایانی سبد را با OpenID Connect با استفاده از Keycloak Identity Provider ایمن کنید Secure Basket Endpoints with OpenID Connect using Keycloak Identity Provider

ماژول سفارش با معماری برش عمودی و CQRS Ordering Module with Vertical Slice Architecture and CQRS

  • مقدمه - ماژول سفارش با معماری برش عمودی و CQRS Introduction - Ordering Module with Vertical Slice Architecture and CQRS

  • تجزیه و تحلیل دامنه ماژول سفارش: مدل‌ها، UCها، Rest Apis، پایگاه‌های داده Domain Analysis of Ordering Module: Models, UCs, Rest Apis, Databases

  • تحلیل فنی ماژول سفارش: معماری، الگوها، کتابخانه ها Technical Analysis of Ordering Module: Architectures, Patterns, Libraries

  • نهادهای دامنه سفارشی را با الگوهای طراحی دامنه محور تاکتیکی توسعه دهید Develop Ordering Domain Entities with Tactical Domain-Driven Design Patterns

  • زیرساخت داده‌های سفارش را با EF Core Code First و PostgreSQL توسعه دهید Develop Ordering Data-Infrastructure with EF Core Code First and PostgreSQL

  • لایه Ordering.Application را با CQRS و MediatR توسعه دهید Develop Ordering.Application Layer with CQRS and MediatR

  • ایجاد نقاط پایانی API سفارشی با کارتر در معرض حداقل نقاط پایانی API Develop Ordering API Endpoints Exposing Minimal Api Endpoints with Carter

الگوی صندوق خروجی برای پیام‌رسانی میکروسرویس‌های قابل اعتماد با استفاده از جعبه خرید سبد خرید Outbox Pattern For Reliable Microservices Messaging w/ BasketCheckout Use Case

  • مقدمه - الگوی صندوق خروجی برای پیام رسانی میکروسرویس های قابل اعتماد Introduction - Outbox Pattern For Reliable Microservices Messaging

  • رویداد پرداخت سبد خرید بین ماژول های سبد و سفارش را تجزیه و تحلیل کنید Analyse Basket Checkout Event between Basket and Ordering Modules

  • رویداد BasketCheckout را در کتابخانه کلاس Shared.Messaging ایجاد کنید Develop BasketCheckout Event in Shared.Messaging Class Library

  • به یاد بیاورید Async Communication MassTransit RabbitMQ Setup Quick Remember Async Communication MassTransit RabbitMQ Setup

  • پوشه ویژگی BasketCheckout را برای افشای نقطه پایانی POST و انتشار رویداد ایجاد کنید Develop BasketCheckout Feature Folder to Expose POST Endpoint and Publish Event

  • برای انتشار رویداد در RabbitMQ از طریق MassTran، متد Basket Checkout Handler را توسعه دهید Develop Basket Checkout Handler Method to Publish event to RabbitMQ via MassTran

  • مشکل دوگانه نوشتن و الگوی صندوق خروجی Dual-write Problem and Outbox Pattern

  • الگوی صندوق خروجی را برای پیام‌رسانی میکروسرویس‌های قابل اعتماد با BasketCheckout ایجاد کنید Develop Outbox Pattern For Reliable Microservices Messaging w/ BasketCheckout

  • مرحله 1-2: موجودیت صندوق خروجی را ایجاد کنید و DbContext را اصلاح کنید Step 1-2: Create the Outbox Entity and Modify the DbContext

  • مرحله 3: به روز رسانی CheckoutBasketHandler با صندوق خروجی و پایگاه داده شروع و انجام دهید Step 3: Update CheckoutBasketHandler w/ Outbox and Database Begin and Commit

  • مرحله 4: یک سرویس پس زمینه برای پردازش پیام های صندوق خروجی ایجاد کنید Step 4: Create a Background Service to Process Outbox Messages

  • ماژول سفارش برای اشتراک-مصرف رویداد BasketCheckout از RabbitMQ Ordering Module to Subscribe-Consume BasketCheckout event from RabbitMQ

  • ثبت ماژول سفارش در MassTransit برای ارتباطات مبتنی بر رویداد Async Register Ordering Module into MassTransit for Async Event-driven communication

  • مدیریت رویداد یکپارچه سازی مصرف کننده در سبد پرداخت را توسعه دهید Develop Basket Checkout Event Consumer Integration Event Handler

  • TEST - جعبه استفاده از سبد تسویه‌حساب - الگوی صندوق خروجی ارتباط Async قابل اعتماد- 1 TEST - Checkout Basket Use Case - Reliable Async Communication Outbox Pattern- 1

  • TEST - جعبه استفاده از سبد پرداخت - الگوی صندوق خروجی ارتباط Async قابل اعتماد- 2 TEST - Checkout Basket Use Case - Reliable Async Communication Outbox Pattern- 2

برنامه مدولار EShop را در Docker-Compose کانتینر و هماهنگ کنید Containerize and Orchestrate EShop Modular App in Docker-Compose

  • مقدمه - Containerize و Orchestrate EShop Modular App in Docker-Compose Introduction - Containerize and Orchestrate EShop Modular App in Docker-Compose

  • استراتژی استقرار یکپارچه مدولار EShop EShop Modular Monolith Deployment Strategy

  • پروژه Asp.Net Api را به فایل Docker-compose برای Multi-container Docker Env اضافه کنید Add Asp.Net Api project into Docker-compose file for Multi-container Docker Env

  • متغیرهای محیطی پیکربندی‌های پروژه Api را با توجه به تنظیمات برنامه تنظیم کنید Set Environment Variables of Api Project Configurations according to appsettings

  • تست همه - Docker-compose All with Api Project and Backing Services TEST ALL - Docker-compose All with Api Project and Backing Services

  • ماژول سبد تست - Docker-compose All with Api Project TEST Basket Module - Docker-compose All with Api Project

  • TEST Checkout Basket با ماژول RabbitMQ و سفارش - Docker-compose All w/Api TEST CheckoutBasket w/ RabbitMQ and Ordering Module - Docker-compose All w/ Api

  • ماژول سفارش تست - Docker-compose All with Api Project TEST Ordering Module - Docker-compose All with Api Project

  • برنامه های مشتری - ماژول Api را در ماژول های EShop مصرف کنید Client Apps - Consume Api Module in EShop Modules

مهاجرت به Microservices: ماژول های EShop به Microservices با Strangler Fig Migrating to Microservices: EShop Modules to Microservices w/ Strangler Fig

  • مهاجرت به Microservices: چالش ها و ملاحظات Migrating to Microservices: Challenges and Considerations

  • الگوی Fig Strangler برای Refactoring Monolith به Microservices Strangler Fig Pattern for Refactoring Monolith into Microservices

  • مراحل تبدیل مونولیت به میکروسرویس ها Steps of Refactoring Monolith into Microservices

  • مرحله 1: تجزیه ماژول های EShop به Microservices با زمینه های DDD Bounded Step 1: Decompose EShop Modules to Microservices with DDD Bounded Contexts

  • مرحله 2: اولویت بندی ماژول ها-خدمات برای مهاجرت Step 2: Prioritize Modules-Services for Migration

  • مرحله 3: یک سرویس را از یک Monolith استخراج کنید Step 3: Extract a Service from a Monolith

  • مرحله 4: یک پایگاه داده یکپارچه را مدیریت کنید Step 4: Manage a Monolithic Database

  • مرحله 5: طراحی و پیاده سازی ارتباطات بین خدماتی Step 5: Design and Implement Interservice Communication

  • مرحله 6: ارتباط ناهمگام بین خدمات Step 6: Async Communication Between Services

  • مرحله 7: تراکنش های توزیع شده و سازگاری داده ها Step 7: Distributed Transactions and Data Consistency

  • مرحله 8: استقرار میکروسرویس ها پس از مونولیتیک Step 8: Deployment of Microservices after Monolithic

  • .NET 8 Microservices: DDD, CQRS, Vertical/Clean Architecture - دوره .NET 8 Microservices: DDD, CQRS, Vertical/Clean Architecture - course

با تشکر Thanks

  • با تشکر Thanks

نمایش نظرات

NET 8 Backend Bootcamp: Modulith، VSA، DDD، CQRS و Outbox
جزییات دوره
25 hours
329
Udemy (یودمی) Udemy (یودمی)
(آخرین آپدیت)
662
4.6 از 5
دارد
دارد
دارد
Mehmet Ozkaya
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Mehmet Ozkaya Mehmet Ozkaya

معمار نرم افزار | میکروسرویس | AWS Community Builder