Introduction
Re-bonjour! Après avoir vu le
différence entre les variables de type valeur et de type référenceet
Questions d’entretien de base asp.netnous allons maintenant trouver la différence entre
addtransient vs scoped vs singleton dans le noyau ASP.net.
Reconnaître le cycle de vie complet de DI
(Injection de dépendance)
est nécessaire dans
Applications ASP.Net Core. Comme nous le savons, DI est une méthode pour accomplir une liaison lâche entre les objets et leurs dépendances. Généralement, le
Des classes
déclarent toujours leurs propres dépendances via le constructeur, ce qui leur permet de suivre la règle des dépendances explicites. Ce processus est connu sous le nom d’injection de constructeur.
Afin d’appliquer l’injection de dépendances, nous devons configurer un conteneur DI spécifique avec des classes prédéterminées qui contribuent à DI.
Pourquoi avons-nous besoin d’apprendre cette différence?
-
Il explique la durée de vie de la composition d’un objet ou d’un enregistrement dans le noyau .net à l’aide de Dependency Injection (DI).
-
Ensuite, DI Container doit déterminer s’il doit renvoyer une nouvelle instance de service ou fournir un objet ou une instance actuelle
- La durée du service dépend de la manière dont nous initions la dépendance.
- Nous expliquons la durée de vie pendant que nous enregistrons le service.
Les 3 options suivantes de durée de vie et d’enregistrement sont expliquées.
1. Ajouter une portée
Les services à vie délimités ne sont développés qu’une seule fois par demande. En service délimité, nous recevons un nouveau
objet
ou instance avec chaque requête HTTP unique. Une instance similaire est livrée pour toute la portée de la même requête.
Par exemple, si nous avons des paramètres dans le régulateur, les deux objets possèdent la même instance pour la requête
C’est certainement une meilleure option lorsque vous souhaitez conserver un état dans une requête.
services.AddScoped
2. Ajouter un singleton
Les services à vie Singleton sont automatiquement développés la première fois qu’ils sont demandés (ou pendant l’exécution de “ConfigureServices” si vous y mentionnez un objet ou une instance, puis chaque demande successive utilisera le même objet ou instance.
-
Un seul objet ou instance de service a été développé tout au long de la durée de vie.
-
Partout où le service est nécessaire, le même objet ou la même instance est fréquemment utilisé.
-
Depuis sa génération d’un service à vie unique, la fuite de mémoire dans ces services augmentera avec le temps.
-
De plus, il possède une efficacité mémoire car ils sont développés une fois réutilisés partout.
services.AddSingleton
3. Ajouter un transitoire
Les services transitoires à vie sont automatiquement développés chaque fois qu’ils reçoivent un
requête http. Cette durée de vie transitoire fonctionne de manière adéquate pour les services sans état qui sont légers.
-
Pour chaque objet ou instance de la requête HTTP, une nouvelle instance de service unique est générée.
-
C’est la bonne méthode pour la technique multi-threading car les deux objets sont indépendants l’un de l’autre.
-
L’instance est générée chaque fois qu’elle utilise plus de mémoire et de ressources et peut avoir un effet négatif sur les performances.
-
Ceci est utilisé pour un service léger qui est peu ou n’a pas d’état.
services.AddTransient
Quel service est utilisé quand ?
Pour comprendre ajoutertransitoire contre délimité contre singletonvoici l’utilité de 3 méthodes.
Méthode AddSingleton : Cela peut être utilisé pour le service de journalisation, l’indicateur de fonctionnalité de déploiement (pour activer et désactiver le module au moment du déploiement), le service de messagerie, etc.
Méthode AddScoped : C’est un meilleur choix si vous souhaitez conserver un état dans une requête.
Méthode AddTransient : Cette méthode est utilisée pour les services légers et sans état.
Conclusion
J’espère que vous avez une idée détaillée sur
addtransient vs scoped vs singleton de cet article. Surtout, le
Développeurs ASP.net
pourrait avoir une idée suffisante de l’injection de dépendance.
More Stories
L’hélicoptère Ingenuity Mars atteint une altitude record lors de son 35e vol
La FTC de Lina Khan se bat avec Microsoft au sujet de l’accord avec Activision Blizzard
Ces images satellites exclusives montrent que la mégapole de science-fiction saoudienne est en bonne voie