All'interno del precedente script abbiamo parlato di .NET Aspire e della sua capacità di orchestrare le risorse necessarie per lo sviluppo di un'applicazione in locale.
Al momento abbiamo un'applicazione backend e una frontend che dialogano tra loro, il cui ciclo di vita è monitorato da .NET Aspire. È un'ottima casistica per prendere familiarità con l'interfaccia base, ma sappiamo bene che è anche molto lontana dalla realtà dei fatti: un backend senza un database non può funzionare, se le risorse sono richieste molteplici volte, un sistema di cache è indispensabile.
Iniziamo proprio da questo ultimo punto, che essendo il più standardizzato risulta di facile implementazione.
All'interno dell'applicazione host è necessario installare il pacchetto Aspire.Hosting.Redis e spostarsi successivamente nel program.cs per definire la risorsa e fornirla al progetto backend
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddRedis("redis-abc");
builder.AddProject<MiaSoluzione.ProgettoBackend>()
.WithReference(cache);
Al momento abbiamo utilizzato un'istanza di Redis, a cui il progetto potrà appellarsi usando la stringa di connessione "redis-abc". La cache sarà creata all'interno di un container e gestita interamente da .NET Aspire.
Se volessimo applicare delle personalizzazioni potremmo aggiungerle in cascata alla definizione della stessa
var cache = builder.AddRedis("redis-abc")
// Insight
.WithRedisInsight()
// Persistenza al di fuori del container
.WithDataVolume(isReadOnly: false);
// Persistenza con binding
var cache = builder.AddRedis("redis-abc")
.WithDataBindMount(
source: @"C:\mio-path\Data",
isReadOnly: false);
Per poterne usufruire nel backend non occorrerà altro che installare il pacchetto Aspire.StackExchange.Redis.DistributedCaching ed iniettare il servizio nel program.cs
builder.AddRedisDistributedCache(connectionName: "redis-abc");
A questo punto potremmo utilizzarla come istanza di IDistributedCache
public class MyController{
public MyController(IDistributedCache cache)
{
}
}Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Centralizzare gli endpoint AI Foundry con Azure API Management
Conoscere il rendering Server o WebAssembly a runtime in Blazor
Utilizzare WebJobs su Linux con Azure App Service
Migliorare l'organizzazione delle risorse con Azure Policy
Ricevere notifiche sui test con Azure Load Testing
Configuratione e utilizzo .NET Aspire CLI
Rendere le variabili read-only in una pipeline di Azure DevOps
Gestire eccezioni nei plugin di Semantic Kernel in ASP.NET Core Web API
Utilizzare Hybrid Cache in .NET 9
Ridurre il reflow cambiando il CSS
Rendere i propri workflow e le GitHub Action utilizzate più sicure
Mischiare codice server side e client side in una query LINQ con Entity Framework


