Partilhar via


Tutorial: Adicionar .NET Aspire a um aplicativo .NET existente

Se tiver microsserviços e .NET aplicação web existentes, poderá adicionar .NET Aspire e obter todos os recursos e benefícios incluídos. Neste artigo, você adiciona .NET Aspire orquestração a um projeto simples e preexistente do .NET 9. Você aprende a:

  • Entenda a estrutura do aplicativo de microsserviços existente.
  • Registe os projetos existentes na orquestração .NET.NET Aspire.
  • Entenda as mudanças que a inscrição faz nos projetos.
  • Inicie o projeto .NET.NET Aspire.

Pré-requisitos

Para trabalhar com .NET.NET Aspire, você precisa do seguinte instalado localmente:

Para obter mais informações, consulte a configuração e ferramentas de .NET.NET Aspire, e o SDK de .NET.NET Aspire.

Começar

Vamos começar obtendo o código para a solução:

  1. Abra um prompt de comando e altere os diretórios para onde você deseja armazenar o código.

  2. Para clonar a solução de exemplo .NET 9, use o seguinte comando: git clone

    git clone https://github.com/MicrosoftDocs/mslearn-dotnet-cloudnative-devops.git eShopLite
    

Explore o aplicativo de exemplo

Este artigo usa uma solução .NET 9 com três projetos:

  • Data Entities: Este projeto é uma biblioteca de classes de exemplo. Ele define a classe Product usada no aplicativo Web e na API Web.
  • Products: Este exemplo de API Web retorna uma lista de produtos no catálogo e suas propriedades.
  • Store: Este exemplo Blazor Web App exibe o catálogo de produtos para os visitantes do site.

Abra e comece a depurar o projeto para examinar seu comportamento padrão:

  1. Inicie Visual Studio e, em seguida, selecione Arquivo>Abrir>Projeto/Solução.

  2. Navegue até a pasta de nível superior da solução que você clonou, selecione eShopLite.slne, em seguida, selecione Abrir.

  3. No Explorador de Soluções, clique com o botão direito na solução eShopLite e selecione Configurar Projetos de Inicialização.

  4. Selecione Vários projetos de inicialização.

  5. Na coluna de Ação , selecione Iniciar para os projetos Produtos e Loja.

  6. Selecione OK.

  7. Para começar a depurar a solução, pressione F5 ou selecione Iniciar.

  8. Duas páginas são abertas no navegador:

    • Numa página são exibidos produtos através de um chamado à API Web de Produtos no formato JSON.
    • Uma página exibe a página inicial do site. No menu à esquerda, selecione Produtos para ver o catálogo obtido da API da Web.
  9. Para parar a depuração, feche o navegador.

  1. Inicie Visual Studio Code e abra a pasta que você clonou. No terminal onde você clonou o repo, execute o seguinte comando:

    code .
    
  2. Selecione o item de menu Executar e Depurar ou pressione Ctrl+Shift+D.

  3. Selecione o criar um lançamento.json arquivo link.

    Visual Studio Code: Executar e Depurar criar lançamento.json arquivo.

  4. Copie e cole o seguinte JSON neste ficheiro e guarde:

    {
        "version": "0.2.0",
        "compounds": [
            {
                "name": "Run all",
                "configurations": [
                    "Run products",
                    "Run store",
                ]
            }
        ],
        "configurations": [
            {
                "name": "Run products",
                "type": "dotnet",
                "request": "launch",
                "projectPath": "${workspaceFolder}/Products/Products.csproj"
            },
            {
                "name": "Run store",
                "type": "dotnet",
                "request": "launch",
                "projectPath": "${workspaceFolder}/Store/Store.csproj"
            }
        ]
    }
    
  5. Para começar a depurar a solução, pressione F5 ou selecione Iniciar.

  6. Duas páginas são abertas no navegador:

    • Numa página são exibidos produtos através de um chamado à API Web de Produtos no formato JSON.
    • Uma página exibe a página inicial do site. No menu à esquerda, selecione Produtos para ver o catálogo obtido da API da Web.
  7. Para interromper a depuração, feche o navegador e selecione o botão Parar duas vezes (uma para cada instância de depuração em execução).


  1. Abra uma janela do terminal e altere os diretórios para o repositório recém-clonado.

  2. Para iniciar a aplicação Produtos, execute o seguinte comando:

    dotnet run --project ./Products/Products.csproj
    
  3. Abre-se uma página do navegador, exibindo o JSON dos produtos.

  4. Em uma janela de terminal separada, altere novamente os diretórios para o repositório clonado.

  5. Inicie o aplicativo da Store executando o seguinte comando:

    dotnet run --project ./Store/Store.csproj
    
  6. O navegador abre uma página que exibe a página inicial do site. No menu à esquerda, selecione Produtos para ver o catálogo obtido da API da Web.

  7. Para parar a depuração, feche o navegador e pressione Ctrl+C em ambos os terminais.

