Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 36245|Répondre: 1

[.NET Core] ASP.NET’injection de dépendance centrale utilise le conteneur IOC qui l’accompagne

[Copié le lien]
Publié sur 07/05/2019 13:55:10 | | | |
ASP.NET’injection de dépendance centrale utilise le conteneur IOC qui l’accompagne
https://www.itsvse.com/thread-7562-1-1.html
(Source : Architect_Programmer)

ASP.NET Core utilise Autofac pour implémenter l’injection IOC
https://www.itsvse.com/thread-7563-1-1.html
(Source : Architect_Programmer)

ASP.NET Core utilise Autofac pour implémenter l’interception AOP
https://www.itsvse.com/thread-7566-1-1.html
(Source : Architect_Programmer)

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)






Précédent:.NET Core Entity utilise Entity Framework Core pour relier les bases de données
Prochain:ASP.NET Core utilise Autofac pour implémenter l’injection IOC
 Propriétaire| Publié sur 09/03/2022 11:00:35 |
Remplacer les services dans les conteneurs DI intégrés de ASP.NET Core

Code:





Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com