Como adicionar orquestração a um aplicativo .NET existente

Concluído

O .NET Aspire pode ser dividido em soluções para três problemas enfrentados pelos aplicativos modernos nativos da nuvem. Estes são:

  1. Gerenciando a complexidade da orquestração entre microsserviços.
  2. Simplificando como seus microsserviços usam componentes por meio de pacotes NuGet.
  3. Apoiar a velocidade do desenvolvedor por meio de ferramentas e modelos.

Nessa unidade, veja como o uso da orquestração do .NET Aspire traz benefícios para seus aplicativos nativos da nuvem existentes. Em seguida, veja como inscrever seu aplicativo na orquestração do .NET Aspire e examine as alterações feitas em sua solução.

Benefícios da orquestração do .NET Aspire

Orquestração é a coordenação e gerenciamento de vários serviços em um aplicativo nativo da nuvem. O .NET Aspire fornece abstrações para gerenciar a descoberta de serviços, variáveis de ambiente e configurações de contêiner da sua solução. Essas abstrações também fornecem padrões de configuração consistentes em aplicativos com muitos componentes e serviços.

Um diagrama que mostra o relacionamento entre o projeto .NET Aspire AppHost e os outros serviços em um aplicativo.

O .NET Aspire tem três tipos básicos de computação que suporta com orquestração:

  • ProjectResource: Um projeto .NET, como aplicativos Web ASP.NET Core.
  • ContainerResource: Uma imagem de contêiner, como uma imagem Docker contendo Redis.
  • ExecutableResource: Um arquivo executável.

Compare o .NET Aspire com a maneira como você gerencia a descoberta de serviços usando o Docker Compose. Docker Compose é excelente, mas começa a se tornar improdutivo quando tudo o que você precisa fazer é executar vários projetos ou executáveis. Você precisa construir imagens de contêiner, compor o YAML para conectá-las e, em seguida, executar aplicativos dentro de contêineres. Além disso, há substituições de variáveis de ambiente (e inclusões) e nenhum IntelliSense, e é difícil determinar exatamente o que está sendo executado e por quê. A depuração também pode ser difícil.

A configuração por meio de código declarativo é melhor. Usando o .NET Aspire, você não precisa aprender nada além do que já sabe. O .NET Aspire é uma experiência melhor, fácil de começar e que pode ser ampliada para um orquestrador como o Docker Compose usando uma linguagem de programação real.

A orquestração do .NET Aspire também oferece suporte ao seu desenvolvimento das seguintes maneiras:

  • Composição do aplicativo: o .NET Aspire especifica os projetos .NET, contêineres, executáveis e recursos de nuvem que compõem o aplicativo.
  • Descoberta de serviço e gerenciamento de cadeia de conexão: O host do aplicativo gerencia a injeção das cadeias de conexão corretas e das informações de descoberta de serviço para simplificar a experiência do desenvolvedor.

Inscrever um aplicativo existente na orquestração do .NET Aspire

O Visual Studio fornece menus para inscrever um projeto existente na orquestração do .NET Aspire.

Uma captura de tela do menu Adicionar mostrando o suporte do .NET Aspire Orchestrator destacado.

Na primeira vez que você adicionar orquestração à sua solução, uma caixa de diálogo solicitará o prefixo do nome do projeto e explicará que os projetos .NET Aspire AppHost e ServiceDefaults foram adicionados. Ao adicionar mais projetos a uma solução já orquestrada, a caixa de diálogo notifica que o projeto AppHost foi atualizado para incluir esses projetos.

Se você estiver criando um novo projeto, durante o novo fluxo de trabalho do projeto, o Visual Studio perguntará se você deseja se inscrever na orquestração do .NET Aspire.

Uma captura de tela do novo fluxo de trabalho do projeto mostrando a opção de orquestração Enlist in Aspire destacada.

Alterações que o Aspire faz em uma solução existente

Quando você adiciona a orquestração do .NET Aspire à sua solução, ocorrem as seguintes alterações:

  • Um projeto AppHost é adicionado. O projeto contém o código de orquestração. Ele se torna o ponto de entrada do seu aplicativo e é responsável por iniciar e interrompê-lo. Ele também gerencia a descoberta de serviços e o gerenciamento de cadeias de conexão.
  • Um projeto ServiceDefaults é adicionado. O projeto configura o OpenTelemetry, adiciona endpoints de verificação de integridade padrão e permite a descoberta de serviços por meio de HttpClient.
  • O projeto de inicialização padrão da solução é alterado para AppHost.
  • As dependências dos projetos inscritos na orquestração são adicionadas ao projeto AppHost.
  • O .NET Aspire Dashboard é adicionado à sua solução, o que permite atalhos para acessar todos os pontos finais do projeto na sua solução.
  • O painel adiciona logs, rastreamentos e métricas para os projetos na sua solução.

Se você adicionar orquestração a um projeto de aplicativo web, o .NET Aspire adicionará automaticamente uma referência ao projeto ServiceDefaults. Em seguida, ele faz as seguintes alterações no código em Program.cs:

  • Adiciona uma chamada a AddServiceDefaults que habilita o OpenTelemetry padrão, medidores e descoberta de serviço.
  • Adiciona uma chamada a MapDefaultEndpoints que habilita os ponto de extremidade padrão, como /health e /alive.