Aracılığıyla paylaş


Kılavuz: .NET.NET Aspire tümleştirmeleriyle önbellekleme uygulaması

Bulutta yerel uygulamalar genellikle performansı geliştirmek için çeşitli ölçeklenebilir önbelleğe alma çözümleri gerektirir. .NET Aspire tümleştirmeleri, Redisgibi popüler önbelleğe alma hizmetlerine bağlanma işlemini basitleştirir. Bu makalede şunları nasıl yapacağınızı öğreneceksiniz:

  • ASP.NETkullanmak üzere ayarlanmış temel bir .NET Aspire uygulaması oluşturun.
  • .NET Aspire'e bağlanmak ve önyükleme yapmak için Redis tümleştirmelerini ekleyin.
  • belirli gereksinimleri karşılamak için .NET.NET Aspire tümleştirmelerini yapılandırın.

Bu makalede, ASP.NET Core ve .NET Aspirekullanarak iki farklı türde Redis önbelleğe alma özelliğinin nasıl kullanılacağı incelenmiştir:

  • Çıktı önbelleğe alma: Gelecekteki istekler için tüm HTTP yanıtlarını depolamak için yapılandırılabilir, genişletilebilir bir önbelleğe alma yöntemi.
  • Dağıtılmış önbelleğe alma: Belirli veri parçalarını önbelleğe almanızı sağlayan birden çok uygulama sunucusu tarafından paylaşılan önbellek. Dağıtılmış önbellek genellikle buna erişen uygulama sunucularında dış hizmet olarak tutulur ve bir ASP.NET Core uygulamasının performansını ve ölçeklenebilirliğini geliştirebilir.

Önkoşullar

.NET .NET Aspireile çalışmak için aşağıdakilerin yerel olarak yüklenmesi gerekir:

Daha fazla bilgi için bkz. .NET.NET Aspire kurulum ve araçve .NET.NET Aspire SDK.

Projeyi oluşturma

  1. Visual Studioüzerindeki Dosya menüsüne gidin ve>Yeni>Proje...seçeneğini seçin.
  2. İletişim kutusu penceresinde proje şablonu arama kutusuna .NET Aspire girin ve .NET.NET Aspire Başlangıç Uygulamasıseçin. Seçeneği Sonraki.
  3. Yeni projenizi yapılandırın ekranında:
    • Proje adı olarak AspireRedisgirin.
    • Değerlerin rest varsayılan değerlerinde bırakın ve İleriseçin.
  4. Ek bilgiler ekranında:
    • .NET 9.0 seçildiğinden emin olun.
    • işaretini kaldırın, Redis kullanarak önbelleğe alın. Kendi önbelleğe alma kurulumunuzu uygulayacaksınız.
    • oluştur'useçin.

Visual Studio aşağıdaki projelerden oluşan yeni bir .NET Aspire çözümü oluşturur:

  • AspireRedis.Web - Varsayılan Blazor yapılandırmalarına sahip .NET Aspire kullanıcı arabirimi projesi.
  • AspireRedis.ApiService - Ön uca veri sağlayan varsayılan .NET.NET Aspire yapılandırmalarına sahip en az API.
  • AspireRedis.AppHost - Uygulamanızın farklı proje ve hizmetlerini bağlamak ve yapılandırmak için tasarlanmış bir düzenleyici projesi.
  • AspireRedis.ServiceDefaults - .NET, .NET Aspireve telemetriile ilgili çözümünüzdeki projeler arasında yeniden kullanılan yapılandırmaları yönetmek için paylaşılan bir projedir.

Uygulama Konağı projesini yapılandırma

  1. 📦 Aspire.Hosting. NuGet paketiniRedisAspireRedis.AppHost projesine ekleyin:

    dotnet add package Aspire.Hosting.Redis
    

    Daha fazla bilgi için bkz. dotnet add package veya .NET uygulamalarında paket bağımlılıklarını yönetme.

  2. Program.cs projesinin AspireRedis.AppHost dosyasını aşağıdaki kodla eşleşecek şekilde güncelleştirin:

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

Yukarıdaki kod yerel bir Redis kapsayıcı örneği oluşturur ve kullanıcı arabirimini ve API'yi hem çıktı hem de dağıtılmış önbelleğe alma için örneği otomatik olarak kullanacak şekilde yapılandırır. Kod ayrıca hizmet bulma kullanarak ön uç kullanıcı arabirimiyle arka uç API'si arasındaki iletişimi de yapılandırıyor. .NET .NET Aspire'nin örtük hizmet bulma özelliğiyle hizmet bağlantılarının ayarlanması ve yönetilmesi, geliştirici üretkenliği açısından kolaylaştırılır. Bu öğretici bağlamında, özellik Redisbağlanma yönteminizi basitleştirir.

Geleneksel olarak, her projenin Redis dosyasında appsettings.json bağlantı dizesini el ile belirtirsiniz:

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

İşlevsel olsa da bağlantı dizesini bu yöntemle yapılandırmak için bağlantı dizesinin birden çok projede çoğaltılması gerekir; bu da zahmetli ve hataya açık olabilir.

Çıktı önbelleğe alma kullanarak kullanıcı arabirimini yapılandırma

  1. .NET Aspire uygulamanıza AspireRedis.Web tümleştirme paketlerini ekleyin:

    dotnet add package Aspire.StackExchange.Redis.OutputCaching
    
  2. Program.cs AspireRedis.Web projesinin Blazor dosyasında, var builder = WebApplication.CreateBuilder(args);satırından hemen sonra AddRedisOutputCache uzantısı yöntemine bir çağrı ekleyin:

    builder.AddRedisOutputCache("cache");
    

    Bu yöntem aşağıdaki görevleri gerçekleştirir:

    • ASP.NET Core çıktı önbelleğini, belirtilen bağlantı adına sahip bir Redis örneği kullanacak şekilde yapılandırır.
    • İlgili sağlık durumu denetimlerini, günlüğe kaydetmeyi ve telemetriyi otomatik olarak etkinleştirir.
  3. AspireRedis.Web projesinin Blazor dosyasının içeriğini aşağıdakilerle değiştirin:

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

    Tümleştirme, işlenen yanıtın tamamını önbelleğe alan [OutputCache] özniteliğini içerir. Sayfa ayrıca yanıtın önbelleğe alındığını doğrulamaya yardımcı olmak için @DateTime.Now çağrısı içerir.

API'yi dağıtılmış önbelleğe alma ile yapılandırma

  1. .NET Aspire Stack Exchange Redis dağıtılmış önbelleğe alma tümleştirme paketlerini AspireRedis.ApiService uygulamanıza ekleyin:

    dotnet add package Aspire.StackExchange.Redis.DistributedCaching
    
  2. Program.cs dosyasının en üstüne doğru AddRedisDistributedCacheöğesine bir çağrı ekleyin:

    builder.AddRedisDistributedCache("cache");
    
  3. Program.cs dosyasına aşağıdaki using deyimlerini ekleyin:

    using System.Text;
    using System.Text.Json;
    using Microsoft.Extensions.Caching.Distributed;
    
  4. Program.cs dosyasında, var olan /weatherforecast uç nokta kodunu aşağıdakilerle değiştirin:

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

Uygulamayı yerel olarak test edin

Aşağıdaki adımları kullanarak uygulamanızın önbelleğe alma davranışını test edin:

  1. Visual Studiotuşlarına basarak uygulamayı kullanarak çalıştırın.
  2. Başlat Docker Masaüstü iletişim kutusu görüntülenirse, hizmeti başlatmak için Evet seçin.
  3. .NET .NET Aspire Panosu tarayıcıda yüklenir ve kullanıcı arabirimi ve API projelerini listeler.

Çıkış önbelleğini test edin:

  1. Projeler sayfasındaki webfrontend satırında, uygulamanızın kullanıcı arayüzünü açmak için localhost sütunundaki bağlantısına tıklayın.
  2. Uygulama, giriş sayfasında geçerli saati görüntüler.
  3. Çıktı önbelleği tarafından döndürülen aynı sayfayı görmek için tarayıcıyı birkaç saniyede bir yenileyin. 10 saniye sonra önbelleğin süresi dolar ve sayfa güncelleştirilmiş bir süreyle yeniden yüklenir.

Dağıtılmış önbelleği test edin:

  1. Rastgele hava durumu verilerinin tablosunu yüklemek için kullanıcı arabirimindeki Blazor sayfasına gidin.
  2. Tarayıcıyı birkaç saniyede bir yenileyerek çıktı önbelleklemesi tarafından döndürülen aynı hava durumu verilerini görebilirsiniz. 10 saniye sonra önbelleğin süresi dolar ve sayfa güncelleştirilmiş hava durumu verileriyle yeniden yüklenir.

Tebrikler! Çıktı ve dağıtılmış önbelleğe alma kullanmak için ASP.NET Core uygulamasını .NET Aspireile yapılandırmışsınız.