Compartir a través de


Tutorial: Implementación del almacenamiento en caché con integraciones de .NET.NET Aspire

Las aplicaciones nativas de la nube suelen requerir varios tipos de soluciones de almacenamiento en caché escalables para mejorar el rendimiento. .NET Aspire integraciones simplifican el proceso de conexión a servicios populares de almacenamiento en caché, como Redis. En este artículo, aprenderá a:

  • Cree una aplicación ASP.NET básica que esté configurada para usar .NET Aspire.
  • Agregue .NET Aspire integraciones para conectarse a Redis e implementar caché.
  • Configure las integraciones de .NET.NET Aspire para cumplir requisitos específicos.

En este artículo se explora cómo usar dos tipos diferentes de almacenamiento en caché de ASP.NET Core mediante .NET Aspire y Redis:

  • almacenamiento en caché de salida: un método de almacenamiento en caché configurable y extensible para almacenar respuestas HTTP completas para futuras solicitudes.
  • almacenamiento en caché distribuido: una caché compartida por varios servidores de aplicaciones que permite almacenar en caché datos específicos. Normalmente, una caché distribuida se mantiene como un servicio externo a los servidores de aplicaciones que acceden a ella y pueden mejorar el rendimiento y la escalabilidad de una aplicación ASP.NET Core.

Prerrequisitos

Para trabajar con .NET.NET Aspire, necesita lo siguiente instalado localmente:

Para obtener más información, consulte configuración y herramientas de .NET.NET Aspirey sdk de .NET.NET Aspire.

Creación del proyecto

  1. En la parte superior de Visual Studio, vaya a Archivo>Nuevo proyecto de>....
  2. En la ventana de diálogo, escriba .NET Aspire en el cuadro de búsqueda de la plantilla de proyecto y seleccione .NET.NET Aspire Aplicación de inicio. Elija Siguiente.
  3. En la pantalla Configura tu nuevo proyecto:
    • Escriba un nombre de proyecto de de AspireRedis.
    • Deje el rest de los valores en sus valores predeterminados y seleccione Siguiente.
  4. En la pantalla Información adicional:
    • Asegúrese de que .NET 9.0 está seleccionado.
    • Desmarque Usar Redis para almacenar en caché. Implementará su propia configuración de almacenamiento en caché.
    • Seleccione Crear.

Visual Studio crea una nueva solución de .NET Aspire que consta de los siguientes proyectos:

  • AspireRedis.Web: un proyecto de interfaz de usuario de Blazor con configuraciones de .NET Aspire predeterminadas.
  • AspireRedis.ApiService: una API mínima con configuraciones de .NET.NET Aspire predeterminadas que proporcionan el front-end con datos.
  • AspireRedis.AppHost: un proyecto de orquestador diseñado para conectar y configurar los diferentes proyectos y servicios de la aplicación.
  • AspireRedis.ServiceDefaults: un proyecto compartido de .NET.NET Aspire para administrar configuraciones que se reutilizan en los proyectos de la solución relacionadas con resiliencia, descubrimiento de serviciosy telemetría.

Configuración del proyecto host de aplicación

  1. Agregue el paquete NuGet 📦Aspire.Hosting.Redis al proyecto AspireRedis.AppHost:

    dotnet add package Aspire.Hosting.Redis
    

    Para obtener más información, consulte dotnet add package o Gestionar dependencias de paquetes en .NET aplicaciones.

  2. Actualice el archivo Program.cs del proyecto de AspireRedis.AppHost para que coincida con el código siguiente:

    var builder = DistributedApplication.CreateBuilder(args);
    
    var redis = builder.AddRedis("cache");
    
    var apiservice = builder.AddProject<Projects.AspireRedis_ApiService>("apiservice")
        .WithReference(redis);
    
    builder.AddProject<Projects.AspireRedis_Web>("webfrontend")
        .WithExternalHttpEndpoints()
        .WithReference(apiservice)
        .WithReference(redis);
    
    builder.Build().Run();
    

El código anterior crea una instancia de contenedor de Redis local y configura la interfaz de usuario y la API para usar la instancia automáticamente para el almacenamiento en caché distribuido y de salida. El código también configura la comunicación entre la interfaz de usuario de front-end y la API de back-end mediante la detección de servicios. Con la detección de servicios implícita de .NET.NET Aspire, la configuración y administración de conexiones de servicio se simplifica para la productividad del desarrollador. En el contexto de este tutorial, la función simplifica cómo conectar a Redis.

Tradicionalmente, especificaría manualmente la cadena de conexión Redis en el archivo appsettings.json de cada proyecto:

{
  "ConnectionStrings": {
    "cache": "localhost:6379"
  }
}

