Service Configuration Guide

Overview

This configuration template provides a comprehensive setup guide for microservice architecture implementation. It establishes standardized patterns for service discovery, health checking, logging, and monitoring in distributed systems. The configuration includes environment-specific settings, security parameters, and integration points with external services. This guide is essential for teams implementing microservices, ensuring consistent configuration across services while maintaining security and operational best practices.
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Configuration;
 
namespace MyApp.Services
{
    public static class ServiceConfiguration
    {
        public static IServiceCollection ConfigureServices(
            this IServiceCollection services,
            IConfiguration configuration)
        {
            // Register configuration
            services.Configure<AppSettings>(
                configuration.GetSection(nameof(AppSettings)));
 
            // Register HTTP clients
            services.AddHttpClient();
            services.AddHttpClient("github", c =>
            {
                c.BaseAddress = new Uri("https://api.github.com/");
                c.DefaultRequestHeaders.Add("Accept", "application/vnd.github.v3+json");
                c.DefaultRequestHeaders.Add("User-Agent", "MyApp");
            });
 
            // Register services with their interfaces
            services.AddScoped<IUserService, UserService>();
            services.AddScoped<IAuthenticationService, AuthenticationService>();
            services.AddScoped<IEmailService, EmailService>();
            services.AddScoped<ICacheService, RedisCacheService>();
 
            // Register database context
            services.AddDbContext<ApplicationDbContext>(options =>
                options.UseSqlServer(
                    configuration.GetConnectionString("DefaultConnection")));
 
            // Register background services
            services.AddHostedService<BackgroundJobService>();
            services.AddHostedService<QueueProcessorService>();
 
            // Register logging
            services.AddLogging(builder =>
            {
                builder.AddConsole();
                builder.AddDebug();
                builder.AddApplicationInsights();
            });
 
            // Register cross-cutting concerns
            services.AddAutoMapper(typeof(MappingProfile));
            services.AddMediatR(typeof(Startup));
            services.AddValidatorsFromAssembly(typeof(Startup).Assembly);
 
            // Register options
            services.Configure<JwtOptions>(
                configuration.GetSection("JwtSettings"));
            services.Configure<SmtpOptions>(
                configuration.GetSection("SmtpSettings"));
 
            return services;
        }
    }
}

Command Palette

Search for a command to run...