Lokální vývoj
Spuštění celé aplikace na PC jedním příkazem přes .NET Aspire – RabbitMQ, obě služby a dashboard.
Na této stránce
V jedné větě: Při vývoji vše spouští .NET Aspire AppHost – nastartuje RabbitMQ v Dockeru, obě služby, předá jim adresy a otevře dashboard s trasami, logy a metrikami.
Spuštění
dotnet run --project src/MiniShop.AppHost
| Co | Kde |
|---|---|
| Web (objednávky, UI, tato dokumentace) | https://localhost:7180 |
| Inventory.Api (sklad) | https://localhost:7181 |
| Aspire dashboard | https://localhost:17180 (přihlašovací odkaz vypíše konzole) |
| RabbitMQ management | odkaz v dashboardu (zdroj messaging) |
Potřeba: .NET SDK podle global.json a Docker (Docker Desktop) kvůli RabbitMQ.
Co AppHost dělá
flowchart LR
host["AppHost.cs"] -->|"AddRabbitMQ, persistentní kontejner"| mq[["RabbitMQ<br/>v Dockeru"]]
host -->|"AddProject, WaitFor"| inv["Inventory.Api"]
host -->|"AddProject, WithReference"| web["Web"]
host --> dash["Aspire dashboard"]
web -.-|"ConnectionStrings:messaging"| mq
web -.-|"service discovery inventory-api"| inv
inv -.-> dash
web -.-> dash
- AppHost.cs popisuje aplikaci jako kód: kdo existuje a kdo potřebuje koho.
- Heslo k RabbitMQ vygeneruje Aspire a uloží do user secrets AppHostu; služby ho dostanou v connection stringu.
- Kontejner RabbitMQ je persistentní – po zastavení AppHostu běží dál (fronty přežijí restart). Pozor: zastavení
AppHostu nechá běžet kontejner
messaging-…. - Sdílené nastavení služeb (health checky, service discovery, resilience HTTP, OpenTelemetry) je v ServiceDefaults.
Bez Aspire
docker start minishop-rabbit # poprvé: docker run -d --name minishop-rabbit -p 5672:5672 -p 15672:15672 rabbitmq:4-management
dotnet run --project src/MiniShop.Inventory.Api
dotnet run --project src/MiniShop.Web
Adresu skladu najde Web v Services:inventory-api v appsettings.Development.json.
Databáze
SQLite soubory vznikají samy při startu vedle projektu: ordering.db, journeys.db, users.db (Web) a
inventory.db (sklad, s ukázkovými produkty). Schéma spravují EF Core migrace – při startu se doplní jen chybějící
změny, data zůstanou. Soubory proto nemaž; změna schématu = nová migrace
(viz Sdílené jádro – migrace databází).
Testy
dotnet build MiniShop.slnx
dotnet test MiniShop.slnx
Testy nepotřebují Docker ani RabbitMQ: obě databáze jsou SQLite v paměti a zprávy jdou přes InProcessIntegrationBus.
Proč Aspire
- Jeden příkaz místo několika terminálů a ručního předávání adres.
- Dashboard s trasami přes obě služby a RabbitMQ – bez něj se EDA ladí velmi těžko.
- Stejný dashboard běží i v cloudu (jako samostatný kontejner), takže se nemusíte učit dva nástroje.
V cloudu AppHost neběží – jeho práci převezme Docker Compose (Kontejnery).