practical-dotnet-aspire  by thangchung

.NET Aspire demo showcasing microservices for a coffeeshop application

created 1 year ago
402 stars

Top 73.3% on sourcepulse

GitHubView on GitHub
Project Summary

This repository provides a practical demonstration of building microservices using .NET Aspire, targeting .NET developers interested in modern architectural patterns. It showcases a coffeeshop application implementing Domain-Driven Design, CQRS, and advanced observability features.

How It Works

The application employs a microservices architecture, with services communicating asynchronously via MassTransit and RabbitMQ. It leverages .NET Aspire for orchestration and observability, integrating OpenTelemetry for detailed tracing and logging. Domain-Driven Design principles guide service boundaries, while CQRS with MediatR and FluentValidation enhances command and query handling. AI integration is demonstrated through Ollama for local development and Azure OpenAI for intelligent features like chat completion and semantic search.

Quick Start & Requirements

  • Install/Run: Open the solution in Visual Studio and press F5, or use dotnet build coffeeshop-aspire.sln followed by dotnet run --project app-host/CoffeeShop.AppHost.csproj http://localhost:5019.
  • Prerequisites: .NET 9.0 STS, .NET Aspire 9.
  • Resources: Requires PostgreSQL and RabbitMQ.
  • Docs: dev.to blog

Highlighted Details

  • Built on .NET 9.0 STS and .NET Aspire 9.
  • Implements microservices, Vertical Slices, Domain-Driven Design, and CQRS.
  • Features custom OpenTelemetry instrumentation for MediatR, FluentValidation, and MassTransit.
  • Integrates AI capabilities using Ollama and Azure OpenAI.
  • Includes integration tests with Wiremock.NET and GitHub Actions for code coverage.
  • Uses UUID v7 for default GUID generation with Npgsql.

Maintenance & Community

This project appears to be a personal demonstration by thangchung. No specific community channels or extensive contributor information are listed in the README.

Licensing & Compatibility

The README does not explicitly state a license. Compatibility for commercial use or closed-source linking is not specified.

Limitations & Caveats

The project is presented as a demo, and the author advises caution regarding the fine-grained nature of the microservices, suggesting that real-world boundaries should be based on bounded contexts. Features like Response Caching and JWT/Authentication are marked as incomplete.

Health Check
Last commit

6 months ago

Responsiveness

1 week

Pull Requests (30d)
0
Issues (30d)
0
Star History
12 stars in the last 90 days

Explore Similar Projects

Feedback? Help us improve.