Middle
À quoi servent les méthodes de configuration des services en C#?
sobes.tech IA
Réponse de l'IA
Pour enregistrer des dépendances dans le conteneur d'injection de dépendances (Dependency Injection container). Cela permet à l'infrastructure de l'application de gérer la création des instances de services et de les injecter là où elles sont nécessaires.
Objectifs principaux :
- Gestion du cycle de vie : Définir la durée de vie d'une instance de service (Singleton, Scoped, Transient).
- Architecture découplée : Réduire la dépendance entre composants en utilisant des abstractions (interfaces).
- Testabilité : Faciliter le remplacement des implémentations de services pour les tests unitaires.
- Configurabilité : Possibilité de remplacer une implémentation par une autre sans modifier le code client.
Exemple d'enregistrement de services dans ASP.NET Core :
// Startup.cs ou Program.cs dans Minimal APIs
public void ConfigureServices(IServiceCollection services)
{
// Enregistrement d'un service avec un cycle de vie Singleton
services.AddSingleton<ISingletonService, SingletonService>();
// Enregistrement d'un service avec un cycle de vie Scoped
services.AddScoped<IScopedService, ScopedService>();
// Enregistrement d'un service avec un cycle de vie Transient
services.AddTransient<ITransientService, TransientService>();
// Enregistrement de MVC et autres services standards
services.AddControllersWithViews();
}
Cycles de vie des services :
| Cycle de vie | Description | Instances dans une seule requête (HTTP) |
|---|---|---|
| Singleton | Une instance pendant toute la durée de vie de l'application. | Une |
| Scoped | Une instance pendant la durée de la requête (dans le contexte HTTP). | Une |
| Transient | Une nouvelle instance est créée à chaque requête de service. | Plusieurs (à chaque injection) |