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

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy