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

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

 
 
 

Contributors

Languages