Un'applicazione moderna raramente è un solo progetto: un'API, un frontend, un database, una cache, magari una coda. Avviarli tutti, collegarli e capire cosa succede tra loro è faticoso. Aspire (nato come .NET Aspire) risolve proprio questo.
L'AppHost
Un progetto speciale descrive in C# le risorse dell'applicazione e come sono collegate:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddRedis("cache");
var db = builder.AddPostgres("postgres").AddDatabase("catalogo");
var api = builder.AddProject<Projects.Catalogo_Api>("api")
.WithReference(db)
.WithReference(cache);
builder.AddProject<Projects.Negozio_Web>("web")
.WithReference(api);
builder.Build().Run();
All'avvio Aspire crea i container necessari, passa ai progetti le stringhe di connessione e gli indirizzi dei servizi, e apre un cruscotto.
Il cruscotto
Log, tracce distribuite e metriche di tutti i servizi in un'unica interfaccia. Si vede una richiesta attraversare frontend, API e database, con i tempi di ogni passaggio: trovare un collo di bottiglia diventa questione di minuti.
Service defaults
Un progetto condiviso applica a tutti i servizi le stesse impostazioni di base: OpenTelemetry, health check, resilienza delle chiamate HTTP e scoperta dei servizi. Ogni progetto lo attiva con una riga, builder.AddServiceDefaults().
E in produzione?
Aspire nasce soprattutto per lo sviluppo locale, ma il modello dell'applicazione può essere usato per generare la configurazione di deploy verso container e cloud. Anche senza usarlo in produzione, il guadagno nella fase di sviluppo e nei test di integrazione è notevole.
Commenti (0)
Nessun commento ancora.