Integrare un servizio esterno con .NET Aspire

di Morgan Pizzini, in ASP.NET Core,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi