aspire2.jpg

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:

aspire-redis.png

  • Adicione a linha abaixo em Program.cs do projeto apphost.
// 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 do cache 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 projeto web.
$ 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 projeto web o pacote instalado. Teremos um resultado semelhante ao abaixo:

aspire-web-redis.png

  • Em Program.cs do projeto web, abaixo da linha apresentada abaixo:
var builder = WebApplication.CreateBuilder(args);
  • Adicione o seguinte código:
builder.AddRedisOutputCache("cache");
  • Este código:
    1. Configura o output de cache do Asp.Net Core usando uma instância de Redis com a conexão informada no parâmetro;
    2. Automaticamente habilita health checks, logging e telemetria.
  • Vamos alterar a página Home.razor do projeto para o código abaixo, desta forma será possível testarmos a utilização do cache.
@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 ao cache, todas as solicitações subsequentes na duração de 10 segundos irão receber o retorno do cache.

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 nova home, utilizando o recurso de cache. 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 do redis criado e em execução.

aspire-redis-front.png

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.