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.