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:
- .NET 8.0 veya .NET 9.0
- OCI uyumlu bir kapsayıcı çalışma zamanı, örneğin:
- Docker Masaüstü veya Podman. Daha fazla bilgi için bkz. Container runtime.
- Tümleşik Geliştirici Ortamı (IDE) veya kod düzenleyicisi, örneğin:
- Visual Studio 2022 sürüm 17.9 veya üzeri (İsteğe bağlı)
-
Visual Studio Code (İsteğe bağlı)
- C# Dev Kit: Uzantı (İsteğe bağlı)
eklenti ile JetBrains Rider (İsteğe bağlı)
Daha fazla bilgi için bkz. .NET.NET Aspire kurulum ve araçve .NET.NET Aspire SDK.
Projeyi oluşturma
- Visual Studioüzerindeki Dosya menüsüne gidin ve>Yeni>Proje...seçeneğini seçin.
- İletişim kutusu penceresinde proje şablonu arama kutusuna .NET Aspire girin ve .NET.NET Aspire Başlangıç Uygulamasıseçin. Seçeneği Sonraki.
-
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.
-
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
📦 Aspire.Hosting. NuGet paketiniRedis
AspireRedis.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.
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
.NET Aspire uygulamanıza
AspireRedis.Web
tümleştirme paketlerini ekleyin:dotnet add package Aspire.StackExchange.Redis.OutputCaching
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.
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
.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
Program.cs dosyasının en üstüne doğru AddRedisDistributedCacheöğesine bir çağrı ekleyin:
builder.AddRedisDistributedCache("cache");
Program.cs dosyasına aşağıdaki
using
deyimlerini ekleyin:using System.Text; using System.Text.Json; using Microsoft.Extensions.Caching.Distributed;
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:
- Visual Studiotuşlarına basarak uygulamayı kullanarak çalıştırın.
- Başlat Docker Masaüstü iletişim kutusu görüntülenirse, hizmeti başlatmak için Evet seçin.
- .NET .NET Aspire Panosu tarayıcıda yüklenir ve kullanıcı arabirimi ve API projelerini listeler.
Çıkış önbelleğini test edin:
- 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. - Uygulama, giriş sayfasında geçerli saati görüntüler.
- Çı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:
- Rastgele hava durumu verilerinin tablosunu yüklemek için kullanıcı arabirimindeki Blazor sayfasına gidin.
- 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.
.NET Aspire