from 2024/12 to 2025/2 View on Github
  • C#
  • Docker
  • Micro Service
  • MSSQL
  • .NET8
  • SQLite
  • RabitMQ
  • PostgreSQL
  • Redis
  • DDD
  • Clean Architecture
  • Vertical Slice Architecture

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

EShopMicroServices

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.