Sdílet prostřednictvím


Kurz: Implementace ukládání do mezipaměti pomocí integrace .NET.NET Aspire

Aplikace nativní pro cloud často vyžadují různé typy škálovatelných řešení ukládání do mezipaměti, aby se zlepšil výkon. integrace .NET Aspire zjednodušují proces připojování k oblíbeným službám ukládání do mezipaměti, jako je Redis. V tomto článku se dozvíte, jak:

  • Vytvořte základní aplikaci ASP.NET, která je nastavená tak, aby používala .NET Aspire.
  • Přidejte integrace .NET Aspire pro připojení k Redis a implementujte ukládání do mezipaměti.
  • Nakonfigurujte integrace .NET.NET Aspire tak, aby splňovaly konkrétní požadavky.

Tento článek popisuje, jak používat dva různé typy ASP.NET Core ukládání do mezipaměti pomocí .NET Aspire a Redis:

  • ukládání výstupu do mezipaměti: Konfigurovatelná, rozšiřitelná metoda ukládání do mezipaměti pro ukládání celých odpovědí HTTP pro budoucí požadavky.
  • Distribuované ukládání do mezipaměti: Mezipaměť sdílená více aplikačními servery, která umožňuje ukládat určité části dat do mezipaměti. Distribuovaná mezipaměť se obvykle udržuje jako externí služba pro aplikační servery, které k ní přistupují, a může zlepšit výkon a škálovatelnost aplikace ASP.NET Core.

Požadavky

Pokud chcete pracovat s .NET.NET Aspire, potřebujete místně nainstalovat následující:

Další informace najdete v tématu .NET.NET Aspire nastavení a nástrojea .NET.NET Aspire SDK.

Vytvoření projektu

  1. V horní části Visual Studiopřejděte na Soubor>Nový projekt>....
  2. V dialogovém okně zadejte .NET Aspire do vyhledávacího pole šablony projektu a vyberte .NET.NET Aspire Startovací aplikace. Zvolte Další.
  3. Na obrazovce Konfigurujte nový projekt:
    • Zadejte název projektu AspireRedis .
    • Ponechte rest hodnot ve výchozím nastavení a vyberte Další.
  4. Na obrazovce Další informace:
    • Ujistěte se, že je vybraná .NET 9.0.
    • Zrušte zaškrtnutí Použít Redis pro ukládání do mezipaměti. Implementujete vlastní nastavení ukládání do mezipaměti.
    • Vyberte Vytvořit.

Visual Studio vytvoří nové .NET Aspire řešení, které se skládá z následujících projektů:

  • AspireRedis.Web – projekt uživatelského rozhraní Blazor s výchozími konfiguracemi .NET Aspire.
  • AspireRedis.ApiService – minimální API s výchozími konfiguracemi .NET.NET Aspire, které poskytuje data frontendu.
  • AspireRedis.AppHost – projekt orchestrátoru navržený pro připojení a konfiguraci různých projektů a služeb vaší aplikace.
  • AspireRedis.ServiceDefaults – sdílený projekt .NET.NET Aspire ke správě konfigurací, které se znovu používají napříč projekty ve vašem řešení související s odolností, zjišťování služby a telemetrií.

Konfigurace projektu Hostitele aplikace

  1. Přidejte 📦Aspire.Hostování.Redis balíček NuGet do projektu AspireRedis.AppHost.

    dotnet add package Aspire.Hosting.Redis
    

    Další informace najdete v tématech dotnet add package nebo Správa závislostí balíčků v aplikacích .NET.

  2. Aktualizujte soubor Program.cs projektu AspireRedis.AppHost tak, aby odpovídal následujícímu kódu:

    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();
    

Předchozí kód vytvoří místní instanci kontejneru Redis a nakonfiguruje uživatelské rozhraní a rozhraní API tak, aby používalo instanci automaticky pro výstupní i distribuované ukládání do mezipaměti. Kód také konfiguruje komunikaci mezi front-endovým uživatelským rozhraním a back-endovým rozhraním API pomocí zjišťování služeb. Díky implicitní zjišťování služby .NET.NET Aspireje nastavení a správa připojení služeb zjednodušená pro produktivitu vývojářů. V kontextu tohoto kurzu tato funkce zjednodušuje připojení k Redis.