La configuración de la cadena de conexión con este método, aunque funcional, requiere duplicar la cadena de conexión en varios proyectos, lo que puede ser complicado y propenso a errores.

Configurar la interfaz de usuario con caché de resultados

  1. Agregue los paquetes de integración de .NET Aspire Stack Exchange Redis caché de salida a su aplicación AspireRedis.Web.

    dotnet add package Aspire.StackExchange.Redis.OutputCaching
    
  2. En el archivo Program.cs del proyecto AspireRedis.WebBlazor, inmediatamente después de la línea var builder = WebApplication.CreateBuilder(args);, agregue una llamada al método de extensión AddRedisOutputCache.

    builder.AddRedisOutputCache("cache");
    

    Este método realiza las siguientes tareas:

    • Configura la caché de salida de ASP.NET Core para usar una instancia de Redis con el nombre de conexión especificado.
    • Habilita automáticamente las comprobaciones de estado, el registro y la telemetría correspondientes.
  3. Reemplace el contenido del archivo Home.razor del proyectoBlazorAspireRedis.Webpor lo siguiente:

    @page "/"
    @attribute [OutputCache(Duration = 10)]
    
    <PageTitle>Home</PageTitle>
    
    <h1>Hello, world!</h1>
    
    Welcome to your new app on @DateTime.Now
    

    La integración incluye el atributo [OutputCache], que almacena en caché toda la respuesta representada. La página también incluye una llamada a @DateTime.Now para ayudar a comprobar que la respuesta está almacenada en caché.

Configuración de la API con almacenamiento en caché distribuido

  1. Agregue los paquetes de integración .NET Aspire Stack Exchange de almacenamiento en caché distribuidoRedis a su aplicación AspireRedis.ApiService.

    dotnet add package Aspire.StackExchange.Redis.DistributedCaching
    
  2. En la parte superior del archivo Program.cs, agregue una llamada a AddRedisDistributedCache:

    builder.AddRedisDistributedCache("cache");
    
  3. En el archivo Program.cs, agregue las siguientes instrucciones using:

    using System.Text;
    using System.Text.Json;
    using Microsoft.Extensions.Caching.Distributed;
    
  4. En el archivo Program.cs, reemplace el código de punto de conexión de /weatherforecast existente por lo siguiente:

    app.MapGet("/weatherforecast", async (IDistributedCache cache) =>
    {
        var cachedForecast = await cache.GetAsync("forecast");
    
        if (cachedForecast is null)
        {
            var summaries = new[] { "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" };
            var forecast = Enumerable.Range(1, 5).Select(index =>
            new WeatherForecast
            (
                DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
                Random.Shared.Next(-20, 55),
                summaries[Random.Shared.Next(summaries.Length)]
            ))
            .ToArray();
    
            await cache.SetAsync("forecast", Encoding.UTF8.GetBytes(JsonSerializer.Serialize(forecast)), new ()
            {
                AbsoluteExpiration = DateTime.Now.AddSeconds(10)
            }); ;
    
            return forecast;
        }
    
        return JsonSerializer.Deserialize<IEnumerable<WeatherForecast>>(cachedForecast);
    })
    .WithName("GetWeatherForecast");
    

Prueba local de la aplicación

Pruebe el comportamiento de almacenamiento en caché de la aplicación mediante los pasos siguientes:

  1. Ejecute la aplicación mediante Visual Studio presionando F5.
  2. Si aparece el cuadro de diálogo Inicio de Docker Escritorio, seleccione para iniciar el servicio.
  3. El panel de .NET.NET Aspire se carga en el navegador y enumera los proyectos de interfaz de usuario y API.

Pruebe la caché de salida:

  1. En la página de proyectos, en la fila del webfrontend de , haga clic en el vínculo de la columna Endpoints de para abrir la interfaz de usuario de tu app.
  2. La aplicación mostrará la hora actual en la página principal.
  3. Actualice el navegador cada pocos segundos para ver la misma página devuelta por el caché de salida. Después de 10 segundos, la memoria caché expira y la página vuelve a cargarse con una hora actualizada.

Pruebe la caché distribuida:

  1. Vaya a la página de clima en la UI de Blazor para cargar una tabla de datos meteorológicos aleatorios.
  2. Actualice el explorador cada pocos segundos para ver los mismos datos meteorológicos devueltos por el almacenamiento en caché de salida. Después de 10 segundos, la memoria caché expira y la página vuelve a cargarse con los datos meteorológicos actualizados.

¡Felicidades! Configuró una aplicación de ASP.NET Core para usar el almacenamiento en caché distribuido y de salida con .NET Aspire.