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

Concluído

O .NET Aspire pode ser dividido em soluções para três problemas que enfrentam aplicativos nativos da nuvem modernos. São as seguintes:

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

Nesta 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 dos vários serviços dentro de 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 entre aplicativos com muitos componentes e serviços.

Um diagrama mostrando a relação entre o projeto .NET Aspire AppHost e os outros serviços em um aplicativo.

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

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

Compare o .NET Aspire com a forma como gere a deteção de serviços utilizando o Docker Compose. O 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 criar 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 inclui) e nenhum IntelliSense, e é difícil determinar o que exatamente está sendo executado e por quê. A depuração também pode ser difícil.

A configuração através 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 que é fácil de começar e pode ser dimensionada para um orquestrador como o Docker Compose usando uma linguagem de programação real.

A orquestração do .NET Aspire também suporta o seu desenvolvimento das seguintes formas:

  • Composição do aplicativo: o .NET Aspire especifica os projetos, contêineres, executáveis e recursos de nuvem do .NET que compõem o aplicativo.
  • Descoberta de serviço e gerenciamento de cadeia de conexão: o host do aplicativo gerencia injetando as cadeias de conexão corretas e 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 realçado.

Na primeira vez que você adiciona orquestração à sua solução, uma caixa de diálogo solicita o prefixo do nome do projeto e explica que os projetos .NET, Aspire AppHost e ServiceDefaults são adicionados. Quando você adiciona 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 alistar na orquestração do .NET Aspire .

Uma captura de tela do novo fluxo de trabalho do projeto mostrando a opção Inscrever-se na orquestração do Aspire realçada.

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

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

  • Um projeto AppHost é adicionado. O projeto contém o código de orquestração. Ele se torna o ponto de entrada para seu aplicativo e é responsável por iniciar e parar seu aplicativo. Ele também gerencia a descoberta de serviços e o gerenciamento da cadeia de conexão.
  • Um projeto ServiceDefaults é adicionado. O projeto configura o OpenTelemetry, adiciona pontos de extremidade de verificação de integridade padrão e permite a descoberta de serviços por meio do 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 Painel do .NET Aspire é adicionado à sua solução, o que permite que os atalhos acessem todos os pontos de extremidade do projeto em sua solução.
  • O painel adiciona logs, rastreamentos e métricas para os projetos em 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 que AddServiceDefaults habilita a descoberta padrão OpenTelemetry, medidores e serviço.
  • Adiciona uma chamada que MapDefaultEndpoints habilita os pontos de extremidade padrão, como /health e /alive.