Basket Service Overview
The Basket service manages shopping cart operations for the e-commerce platform. It provides high-performance cart management with Redis caching, discount calculation via gRPC communication, and event-driven checkout integration.Architecture
The Basket service is built using:- ASP.NET Core Minimal APIs with Carter for endpoint routing
- MediatR with CQRS pattern for command/query separation
- Marten for PostgreSQL document storage
- Redis for distributed caching with decorator pattern
- gRPC Client for synchronous communication with Discount service
- MassTransit for asynchronous messaging via RabbitMQ
Key Components
Domain Models
ShoppingCart
The main aggregate representing a user’s shopping cart:ShoppingCartItem
Individual items within the shopping cart:Data Persistence
The service uses a dual-layer persistence strategy:- Primary Storage: PostgreSQL via Marten document database
- Cache Layer: Redis distributed cache for performance
Repository Pattern
Service Configuration
The service is configured inProgram.cs with the following dependencies:
Application Settings
Health Checks
The service includes health checks for its dependencies:Exception Handling
Custom exception for basket not found scenarios:Cross-Cutting Concerns
The service implements several cross-cutting concerns via MediatR behaviors:- Validation: FluentValidation integration for request validation
- Logging: Structured logging for all operations
- Exception Handling: Global exception handler for consistent error responses
Communication Patterns
Synchronous Communication
- gRPC: Communicates with Discount service to retrieve and apply coupon discounts
Asynchronous Communication
- Event Publishing: Publishes
BasketCheckoutEventto RabbitMQ via MassTransit when checkout occurs
Next Steps
- Features - Detailed feature documentation
- API Reference - Complete API endpoint reference
- Caching - Redis caching implementation details
