Saiba mais sobre os componentes do .NET Aspire

Concluído

Embora cada microsserviço em seu aplicativo provavelmente seja único, eles frequentemente têm requisitos semelhantes de serviços de apoio como bancos de dados e caches. Escrever código em cada microsserviço para fazer a interface com esses serviços de apoio pode ser desafiador. No .NET Aspire, esse código é reduzido se você adiciona um componente do .NET Aspire. Há componentes internos para muitos requisitos de suporte geralmente necessários em microsserviços.

Imagine que você trabalha para uma empresa de roupas e equipamentos para atividades ao ar livre. Suas equipes de desenvolvimento começaram a projetar seus microsserviços para o novo aplicativo Web eShop. Cada microsserviço pode precisar de serviços como bancos de dados, serviços de mensagens e caches. Você deseja avaliar como o .NET Aspire pode ajudar a interagir com esses serviços.

Nesta unidade, você aprenderá sobre os componentes incluídos no .NET Aspire prontos para usar e como escolher o melhor componente para seu microsserviço.

Usar componentes do .NET Aspire

Cada componente do .NET Aspire é um pacote NuGet e você pode adicioná-lo ao seu projeto usando o gerenciador de pacotes NuGet. No Visual Studio, há um novo item de menu Adicionar > Componente do .NET Aspire. Esta ação exibe o gerenciador de pacotes com um filtro aplicado para exibir apenas componentes do .NET Aspire:

Captura de tela mostrando o gerenciador de pacotes NuGet no Visual Studio exibindo componentes do .NET Aspire.

Observação

Você verá como usar essas ferramentas de componente em um exercício posterior neste módulo.

O Visual Studio Code com a extensão C# Dev Kit também dá suporte à adição de componentes do .NET Aspire.

Captura de tela mostrando a paleta de comandos do Visual Studio Code listando tipos de projeto do .NET Aspire.

A CLI do .NET também pode adicionar componentes do .NET. Por exemplo:

dotnet add package Aspire.StackExchange.Redis --prerelease

No projeto AppHost, você deve registrar o componente e consumi-lo nos projetos que o chamam:

var cache = builder.AddRedis("cache");

builder.AddProject<Projects.AspireSample_Web>("webfrontend")
    .WithReference(cache);

Em seguida, você pode usar a injeção de dependência para adicioná-lo ao projeto de consumo:

build.AddRedisClient("cache");

Outros códigos de uso variam dependendo do componente que você está usando.

Observação

Cada tipo de componente do .NET Aspire geralmente tem um pacote de hospedagem equivalente. Os pacotes de hospedagem configuram os recursos e as dependências que o aplicativo requer e você os instala no projeto AppHost, não no projeto de consumo.

Componentes de banco de dados

Em aplicativos nativos de nuvem, cada microsserviço é responsável por armazenar os próprios dados e pode precisar de um banco de dados estruturado ou semiestruturado para ler e gravar. Como cada microsserviço é desenvolvido de maneira independente, você pode descobrir que vários sistemas de banco de dados diferentes estão em uso por diferentes partes do seu aplicativo como um todo.

O .NET Aspire inclui componentes para os seguintes servidores de banco de dados relacionais:

  • PostgreSQL: Um servidor de banco de dados popular e de código aberto com uma implementação da Linguagem SQL.
  • MySQL: Outro servidor de banco de dados SQL de código aberto.
  • Banco de Dados SQL: Sistema de banco de dados SQL da Microsoft.

Observação

O componente do Banco de Dados SQL do .NET Aspire pode funcionar com o Microsoft SQL Server ou o Banco de Dados SQL do Azure, que é uma implementação do SQL Server na nuvem do Azure. Da mesma forma, o Azure inclui implementações de PaaS (Plataforma como Serviço) do PostgreSQL e MySQL. O local em que você executa um banco de dados é uma decisão para cada equipe de arquitetura de microsserviço, mas os componentes do .NET Aspire podem dar suporte a muitos locais de nuvem e não impõem nenhum serviço de hospedagem específico.

Se você quiser trabalhar usando dados semiestruturados, o .NET Aspire inclui suporte para estes sistemas NoSQL:

  • MongoDB: Um servidor de banco de dados NoSQL orientado a documentos e multiplataforma.
  • Azure Cosmos DB: O sistema de banco de dados NoSQL flexível da Microsoft, hospedado no Azure.

Componentes de armazenamento

No .NET Aspire, os componentes de armazenamento são fornecidos para microsserviços que precisam armazenar arquivos, dados ou mensagens em contas do Armazenamento do Azure. Há um componente para cada um dos três serviços no Armazenamento do Azure. Escolha o componente de acordo com o que você deseja fazer com o Armazenamento do Azure:

  • Armazenamento de Blobs do Azure: Use esse serviço para armazenar e recuperar arquivos de blob, como imagens e vídeos.
  • Armazenamento de Tabelas do Azure: Use esse serviço para armazenar e recuperar linhas em tabelas de dados semiestruturados.
  • Armazenamento de Filas do Azure: Use esse serviço para adicionar mensagens a filas para distribuição a outros microsserviços inscritos.

Componentes de sistema de mensagens

Uma forma de melhorar a confiabilidade e a flexibilidade das comunicações entre microsserviços em um aplicativo nativo de nuvem é usar soluções de mensagens que fornecem filas, tópicos e assinaturas em vez de comunicações diretas. O .NET Aspire inclui componentes para os três serviços de mensagens a seguir. Escolha o componente com base no agente de mensagens que seu desenvolvedor deseja usar:

  • RabbitMQ: Esse agente de mensagens é amplamente usado, de código aberto e dá suporte a vários protocolos de mensagens para fornecer, filas, tópicos e assinaturas.
  • Apache Kafka: Esse serviço processa fluxos de eventos, que podem incluir mensagens e inclui a API Kafka Connect para importar e exportar dados de/para outros sistemas.
  • Barramento de Serviço do Azure: Esse agente de mensagens é hospedado no Azure e fornece filas e distribuição de mensagens baseada em assinatura.

Componentes de cache

Quando um microsserviço recebe uma solicitação de um usuário ou de outro microsserviço, pode ser necessário construir uma resposta usando dados de vários locais ou operações complexas. Essa operação pode levar tempo. Ao armazenar em cache partes dessas respostas, você pode economizar tempo mais tarde quando solicitações semelhantes ou idênticas chegarem. Dessa forma, o cache otimiza o desempenho.

Um serviço de cache popular é o Redis. Ele tem a funcionalidade do agente de mensagens e do banco de dados na memória, mas é mais comumente usado para armazenar respostas em cache em aplicativos e serviços Web. O .NET Aspire tem três componentes diferentes que funcionam com o Redis. Escolha um componente com base na tarefa de cache que você deseja alcançar em seu microsserviço:

  • Componente Redis: Use esse componente quando quiser usar o Redis como um banco de dados na memória.
  • Componente de cache de saída do Redis: Use esse componente quando quiser armazenar em cache respostas HTTP completas, como páginas da Web inteiras.
  • Componente de cache distribuído do Redis: Use esse componente quando quiser criar um único cache para vários microsserviços em seu aplicativo.

Segurança

Em um aplicativo nativo de nuvem, a segurança de dados geralmente é um tópico comercialmente crítico. Como seus clientes podem confiar dados pessoais e confidenciais a você, é necessário garantir que eles sejam criptografados e protegidos contra interceptação ou adulteração. As assinaturas digitais e a criptografia exigem que você armazene chaves privadas e as recupere para descriptografia. O Azure Key Vault é um local em que você pode armazenar chaves com segurança e outros segredos, como senhas e certificados.

O .NET Aspire inclui o componente do Azure Key Vault para que você possa armazenar e recuperar segredos facilmente no Azure Key Vault.

Saiba mais