Sobes.tech
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)