Adicionar .NET.NET Aspire à aplicação web da loja

Agora, vamos inscrever o projeto da Store, que implementa a interface do utilizador da web, na orquestração .

  1. No Visual Studio, no Explorador de Soluções, clique com o botão direito do rato no projeto Store, selecione Adicionare, em seguida, selecione Suporte do.NET.NET Aspire Orchestrator.

  2. Na caixa de diálogo Adicionar Suporte ao .NET.NET Aspire Orchestrator , selecione OK.

    Captura de tela da caixa de diálogo Adicionar suporte ao .NET.NET Aspire Orchestrator.

Agora você deve ter dois novos projetos, ambos adicionados à solução:

  • eShopLite.AppHost: Um projeto orchestrator projetado para conectar e configurar os diferentes projetos e serviços do seu aplicativo. O orquestrador está definido como o projeto Startup, e depende do projeto eShopLite.Store.
  • pt-PT: eShopLite.ServiceDefaults: um projeto partilhado .NET.NET Aspire para gerir configurações que são reutilizadas em diversos projetos da sua solução, relacionadas com a resiliência , a descoberta de serviço e a telemetria .

No projeto eShopLite.AppHost, abra o ficheiro Program.cs. Note esta linha de código, que regista o projeto Store na orquestração .NET.NET Aspire.

builder.AddProject<Projects.Store>("store");

Para obter mais informações, consulte AddProject.

Para adicionar o projeto Products a .NET.NET Aspire:

  1. No Visual Studio, no Explorador de Soluções, clique com o botão direito do rato no projeto Produtos, selecione Adicionare, em seguida, selecione .NETSuporte ao Orchestrator.NET Aspire.

  2. Uma caixa de diálogo indicando que o projeto do Orchestrator .NET.NET Aspire já existe, selecione OK.

    Captura de tela indicando que o.NET.NET Aspire Orchestrator já foi adicionado.

No projeto eShopLite.AppHost, abra o ficheiro Program.cs. Observe esta linha de código, que registra o projeto Products na orquestração .NET.NET Aspire:

builder.AddProject<Projects.Products>("products");

Observe também que o projeto eShopLite.AppHost agora depende dos projetos Store e Products.

Criar um projeto de host de aplicativo

Para orquestrar os projetos existentes, deves criar um novo projeto anfitrião de aplicativo. Para criar um novo host de aplicativo de projeto a partir dos modelos de .NET Aspire disponíveis, use o seguinte comando .NET CLI:

dotnet new aspire-apphost -o eShopLite.AppHost

Adicione o host de aplicativo projeto à solução existente:

dotnet sln ./eShopLite.sln add ./eShopLite.AppHost/eShopLite.AppHost.csproj

Adicione o projeto Store como uma referência de projeto ao projeto de aplicação host , utilizando o seguinte comando .NET da CLI:

dotnet add ./eShopLite.AppHost/eShopLite.AppHost.csproj reference ./Store/Store.csproj

Criar um projeto de pré-definições de serviço

Depois de o projeto de host da aplicação ser criado, precisa criar um novo projeto de padrões de serviço . Para criar um novo projeto padrão de serviço a partir dos modelos disponíveis de .NET Aspire, use o seguinte comando .NET CLI:

dotnet new aspire-servicedefaults -o eShopLite.ServiceDefaults

Para adicionar o projeto à solução, use o seguinte comando .NET CLI:

dotnet sln ./eShopLite.sln add ./eShopLite.ServiceDefaults/eShopLite.ServiceDefaults.csproj

Atualize o projeto host da aplicação para adicionar uma referência ao projeto Produtos.

dotnet add ./eShopLite.AppHost/eShopLite.AppHost.csproj reference ./Products/Products.csproj

Tanto o projeto Store quanto o projeto Products precisam referenciar o projeto de padrões de serviço para que possam incluir facilmente a descoberta de serviço . Para adicionar uma referência ao projeto padrões de serviço no projeto Store, use o seguinte comando .NET CLI:

dotnet add ./Store/Store.csproj reference ./eShopLite.ServiceDefaults/eShopLite.ServiceDefaults.csproj

O mesmo comando com caminhos ligeiramente diferentes deve ser usado para adicionar uma referência aos padrões de serviço projeto no projeto Produtos :

dotnet add ./Products/Products.csproj reference ./eShopLite.ServiceDefaults/eShopLite.ServiceDefaults.csproj

Nos projetos Store e Products, atualize os seus arquivos Program.cs, adicionando a seguinte linha imediatamente após a linha var builder = WebApplication.CreateBuilder(args);:

builder.AddServiceDefaults();

Atualizar o projeto de host do aplicativo

