Sobes.tech
Middle

¿Para qué se utilizan los métodos de configuración de servicios en C#?

sobes.tech AI

Respuesta de la IA

Para registrar dependencias en el contenedor de inyección de dependencias (Dependency Injection container). Esto permite que la infraestructura de la aplicación gestione la creación de instancias de servicios e inyectarlas donde sean necesarias.

Objetivos principales:

  • Gestión del ciclo de vida: Definir el tiempo de existencia de la instancia del servicio (Singleton, Scoped, Transient).
  • Arquitectura desacoplada: Reducir la dependencia entre componentes mediante el uso de abstracciones (interfaces).
  • Testabilidad: Facilitar la sustitución de implementaciones de servicios para pruebas unitarias.
  • Configurabilidad: Posibilidad de reemplazar una implementación por otra sin modificar el código cliente.

Ejemplo de registro de servicios en ASP.NET Core:

// Startup.cs o Program.cs en Minimal APIs
public void ConfigureServices(IServiceCollection services)
{
    // Registro de servicio con ciclo de vida Singleton
    services.AddSingleton<ISingletonService, SingletonService>();

    // Registro de servicio con ciclo de vida Scoped
    services.AddScoped<IScopedService, ScopedService>();

    // Registro de servicio con ciclo de vida Transient
    services.AddTransient<ITransientService, TransientService>();

    // Registro de MVC y otros servicios estándar
    services.AddControllersWithViews();
}

Ciclos de vida de los servicios:

Ciclo de vida Descripción Instancias en una sola solicitud (HTTP)
Singleton Una instancia durante toda la vida de la aplicación. Una
Scoped Una instancia durante la vida de la solicitud (en el contexto HTTP). Una
Transient Se crea una nueva instancia en cada solicitud de servicio. Varias (en cada inyección)