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) |