Table of Contents

Class WebApplicationBuilderExtensions

Namespace
arolariu.Backend.Core.Domain.General.Extensions
Assembly
arolariu.Backend.Core.dll

Provides extension methods for configuring the WebApplicationBuilder with general domain services and infrastructure. This class serves as the Composition Root for dependency injection, centralizing the configuration of cross-cutting concerns and foundational services required by the application.

[ExcludeFromCodeCoverage]
internal static class WebApplicationBuilderExtensions
Inheritance
WebApplicationBuilderExtensions
Inherited Members

Remarks

This class follows the Composition Root pattern, where all dependency injection configuration is centralized in one location. It configures: - Configuration sources (Azure Key Vault, App Configuration, local files) - Cross-cutting concerns (CORS, localization, HTTP clients) - Infrastructure services (health checks, telemetry, authentication) - Third-party integrations (Swagger documentation, Azure services)

The configuration is environment-aware, automatically adjusting between development and production settings based on the ASPNETCORE_ENVIRONMENT variable.

Methods

AddAzureConfiguration(WebApplicationBuilder)

Configures the application to use Azure Key Vault for secrets management and Azure App Configuration for centralized configuration. This method establishes secure connections to Azure services and sets up configuration providers with appropriate retry policies.

private static void AddAzureConfiguration(this WebApplicationBuilder builder)

Parameters

builder WebApplicationBuilder

The WebApplicationBuilder instance to configure with Azure services.

Remarks

This method configures two primary Azure services: - Azure Key Vault: For secure storage and retrieval of application secrets - Azure App Configuration: For centralized application configuration management

Authentication is handled using DefaultAzureCredential, which supports multiple authentication methods: - Managed Identity (in production environments) - Azure CLI credentials (in development) - Environment variables and other fallback methods

Configuration behavior varies by environment: - DEBUG builds: Uses "DEVELOPMENT" label filter for App Configuration - RELEASE builds: Uses "PRODUCTION" label filter and explicit Managed Identity client ID

Retry policies are configured with exponential backoff: - Maximum 10 retries with 30-second base delay - 5-minute network timeout for resilience against transient failures

Both services are configured with 30-minute refresh intervals to balance between configuration freshness and service load.

Exceptions

ArgumentNullException

Thrown when required configuration keys (SecretsEndpoint, ConfigurationEndpoint) are missing.

UriFormatException

Thrown when the provided endpoint URLs are not valid URIs.

AddGeneralDomainConfiguration(WebApplicationBuilder)

Configures the WebApplicationBuilder with general domain services and cross-cutting infrastructure concerns. This method serves as the primary composition root for the application's foundational services.

public static void AddGeneralDomainConfiguration(this WebApplicationBuilder builder)

Parameters

builder WebApplicationBuilder

The WebApplicationBuilder instance to configure with general domain services.

Examples

// Usage in Program.cs
WebApplicationBuilder builder = WebApplication.CreateBuilder(args);
builder.AddGeneralDomainConfiguration();

WebApplication app = builder.Build();
// Configure application pipeline...
app.Run();

Remarks

This method configures the following service categories in order:

Configuration Sources: - Environment variables for runtime configuration overrides - appsettings.json for base application settings - Environment-specific appsettings files (Development/Production) - Azure Key Vault and App Configuration for secure and centralized configuration

HTTP and Communication Services: - HttpClient for outbound HTTP communications - HttpContextAccessor for accessing HTTP context in non-controller classes - CORS policy "AllowAllOrigins" for cross-origin requests (development-focused)

API Documentation and Discovery: - API Explorer endpoints for service discovery - Swagger/OpenAPI documentation generation with custom configuration

Localization and Internationalization: - Localization services for multi-language support

Monitoring and Health: - Health checks for service availability monitoring - OpenTelemetry integration for distributed tracing, logging, and metrics

Authentication and Authorization: - Authentication services through Auth module integration

See Also

AddLocalConfiguration(WebApplicationBuilder)

Configures the application to use local configuration sources instead of Azure services. This method is intended for local development scenarios where Azure services are not available or desired.

private static void AddLocalConfiguration(this WebApplicationBuilder builder)

Parameters

builder WebApplicationBuilder

The WebApplicationBuilder instance to configure with local configuration sources.

Remarks

This method sets up local configuration management using: - LocalOptionsManager: Manages configuration from local files and environment variables - LocalOptions: Configuration section binding for local development settings

This configuration approach is typically used during: - Local development and testing - CI/CD pipeline builds where Azure connectivity is not required - Offline development scenarios

Note: This method is currently marked as unused but reserved for future implementation of environment-specific configuration logic.