.Net Aspire - Parte 5: Adicionando recurso de cache em uma aplicação .Net Aspire
Neste artigo, vamos adicionar um recurso de cache em nossa aplicação .Net Aspire.
Observação: Vamos dar continuidade ao artigo “Parte 4”. Iremos incluir o componente de cache na aplicação criada no artigo anterior. Para a Parte 4 não ficar muito extensa e com assuntos diversos, a separação foi uma ideia para o foco nos assuntos diferentes. Em um artigo criamos a aplicação e neste iremos adicionar um componente.
Adicionando o recurso de cache em nossa aplicação
Para inserirmos o recurso do redis
em nossa aplicação, vamos executar as etapas abaixo:
- Navegue até a pasta do projeto
apphost
$ cd MeuPrimeiroProjetoAspire.AppHost/
- Adicione o pacote
Aspire.Hosting.Redis
ao projeto.
$ dotnet add AspireTestApp.AppHost.csproj package Aspire.Hosting.Redis
No Visual Studio Code, podemos ver a instalação do pacote expandindo Packages
em nosso projeto apphost
. Teremos um resultado semelhante ao abaixo:
- Adicione a linha abaixo em
Program.cs
do projetoapphost
.
// Add Redis
var redis = builder.AddRedis("cache");
Este código configura a orquestração para criar um instância local de redis
.
- Faça a alteração em
webfrontend
para adicionar ao projeto a utilização docache
redis
. Faça a alteração deste código:
builder.AddProject<Projects.MeuPrimeiroProjetoAspire_Web>("webfrontend")
.WithExternalHttpEndpoints()
.WithReference(apiService);
- Para este:
builder.AddProject<Projects.MeuPrimeiroProjetoAspire_Web>("webfrontend")
.WithExternalHttpEndpoints()
.WithReference(apiService)
.WithReference(redis);
O método de extensão WithReference
configura a UI para utilizar o redis
automaticamente para output de cache.
- Navegue até o projeto
web
para realizar a inclusão do cache, voltando à raiz do projeto, acesse a pasta referente ao projetoweb
.
$ cd MeuPrimeiroProjetoAspire.Web/
- Vamos adicionar o pacote do redis no projeto:
$ dotnet add package Aspire.StackExchange.Redis.OutputCaching
- Assim como realizado no projeto
apphost
, podemos conferir no projetoweb
o pacote instalado. Teremos um resultado semelhante ao abaixo:
- Em
Program.cs
do projetoweb
, abaixo da linha apresentada abaixo:
var builder = WebApplication.CreateBuilder(args);
- Adicione o seguinte código:
builder.AddRedisOutputCache("cache");
- Este código:
- Configura o output de cache do Asp.Net Core usando uma instância de
Redis
com a conexão informada no parâmetro; - Automaticamente habilita
health checks
,logging
etelemetria
.
- Configura o output de cache do Asp.Net Core usando uma instância de
- Vamos alterar a página
Home.razor
do projeto para o código abaixo, desta forma será possível testarmos a utilização docache
.
@page "/"
@attribute [OutputCache(Duration = 10)]
<PageTitle>Home</PageTitle>
<h1>Hello, world!</h1>
Welcome to your new app on @DateTime.Now
- No código que incluímos, o atributo
OutputCache
especifica uma duração de 10 segundos. Após a página ser levada aocache
, todas as solicitações subsequentes na duração de 10 segundos irão receber o retorno docache
.
Testando a aplicação
-
Assim como realizado em nosso artigo anterior, quando executamos a aplicação e exploramos seus recursos, vamos executar a aplicação novamente e clicar no projeto
webfrontend
, para validarmos a novahome
, utilizando o recurso decache
. Ao Executar o projeto, você terá um resultado semelhante ao abaixo. Para validar a implementação, atualize a páginas diversas vezes e será possível vermos a permanência do mesmo horário durante 10 segundos. -
Perceba também que em nosso dashboard, foi adicionado um novo recurso chamado
cache
. -
Executando o comando
docker container ps
para verificarmos o que estamos rodando em contêiners, poderemos perceber que ao executar nossa aplicação temos um contânier com a imagem doredis
criado e em execução.
Conclusão
Você pode ver que o Aspire foi projetado para facilitar a adição de novas integrações ao seu aplicativo. Você adiciona uma nova integração ao seu aplicativo adicionando um pacote NuGet
e, em seguida, adiciona algumas linhas de código ao arquivo Program.cs
nos projetos web
e AppHost
. O Aspire então configura automaticamente o contêiner Redis e o cache de saída para você.
Se você gostou do conteúdo, deixe um comentário ou uma reação para apoiar o projeto! Compartilhe com alguém e ajude a divulgar!
Até a próxima!
[ ]´s Degas.