This repository offers a fundamental and important learning experience on microservice architecture with .NET technologies. Each topic is structured as a separate solution and the technologies used are:
- ASP.NET Core
- MongoDB
- MSSQL
- RabbitMQ
- Event Store DB
- NGINX
- Ocelot
- YARP
- NLog
- Detailed examination of the Consistency, Availability, Partition Tolerance trilemma.
- Service coordination with the Choreography method.
- Centralized process control with the Orchestration method.
- Two Phase Commit (2PC) Protocol: Ensuring strong data consistency in distributed systems.
- Message reliability with the Outbox Pattern.
- Guaranteed message reprocessing with the Inbox Pattern.
- Solutions on how services handle repeatable operations.
- Event-based data storage and management.
- Practical applications with Event Store DB.
- Separation of Command and Query operations.
- Mechanisms for monitoring service status with Health Check integration.
- Usage of Traceability, Correlation ID, and NLog.
- API Gateway solutions for directing all API traffic.
- Load balancing and scalability with Ocelot, YARP, and NGINX.
- Implementations of Authentication and Authorization.
Technology | Description |
---|---|
ASP.NET Core | The main framework for microservices. |
MongoDB | NoSQL database solution. |
MSSQL | Relational database solution. |
RabbitMQ | Messaging and process management. |
Event Store DB | Event-based data storage solution. |
NGINX | Load balancing and API Gateway. |
Ocelot | API Gateway and load balancing. |
YARP | High-performance API routing. |
NLog | Logging and traceability tool. |
Each topic in the project is structured as a separate solution. This structure facilitates independent learning of topics and gaining hands-on experience.
[Service A] --> [Event Bus] --> [Service B]
[Orchestrator] --> [Service A]
--> [Service B]
--> [Service C]
[Command] --> [Command Handler] --> [Domain Model]
[Query] --> [Query Handler] --> [Read Model]
[Command] --> [Aggregate] --> [Event Store]
[Query] --> [Read Model] --> [Event Store]