Skip to content

Microsserviços com ASP.NET 6 usando YARP como API Gateway. Demonstra como rotear requisições entre serviços de forma simples e escalável, aplicando conceitos modernos de arquitetura distribuída com .NET.

Notifications You must be signed in to change notification settings

daniloopinheiro/dopYarpNet

Repository files navigation

Frame 298

.NET CI Multisserviços

Neste repositório você encontrará um exemplo funcional de microsserviços utilizando ASP.NET 6 com o pacote YARP (Yet Another Reverse Proxy). Uma solução prática para montar seu API Gateway em projetos distribuídos.


🎯 Objetivos

  • Educar: Demonstrar como criar um gateway reverso simples com .NET 6 e YARP.
  • Demonstrar: Integrar múltiplos serviços simulando uma arquitetura de microsserviços.
  • Simplificar: Tornar acessível a adoção de YARP para arquiteturas modernas com ASP.NET.

⚙️ Processo de Criação

Pré-requisitos: .NET 6 instalado
Dica para Linux:
sudo apt autoremove && sudo apt autoclean && sudo apt update && sudo apt upgrade -y && sudo apt dist-upgrade -y


1. Criação dos Serviços

dotnet new webapi -o PrimeiroServico -f net6.0
dotnet new webapi -o SegundoServico -f net6.0

2. Instalação dos Pacotes

Adicione os pacotes nos dois serviços:

dotnet add package Yarp.ReverseProxy --version 2.0.1
dotnet add package Yarp.Telemetry.Consumption --version 2.0.1

3. Configuração dos Endpoints

PrimeiroServico:

app.UseRouting();
app.MapGet("/primeiro", async context =>
{
    await context.Response.WriteAsync("Primeiro Service");
});

SegundoServico:

app.UseRouting();
app.MapGet("/segundo", async context =>
{
    await context.Response.WriteAsync("Segundo Service");
});

4. Criando o API Gateway

dotnet new webapi -o ApiGateway -f net6.0

Adicione os pacotes:

dotnet add package Yarp.ReverseProxy --version 2.0.1
dotnet add package Yarp.Telemetry.Consumption --version 2.0.1

5. Configuração do Gateway

Program.cs (ou Startup.cs):

builder.Services.AddReverseProxy()
  .LoadFromConfig(builder.Configuration.GetSection("ReverseProxy"));

app.UseEndpoints(endpoints =>
{
    endpoints.MapReverseProxy();
});

appsettings.json:

{
  "ReverseProxy": {
    "Clusters": {
      "primeiro": {
        "Destinations": {
          "primeiroServico": { "Address": "https://localhost:5001" }
        }
      },
      "segundo": {
        "Destinations": {
          "segundoServico": { "Address": "https://localhost:5002" }
        }
      }
    },
    "Routes": [
      {
        "RouteId": "primeiraRoute",
        "ClusterId": "primeiro",
        "Match": { "Path": "/primeiro/{**catch-all}" }
      },
      {
        "RouteId": "segundaRoute",
        "ClusterId": "segundo",
        "Match": { "Path": "/segundo/{**catch-all}" }
      }
    ]
  }
}

✅ Execução

Inicie os três projetos individualmente:

dotnet run

Acesse via browser/postman:

  • https://localhost:5000/primeiro
  • https://localhost:5000/segundo

📚 Conteúdo Adicional

  • 💻 Exemplos práticos em ASP.NET 6
  • 🎯 YARP com mapeamento por configuração
  • 🔁 Conceitos básicos de Reverse Proxy e API Gateway

📄 Licença

Este projeto está licenciado sob a MIT License.


🤝 Como Contribuir

Contribuições são bem-vindas!

  • 🔧 Abra uma Issue com sugestões ou dúvidas
  • 📥 Envie um Pull Request com melhorias
  • 💬 Compartilhe com outros devs .NET

📬 Entre em Contato

Para colaboração, dúvidas ou consultoria, entre em contato:


📖 Referências

Feito com ❤️ por Danilo O. Pinheiro
DevsFreedopme.io

About

Microsserviços com ASP.NET 6 usando YARP como API Gateway. Demonstra como rotear requisições entre serviços de forma simples e escalável, aplicando conceitos modernos de arquitetura distribuída com .NET.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages