EShopMicroServices
This repository showcases a fully functional e-commerce microservices application built with .NET 8, following Domain-Driven Design (DDD), Command Query Responsibility Segregation (CQRS), and Clean Architecture principles. The project is developed as part of the Udemy course.
Project Overview
The application is composed of several independent microservices, each responsible for a specific business capability. The services communicate asynchronously using RabbitMQ and are orchestrated through a YARP API Gateway. The architecture emphasizes scalability, maintainability, and separation of concerns.
Microservices Implemented
- Catalog Service: Manages product information using Marten with PostgreSQL.
- Basket Service: Handles shopping cart operations with Redis for caching.
- Discount Service: Applies discounts to products, utilizing gRPC for communication.
- Ordering Service: Processes orders and integrates with SQL Server.
- API Gateway: Routes requests to appropriate services using YARP.
WebUI: ASP.NET Core Razor Pages application consuming APIs via Refit.
Technologies Used
- .NET 8: Core framework for building the services.
- ASP.NET Core Web API & Minimal APIs: For creating RESTful services.
- Entity Framework Core & Marten: Data access technologies.
- PostgreSQL, Redis, SQLite, SQL Server: Data storage solutions.
- RabbitMQ & MassTransit: For asynchronous messaging.
- gRPC: High-performance RPC framework.
- YARP: API Gateway implementation.
- Docker & Docker Compose: Containerization and orchestration.
- Swagger: API documentation.
- Serilog: Structured logging.
- Health Checks: Monitoring service health.
Architectural Patterns
- Domain-Driven Design (DDD): Focuses on the core domain and domain logic.
- Command Query Responsibility Segregation (CQRS): Separates read and write operations.
- Clean Architecture: Enforces separation of concerns and dependency inversion.
- Vertical Slice Architecture: Organizes code by feature for better modularity.