Olá Robert! Como vai?
Você está no caminho certo ao pensar em modularizar a sua aplicação.
A arquitetura que você está utilizando pode, sim, ser chamada de "Monolítico Modular". Esse tipo de arquitetura é bastante comum em projetos reais, especialmente quando estamos lidando com sistemas que não são extremamente complexos e que podem ser mantidos de forma eficiente sem a necessidade de uma arquitetura de microserviços.
A organização das pastas e a separação das responsabilidades, como mostrado no curso, são práticas recomendadas para manter o código mais limpo e fácil de manter. Ao criar classes de extensão para os endpoints, você está aplicando um conceito importante de separação de responsabilidades, o que facilita a manutenção e a escalabilidade do código.
Para um sistema simples, como o apresentado no curso, essa abordagem é bastante válida. Por exemplo, ao separar os endpoints de artistas e músicas em classes distintas, você torna o código mais legível e facilita futuras manutenções ou expansões. Aqui está um exemplo prático de como isso pode ser útil:
Imagine que você precise adicionar novos endpoints para gerenciar álbuns no futuro. Com essa estrutura modular, você simplesmente criaria uma nova classe AlbunsExtensions
e adicionaria os métodos de extensão para os endpoints de álbuns, sem precisar mexer nos endpoints de artistas ou músicas.
public static class AlbunsExtensions
{
public static void AddEndPointsAlbuns(this WebApplication app)
{
app.MapGet("/Albuns", ([FromServices] DAL<Album> dal) =>
{
return Results.Ok(dal.Listar());
});
app.MapPost("/Albuns", ([FromServices] DAL<Album> dal, [FromBody] Album album) =>
{
dal.Adicionar(album);
return Results.Ok();
});
// Outros endpoints de álbuns...
}
}
E no Program.cs
, você apenas adicionaria a chamada para essa nova extensão:
app.AddEndPointsAlbuns();
Essa abordagem modular facilita bastante a manutenção e a adição de novas funcionalidades ao sistema.
Espero ter ajudado e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.