.net Core Dependency Injection Singleton Example

4 min read Jun 03, 2024
.net Core Dependency Injection Singleton Example

Dependency Injection Singleton dans .NET Core : Un exemple concret

Introduction

L'injection de dépendances (DI) est un principe de conception logiciel qui permet de découpler les différentes parties d'une application, améliorant ainsi la testabilité, la maintenabilité et la réutilisation du code. Dans .NET Core, l'injection de dépendances est intégrée au framework et offre plusieurs scopes, dont le singleton.

Un singleton est un modèle de conception qui garantit qu'une seule instance d'une classe est créée et accessible à l'ensemble de l'application. Dans le contexte de DI, un singleton assure que l'instance d'un service sera partagée par tous les composants de l'application.

Exemple concret

Prenons l'exemple d'un service de configuration qui permet de récupérer des paramètres depuis un fichier de configuration.

public class ConfigurationService
{
    private readonly IConfiguration _configuration;

    public ConfigurationService(IConfiguration configuration)
    {
        _configuration = configuration;
    }

    public string GetSetting(string key)
    {
        return _configuration[key];
    }
}

Pour rendre ce service singleton, il faut l'enregistrer dans le conteneur de services avec le scope Singleton dans le fichier Startup.cs.

public void ConfigureServices(IServiceCollection services)
{
    // ... autres services

    services.AddSingleton();

    // ... autres services
}

Maintenant, partout où le service ConfigurationService est injecté, la même instance sera utilisée.

public class MyController
{
    private readonly ConfigurationService _configurationService;

    public MyController(ConfigurationService configurationService)
    {
        _configurationService = configurationService;
    }

    public IActionResult Index()
    {
        string settingValue = _configurationService.GetSetting("MySetting");
        // ...
    }
}

Dans cet exemple, chaque instance de MyController utilisera la même instance de ConfigurationService, garantissant ainsi que les paramètres de configuration sont récupérés à partir du même fichier.

Avantages du singleton

L'utilisation du singleton offre plusieurs avantages:

  • Réduction de la consommation de ressources: Seule une instance du service est créée, ce qui réduit la mémoire utilisée.
  • Partage de données: La même instance est accessible à tous les composants de l'application, permettant le partage de données et la coordination.
  • Simplification de la gestion de l'état: Le singleton garantit que l'état du service est unique et partagé par tous.

Conclusion

Le scope singleton dans l'injection de dépendances .NET Core est un outil puissant pour gérer les ressources et l'état de l'application. Il offre une solution simple et efficace pour garantir que certaines instances de services sont partagées par l'ensemble de l'application, tout en conservant les avantages de la DI, tels que la testabilité et la maintenabilité du code.

Mots-clés:

  • Dependency Injection
  • Singleton
  • .NET Core