In .NET Aspire, un container è una dipendenza esterna, come un database o un message broker (es. PostgreSQL, Redis, RabbitMQ), che viene orchestrata tramite il progetto Aspire AppHost.
Una definizione che non ci è nuova: abbiamo già parlato negli script precedenti riguardo l'integrazione di servizi terzi come Redis, senza però puntare l'accento sulla modalità con cui il servizio ci venisse offerto. Facciamo dunque un passo indietro
var custom = builder.AddContainer("myapp", image: "mcr.microsoft.com/dotnet/samples:aspnetapp")
.WithHttpEndpoint(port: 8000, targetPort: 8080);In questo caso abbiamo creato una risorsa container al cui interno girerà un'istanza di samples:aspnetapp, che tramite la mappatura degli endpoint sarà interrogabile tramite un url predefinito.
Per ogni tipologia di container, anche in base alla libreria che lo gestisce, abbiamo vari metodi di implementazione, ad esempio per Redis troviamo AddRedis("redis-abc"), funzionalità specifiche che semplificano parte della configurazione. Una cosa essenziale è però fornita out-of-the-box: la persistenza del container tra un'esecuzione e l'altra
var custom = builder.AddContainer("myapp", image: "mcr.microsoft.com/dotnet/samples:aspnetapp")
.WithHttpEndpoint(port: 8000, targetPort: 8080)
.WithLifetime(ContainerLifetime.Persistent);Tramite WithLifetime stiamo scollegando il flusso di run/debug dal ciclo di vita del container. Il primo caso d'uso che può venire alla mente è un server API il cui unico scopo è fornire lo stesso set di dati ad ogni chiamata: la sua creazione e distruzione durante lo sviluppo porterebbe solo ad una perdita di tempo. Impostando però il suo ciclo di vita come persistente, questo rimarrà attivo, indipendentemente dai nostri cambiamenti.
Se abbiamo invece la necessità di costruire la nostra immagine, definita all'interno di un dockerfile, possiamo fornire il nome, il percorso ed i parametri, lasciando che .NET Aspire configuri l'ambiente per noi
builder.AddDockerfile("my-app", "./My-app")
.WithBuildArg("DOT_NET_VERSION", "versione-dot-net");Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Raggruppare risorse in .NET Aspire
Il nuovo controllo Range di Blazor 9
Integrazione di Copilot in .NET Aspire
Integrare OpenAI tramite Aspire
Gestire pubblicazione Kubernetes tramite .NET Aspire
Configurare lo startup di applicazioni server e client con .NET Aspire
Configuratione e utilizzo .NET Aspire CLI
Importare un servizio esterno in .NET Aspire
Managed deployment strategy in Azure DevOps
Configurare automaticamente un webhook in Azure DevOps
Evidenziare una porzione di testo in un pagina dopo una navigazione
I più letti di oggi
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Sfruttare una CDN con i bundle di ASP.NET
- Esaminare documenti XML con namespace utilizzando LINQ to XML
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Effetto turnstile su tutte le pagine con il Windows Phone Toolkit
- Le DirectInk API nella Universal Windows Platform
- Gli oggetti CallOut di Expression Blend 4.0
- Inserire le news di Punto Informatico nel proprio sito


