Skip to content

Provides a lightweight wrapper around ASP.NET Core `WebApplicationBuilder` designed to simplify vertical slicing in web applications.

License

Notifications You must be signed in to change notification settings

p-m-j/dotnet-app-modules

Repository files navigation

AppModules (for ASP.NET Core)

NuGet Version

Provides a lightweight wrapper around ASP.NET Core WebApplicationBuilder designed to simplify vertical slicing in web applications.

Usage

// Program.cs

var builder = WebApplication
    .CreateBuilder()
    .AddAppModules(modules =>
    {
        modules.AddGreetingsModule();
    });

var app = builder.Build();
app.MapModules();
app.Run();

// GreetingsModule.cs

internal static class GreetingsModule
{
    internal static AppModuleBuilder AddGreetingsModule(this AppModuleBuilder builder)
    {
        // Register module services.
        builder.Services.AddScoped<GreeterService>();

        // Add module endpoints.
        builder.ConfigureApp(app =>
        {
            app.MapGet("/", (GreeterService greeterService) =>
                Results.Ok(greeterService.Greet()));
        }); 

        return builder;
    }
}

internal class GreeterService(ILogger<GreeterService> logger)
{
    public string Greet(string name = "world")
    {
        logger.LogTrace("Entered method Greet with arguments name={name}", name);
        return $"Hello, {name}";
    }
}

About

Provides a lightweight wrapper around ASP.NET Core `WebApplicationBuilder` designed to simplify vertical slicing in web applications.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages