Configurer les services avec IServiceCollection
dans .NET
Le cœur de la gestion des dépendances dans .NET repose sur IServiceCollection
. Cette interface, présente dans le package Microsoft.Extensions.DependencyInjection
, joue un rôle crucial dans la configuration de la manière dont les services sont instanciés et injectés dans votre application.
Comprendre IServiceCollection
IServiceCollection
est un type générique qui fournit une collection de descriptions de service. Chaque description contient des informations sur la façon dont un service particulier doit être instancié et utilisé. Vous utilisez IServiceCollection
pour enregistrer les services et leurs configurations dans le conteneur d'injection de dépendances.
Utilisation de IServiceCollection
Pour utiliser IServiceCollection
, vous avez besoin d'une instance du conteneur de service. Vous pouvez obtenir cette instance à partir de IHostBuilder
dans une application .NET, ou de WebApplicationBuilder
dans une application ASP.NET Core.
Voici un exemple de base sur la façon d'enregistrer un service avec IServiceCollection
:
public void ConfigureServices(IServiceCollection services)
{
// Enregistrer un service de type "MyService"
// en utilisant l'interface "IMyService"
services.AddTransient();
}
Dans ce code :
services
est l'instance deIServiceCollection
obtenue du conteneur de service.AddTransient
est une méthode d'extension qui enregistre le service en tant que "transient". Cela signifie qu'une nouvelle instance deMyService
sera créée à chaque fois qu'un service de typeIMyService
est demandé.
Différents types de durée de vie
IServiceCollection
prend en charge différents types de durées de vie pour les services, chacun ayant un impact sur la façon dont les instances sont créées et gérées. Voici les principaux types:
- Transient: Une nouvelle instance du service est créée à chaque demande.
- Scoped: Une seule instance du service est créée par requête HTTP.
- Singleton: Une seule instance du service est créée et partagée dans toute l'application.
Configuration avancée
IServiceCollection
offre des options avancées pour la configuration des services, notamment:
-
Configuration de l'usine: Vous pouvez spécifier une fabrique qui crée des instances de service en utilisant la méthode
AddTransient
,AddScoped
ouAddSingleton
avec un argument de type fonction déléguée. -
Paramètres de configuration: Vous pouvez injecter des paramètres de configuration dans les services en utilisant la méthode
Configure
avec un argument de type fonction déléguée. -
Ajout d'autres services: Vous pouvez ajouter d'autres services, tels que des services d'authentification et d'autorisation, en utilisant des méthodes d'extension spécifiques.
Conclusion
IServiceCollection
est un outil puissant et flexible pour la configuration de la gestion des dépendances dans .NET. En maîtrisant les concepts de base et les options avancées, vous pouvez garantir une architecture d'application bien structurée et facilement extensible.