لطفا جهت اطلاع از آخرین دوره ها و اخبار سایت در
کانال تلگرام
عضو شوید.
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 پیش نیازها:مبانی سی شارپ و برنامه نویسی
در این بوت کمپ، نحوه ایجاد برنامههای کاربردی قوی، مقیاسپذیر و قابل نگهداری با استفاده از فناوریهای پیشرفته و الگوهای معماری را خواهید آموخت.
ما توسعه خواهیم داد؛
معماری یکپارچه مدولار (مدولیت)
معماری برش عمودی (VSA)
طراحی دامنه محور (DDD)
تفکیک مسئولیت پرس و جو فرمان (CQRS)
الگوی صندوق خروجی برای پیام رسانی قابل اعتماد
ما با اصول اولیه شروع می کنیم و به تدریج در هر موضوع عمیق تر می شویم. شما تجربه عملی در ساخت یک برنامه 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
پروژه 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
راه توسعه: اشتراک گذاری شده -> ماژول ها -> 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
راه اندازی 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
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
مدلهای موجودیت دامنه سبد خرید را در نهادهای دامنه سبد توسعه دهید
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
به یاد داشته باشید سریع: دامنه در مقابل رویدادهای یکپارچه سازی - دامنه به رویداد یکپارچه سازی منتهی می شود
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
مرحله 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
نهادهای دامنه سفارشی را با الگوهای طراحی دامنه محور تاکتیکی توسعه دهید
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
پروژه 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
نمایش نظرات