Руководство. Реализация кэширования с помощью интеграции .NET.NET Aspire
Облачные приложения часто требуют различных типов масштабируемых решений кэширования для повышения производительности. .NET Aspire интеграция упрощает процесс подключения к популярным службам кэширования, таким как Redis. В этой статье вы узнаете, как:
- Создайте базовое ASP.NET основное приложение, настроенное для использования .NET Aspire.
- Добавьте .NET Aspire интеграции для подключения к Redis и внедрения кэширования.
- Настройте интеграцию .NET.NET Aspire в соответствии с конкретными требованиями.
В этой статье рассматривается использование двух различных типов кэширования ASP.NET Core с помощью .NET Aspire и Redis:
- кэширование выходных данных: настраиваемый расширяемый метод кэширования для хранения всего HTTP-ответа для будущих запросов.
- распределенное кэширование: кэш, общий для нескольких серверов приложений, который позволяет кэшировать определенные части данных. Распределенный кэш обычно поддерживается как внешняя служба на серверах приложений, к которым он обращается, и может повысить производительность и масштабируемость приложения ASP.NET Core.
Необходимые условия
Для работы с .NET.NET Aspireу вас должны быть установлены следующие компоненты:
- .NET 8.0 или .NET 9.0
- Среда выполнения контейнера, совместимая с OCI, например:
- Docker рабочий стол или Podman. Дополнительные сведения см. в среде выполнения контейнеров .
- Интегрированная среда разработки (IDE) или редактор кода, например:
- Visual Studio 2022 версии 17.9 или более поздней (необязательно)
-
Visual Studio Code (необязательно)
- C# Dev Kit: расширение (необязательно)
- JetBrains Rider с плагином .NET.NET Aspire (необязательно)
Дополнительные сведения см. в разделе .NET.NET Aspire настройки и инструментови .NET.NET Aspire набора средств разработки (SDK).
Создание проекта
- В верхней части Visual Studioперейдите к Файл>New Project...>.
- В диалоговом окне введите .NET Aspire в поле поиска шаблона проекта и выберите .NET.NET Aspire начальное приложение. Выберите Далее.
- На экране Настройка нового проекта:
- Введите название проекта для AspireRedis.
- Оставьте rest значений по умолчанию и выберите Далее.
- На экране Дополнительные сведения:
- Убедитесь, что выбран .NET 9.0.
- Снимите флажок «Использовать Redis для кэширования». Вы реализуете собственную настройку кэширования.
- Выберите Создать.
Visual Studio создает новое решение .NET Aspire, состоящее из следующих проектов:
- AspireRedis.Web — проект пользовательского интерфейса Blazor с конфигурациями .NET Aspire по умолчанию.
- AspireRedis.ApiService — минимальный API с конфигурациями .NET.NET Aspire по умолчанию, которые предоставляют интерфейс с данными.
- AspireRedis.AppHost — проект оркестратора, предназначенный для подключения и настройки различных проектов и сервисов вашего приложения.
- AspireRedis.ServiceDefaults — общий проект .NET.NET Aspire для управления конфигурациями, которые используются в разных проектах в вашем решении, связанных с устойчивостью, обнаружением служби телеметрией.
Настройка проекта узла приложений
Добавьте 📦Aspire. Хостинг.Redis пакет NuGet в проект
AspireRedis.AppHost
:dotnet add package Aspire.Hosting.Redis
Дополнительные сведения см. в статье dotnet add package или управление зависимостями пакетов в .NET приложениях.
Обновите файл Program.cs проекта
AspireRedis.AppHost
, чтобы он соответствовал следующему коду: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();
Предыдущий код создает локальный экземпляр контейнера Redis и настраивает пользовательский интерфейс и API для автоматического использования экземпляра для вывода и распределенного кэширования. Код также настраивает обмен данными между интерфейсным интерфейсом и серверным API с помощью обнаружения служб. При неявном обнаружении служб .NET.NET Aspireнастройка подключений к службе и управление ими упрощается для повышения производительности разработчиков. В контексте этого руководства функция упрощает подключение к Redis.
Традиционно можно вручную указать строку подключения Redis в файле appsettings.json проекта:
{
"ConnectionStrings": {
"cache": "localhost:6379"
}
}
Настройка строки подключения с помощью этого метода, хотя он и функциональный, требует дублирования строки подключения в нескольких проектах, что может быть громоздким и подверженным ошибкам.
Настройка пользовательского интерфейса с кэшированием выходных данных
Добавьте пакеты интеграции .NET Aspire Stack Exchange Redis кэширование в приложение
AspireRedis.Web
:dotnet add package Aspire.StackExchange.Redis.OutputCaching
В файле Program.cs проекта
AspireRedis.Web
Blazor добавьте вызов метода расширенияvar builder = WebApplication.CreateBuilder(args);
сразу после строки AddRedisOutputCache.builder.AddRedisOutputCache("cache");
Этот метод выполняет следующие задачи:
- Настраивает кэширование выходных данных ASP.NET Core для использования экземпляра Redis с указанным именем подключения.
- Автоматически включает соответствующие проверки работоспособности, ведение журнала и телеметрию.
Замените содержимое файла Home.razor проекта
AspireRedis.Web
Blazor следующим образом:@page "/" @attribute [OutputCache(Duration = 10)] <PageTitle>Home</PageTitle> <h1>Hello, world!</h1> Welcome to your new app on @DateTime.Now
Интеграция включает атрибут
[OutputCache]
, который кэширует весь отрисованный ответ. Страница также включает в себя вызов@DateTime.Now
, чтобы убедиться, что ответ находится в кэше.
Настройка API с помощью распределенного кэширования
Добавьте пакеты интеграции распределенного кэширования Stack Exchange
в ваше приложение . dotnet add package Aspire.StackExchange.Redis.DistributedCaching
В верхней части файла Program.cs добавьте вызов AddRedisDistributedCache:
builder.AddRedisDistributedCache("cache");
В файле Program.cs добавьте следующие инструкции
using
:using System.Text; using System.Text.Json; using Microsoft.Extensions.Caching.Distributed;
В файле Program.cs замените существующий код конечной точки
/weatherforecast
следующим образом: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");
Тестирование приложения локально
Проверьте поведение кэширования приложения, выполнив следующие действия.
- Запустите приложение с помощью Visual Studio, нажав клавиши F5.
- Если появится диалоговое окно Пуск Docker на рабочем столе, выберите Да, чтобы запустить службу.
- Панель мониторинга .NET.NET Aspire загружается в браузере и перечисляет проекты пользовательского интерфейса и API.
Проверьте выходной кэш:
- На странице проектов в строке веб-интерфейс щелкните ссылку
localhost
в столбце Конечные точки, чтобы открыть пользовательский интерфейс приложения. - Приложение отобразит текущее время на домашней странице.
- Обновляйте браузер каждые несколько секунд, чтобы увидеть ту же страницу после кэширования. Через 10 секунд срок действия кэша истекает, а страница перезагружается с обновленным временем.
Проверьте распределенный кэш:
- Перейдите на страницу Погода на пользовательском интерфейсе Blazor, чтобы загрузить таблицу случайных данных о погоде.
- Обновите браузер каждые несколько секунд, чтобы просмотреть те же данные погоды, возвращаемые выходным кэшированием. Через 10 секунд срок действия кэша истекает, и страница перезагружается с обновленными погодными данными.
Поздравляю! Вы настроили приложение ASP.NET Core для использования выходных данных и распределенного кэширования с .NET Aspire.
.NET Aspire