Abra o ficheiro Program.cs do projeto do anfitrião da aplicação e substitua o seu conteúdo pelo seguinte código C#:

var builder = DistributedApplication.CreateBuilder(args);

builder.AddProject<Projects.Store>("store");

builder.AddProject<Projects.Products>("products");

builder.Build().Run();

O código anterior:

  • Cria uma nova instância DistributedApplicationBuilder.
  • Adiciona o projeto Store ao orquestrador.
  • Adiciona o projeto Products ao orquestrador.
  • Constrói e executa o orquestrador.

Descoberta de serviços

Neste ponto, ambos os projetos fazem parte de orquestração, mas o da Store precisa ser capaz de descobrir os Produtos endereço de back-end por meio dode descoberta de serviços do . Para habilitar a descoberta de serviço, abra o arquivo no eShopLite.AppHost e atualize o código que o da Store adiciona uma referência ao projeto Produtos :

var builder = DistributedApplication.CreateBuilder(args);

var products = builder.AddProject<Projects.Products>("products");

builder.AddProject<Projects.Store>("store")
       .WithExternalHttpEndpoints()
       .WithReference(products);

builder.Build().Run();

O código anterior expressa que o projeto Store depende do projeto Products. Para obter mais informações, consulte .NET.NET Aspire host de aplicativo: recursos de referência. Esta referência é usada para descobrir o endereço do projeto Produtos. Além disso, o projeto Store está configurado para usar pontos de extremidade HTTP externos. Se, mais tarde, optar por implementar esta aplicação, necessitará da chamada para WithExternalHttpEndpoints para garantir que é pública para o mundo exterior.

Em seguida, atualize o no projeto da Loja com o seguinte :

{
  "DetailedErrors": true,
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "ProductEndpoint": "http://products",
  "ProductEndpointHttps": "https://products"
}

Os endereços de ambos os pontos de extremidade agora usam o nome "produtos", que foi adicionado ao orquestrador no aplicativo hospedeiro ,. Esses nomes são usados para descobrir o endereço do Products projeto.

Explore o aplicativo inscrito

Vamos começar a solução e examinar o novo comportamento que .NET.NET Aspire fornece.

Observação

Observe que o projeto eShopLite.AppHost é o novo projeto de inicialização.

  1. No Visual Studio, para iniciar a depuração, pressione F5Visual Studio cria os projetos.
  2. Se a caixa de diálogo Iniciar Docker Área de Trabalho aparecer, selecione Sim. Visual Studio inicia o motor de Docker e cria os contentores necessários. Quando a implantação estiver concluída, o painel .NET.NET Aspire será exibido.
  3. No painel, selecione o ponto de extremidade para os produtos do projeto. Uma nova separador do navegador é aberta e apresenta o catálogo de produtos no formato JSON.
  4. No painel, selecione o ponto de extremidade para a loja do projeto . Um novo separador do navegador é exibido e exibe a página inicial da aplicação web.
  5. No menu à esquerda, selecione Produtos. O catálogo de produtos é exibido.
  6. Para parar a depuração, feche o navegador.

Exclua o lançamento . Elimine o ficheirojson que criou anteriormente; já não serve para nada. Em vez disso, inicie o projeto de aplicação host, que orquestra os outros projetos:

  1. Inicie o projeto de aplicação host clicando com o botão direito do rato sobre o projeto eShopLite.AppHost no Gerenciador de Soluções e selecionando Debug>Iniciar Nova Instância:

    Visual Studio Code: Solution Explorer selecionando Debug > Start New Instance.

    Observação

    Se Docker Desktop (ou Podman) não estiver em execução, ocorrerá um erro. Inicie o motor de contentor compatível com OCI e tente novamente.

  1. Inicie o projeto da aplicação anfitriã executando o seguinte comando:

    dotnet run --project ./eShopLite.AppHost/eShopLite.AppHost.csproj
    

    Observação

    Se Docker Desktop (ou Podman) não estiver em execução, ocorrerá um erro. Inicie o motor de contentor compatível com OCI e tente novamente.

  1. No painel, selecione o ponto de extremidade para os produtos do projeto. Uma nova separador do navegador é aberta e apresenta o catálogo de produtos no formato JSON.
  2. No painel, selecione o ponto de extremidade para a loja do projeto . Um novo separador do navegador é exibido e exibe a página inicial da aplicação web.
  3. No menu à esquerda, selecione Produtos. O catálogo de produtos é exibido.
  4. Para parar a depuração, feche o navegador.

Parabéns, adicionaste a orquestração .NET.NET Aspire à tua aplicação web pré-existente. Agora você pode adicionar integrações .NET Aspire e usar as ferramentas .NET Aspire para simplificar o desenvolvimento de seu aplicativo Web nativo da nuvem.