Vai al contenuto

Gestire Dati Persistenti in .NET Aspire

Scopri come potenziare lo sviluppo con .NET Aspire, assicurandoti la persistenza dei dati in ambiente di sviluppo.

È assodato che ogni sviluppatore desideri ottenere il meglio dal proprio ambiente di sviluppo, in particolare quando si utilizzano architetture basate su contenitori e servizi cloud. Ecco perché l’aspetto della persistence dei dati nelle applicazioni diventa fondamentale, specialmente durante le fasi di sviluppo.

Quando si opera con applicazioni che fanno largo uso di database e servizi di storage, come PostgreSQL o Azure Storage Blobs e Queues, è comune l’esigenza di mantenere inalterato lo stato dei dati tra una sessione e l’altra. Nell’ambito di .NET Aspire Preview 2, questa esigenza si concretizza nella necessità di replicare i dati in modo persistente, evitando di ripartire da zero a ogni riavvio dell’applicazione.

Il segreto per ottenere persistenza dei dati con .NET Aspire sta nel montare i volumi nei container in cui le applicazioni memorizzano i dati. Per esempio, utilizzando PostgreSQL in locale all’interno di un contenitore Docker, è possibile configurare il montaggio di un volume per il directory dei dati del database:

.WithVolumeMount("./data/postgres", "/var/lib/postgresql/data", VolumeMountType.Bind);

Una soluzione analoga si applica all’utilizzo dell’emulatore di Azure Storage, Azurite, anch’esso basato su contenitori, attraverso la quale si realizza un percorso di dati condiviso tra il host e il container:

.WithAnnotation(new VolumeMountAnnotation("./data/azurite", "/data", VolumeMountType.Bind));

Importante è effettuare questa operazione solamente in ambiente di sviluppo locale, dal momento che in produzione si dovrebbero utilizzare i servizi Azure nativi senza montaggi di volume. Attenzione, inoltre, a non includere i percorsi di dati nel versionamento del codice sorgente, inclusi accidentalmente nel .gitignore.

Introducendo queste configurazioni nel workflow dello sviluppatore, non solo si guadagna in efficienza mantenendo lo stato dell’applicazione tra una sessione e l’altra, ma si garantisce anche una maggior coerenza con l’ambiente di produzione, soprattutto grazie all’emulazione fidata proposta da Azurite.