Tradičně byste ručně zadali připojovací řetězec Redis v souboru appsettings.json každého projektu:

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

Konfigurace připojovacího řetězce s touto metodou, zatímco funkční, vyžaduje duplikování připojovacího řetězce napříč více projekty, což může být náročné a náchylné k chybám.

Konfigurace uživatelského rozhraní s ukládáním výstupu do mezipaměti

  1. Přidejte do aplikace ukládání výstupu do mezipaměti integrační balíčky Stack Exchange:

    dotnet add package Aspire.StackExchange.Redis.OutputCaching
    
  2. V Program.cs souboru projektu AspireRedis.WebBlazor bezprostředně za řádek var builder = WebApplication.CreateBuilder(args);přidejte volání metody rozšíření AddRedisOutputCache:

    builder.AddRedisOutputCache("cache");
    

    Tato metoda provádí následující úlohy:

    • Nakonfiguruje ukládání výstupu v mezipaměti ASP.NET Core tak, aby používalo instanci Redis se zadaným názvem připojení.
    • Automaticky povolí odpovídající kontroly stavu, protokolování a telemetrii.
  3. Obsah souboru Home.razor projektu AspireRedis.WebBlazor nahraďte následujícím kódem:

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

    Součástí integrace je atribut [OutputCache], který ukládá celou vykreslenou odpověď do mezipaměti. Stránka také obsahuje volání @DateTime.Now, které vám pomůže ověřit, že odpověď je uložená v mezipaměti.

Konfigurace rozhraní API s distribuovaným ukládáním do mezipaměti

  1. Přidejte do aplikace distribuované ukládání do mezipaměti integrační balíčky Stack Exchange:

    dotnet add package Aspire.StackExchange.Redis.DistributedCaching
    
  2. Do horní části souboru Program.cs přidejte volání na AddRedisDistributedCache:

    builder.AddRedisDistributedCache("cache");
    
  3. Do souboru Program.cs přidejte následující příkazy using:

    using System.Text;
    using System.Text.Json;
    using Microsoft.Extensions.Caching.Distributed;
    
  4. V souboru Program.cs nahraďte stávající kód koncového bodu /weatherforecast následujícím kódem:

    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");
    

Místní testování aplikace

Otestujte chování aplikace při ukládání do mezipaměti pomocí následujícího postupu:

  1. Spusťte aplikaci pomocí Visual Studio stisknutím klávesy F5.
  2. Pokud se zobrazí dialogové okno Start Docker Desktop, výběrem Ano spusťte službu.
  3. Řídicí panel .NET.NET Aspire se načte v prohlížeči a zobrazí seznam projektů uživatelského rozhraní a rozhraní API.

Otestujte výstupní mezipaměť:

  1. Na stránce projektů v řádku webfrontend klikněte na odkaz localhost ve sloupci Koncové body, čímž se otevře uživatelské rozhraní vaší aplikace.
  2. Aplikace zobrazí aktuální čas na domovské stránce.
  3. Aktualizujte prohlížeč každých několik sekund, aby se zobrazila stejná stránka vrácená ukládáním výstupu do mezipaměti. Po 10 sekundách vyprší platnost mezipaměti a stránka se znovu načte s aktualizovaným časem.

Otestujte distribuovanou mezipaměť:

  1. Přejděte na stránku Počasí v uživatelském rozhraní Blazor a načtěte tabulku náhodných dat o počasí.
  2. Aktualizujte prohlížeč každých několik sekund, abyste viděli stejná data o počasí vrácená ukládáním výstupu do mezipaměti. Po 10 sekundách vyprší platnost mezipaměti a stránka se znovu načte s aktualizovanými daty o počasí.

Blahopřejeme! Nakonfigurovali jste aplikaci ASP.NET Core tak, aby používala výstup a distribuované ukládání do mezipaměti s .NET Aspire.