Dans le nouveau ASP.NET Core, un grand nombre d’injections de dépendances sont utilisées pour écrire du code.
Par exemple, dans notre cours Startup, nous pouvons voir ce qui suit :
AddMvc AddDbContext inclut l’AddDirectoryBrowser que nous utilisions pour les visites d’annuaires auparavant :
Ce sont tous des frameworks qui offrent de bons services, et nous pouvons les utiliser directement en les injectant.
L’inversion de contrôle (IoC) est un principe de conception en programmation orientée objet qui peut être utilisé pour réduire le couplage entre le code informatique. La méthode la plus courante s’appelle Injection de Dépendances (DI), et il existe également une méthode appelée « Recherche de dépendances ». En contrôlant l’inversion, lorsqu’un objet est créé, une entité externe qui contrôle tous les objets du système lui transmet une référence à l’objet dont il dépend. On peut aussi dire que des dépendances sont injectées dans l’objet. Pour utiliser l’ioc, la classe Startup doit référencer Microsoft.Extensions.DependencyInjection(ps), ce qui est déjà assez simple : Microsoft.. Agrandir... Injection de dépendance - - ,)
Injecter le cycle de vie d’un service
Microsoft propose 3 cycles de vie pour les services auto-injectés.
Transitoire
Un service instantané de cycle de vie créé à chaque demande. Ce cycle de vie est surtout adapté aux services légers et sans état.
Portée portée
Dans le même champ d’application, le service n’est créé qu’une seule fois par requête.
Singleton (uniquement)
Le global n’est créé qu’une seule fois, la première fois qu’il est demandé, puis il est toujours utilisé.
Comment utilisez-vous ces trois cycles de vie ? Nous pouvons utiliser différentes méthodes directement lors de l’injection, le code est le suivant :
Testons la génération spécifique de ces trois cycles de vie
Nous écrivons trois interfaces avec des noms différents et 3 classes différentes pour implémenter ces interfaces, comme suit :
Dans chaque constructeur de classe d’implémentation, nous générons un nouveau GUID, ce qui nous permet de déterminer si la classe a réexécuté le constructeur.
Injecter des services dans le contrôleur
Il existe généralement trois façons d’injection : injection constructrice, injection méthode et injection d’attribut. Le conteneur IOC de Microsoft utilise par défaut l’injection de constructeurs (L’injection d’attributs n’est pas prise en charge, mais cela peut être réalisé par un remplacement tiers du conteneur)
Voir le code de la page :
Exécutez le projet et accrez-vous à l’appareil via deux navigateurs différents, comme montré ci-dessous :
Nous avons constaté que les GUID générés deux fois au cours du cycle de vie instantané sont incohérents, indiquant que l’objet n’est pas le même.
Cependant, le cycle de vie de la portée est le même, car sous la même portée, le GUID du service utilisé deux fois dans le même navigateur est le même, ce qui indique que le même objet est utilisé.
Dans le cas d’un singleton, deux navigateurs différents accèdent toujours au même GUID, indiquant que le même objet est appelé.
(Fin)
|