Ad Code

Responsive Advertisement

adsense

Qu'est-ce que l'injection de dépendance?



Dans cet article, nous explorerons certains des avantages de l’injection de dépendance et la façon dont elle peut être utilisée dans votre projets ASP.NET MVC ou projet ASP.NET Core.

Qu'est-ce que l'injection de dépendance?




Avant de comprendre ce que cela signifie dans la programmation, voyons d’abord ce que cela signifie en général, car cela nous aidera à mieux comprendre le concept.

Disons que nous voulons faire du thé.
Comment le ferions-nous et de quoi avons-nous besoin? Nous avons besoin d'eau bouillie, d'une tasse propre, de sachets de thé, de sucre et de lait .
Pour faire du thé, nous devons fournir tous ces ingrédients et les gérer nous-mêmes. Nous devons remplir la bouilloire avec de l'eau et la faire chauffer, aller chercher le lait dans le réfrigérateur et faire le reste.
Supposons maintenant que nous pouvons faire du thé en demandant simplement à quelqu'un d'autre de le faire pour nous. Quelqu'un qui sait faire le thé comme on le veut. Est-ce que ce serait mieux que de faire le thé nous-mêmes? Si oui, alors bienvenue à l'injection de dépendance.

L'injection de dépendance est un framework qui se charge de créer des objets pour nous sans avoir à se soucier de fournir les bons ingrédients pour ainsi dire.


La définition que j'ai trouvée la plus utile est:
En Informatique, l'injection de dépendance est une technique par laquelle un objet (ou une méthode statique) fournit les dépendances d'un autre objet. Une dépendance est un objet utilisable (un service).
  • Qu'est-ce qu'une "dépendance"?
En bref, une dépendance est quelque chose dont une classe a besoin pour faire son travail. Imaginez une application qui doit consigner diverses activités.
  • Que signifie exactement "injection"?
Le terme "injection" fait simplement référence au concept d'une classe qui tire ses dépendances d'une source externe (souvent passée en tant qu'argument constructeur) plutôt que de les créer en interne.

Comment ça marche



Il existe principalement 4 façons de réaliser l’injection de dépendance.
  1. Injection via Constructor
 Dans cette méthodologie,l’objet de la classe concrète étant passé au constructeur de la classe dépendante.
  1. Injection via Property
Dans cette méthodologie,Nous injectons la classe concrète en créant une propriété dont le type est Interface.
  1. Injection via Method
Dans cette méthodologie, l'objet de classe concret est transmis via le paramètre de méthode à la classe dépendante.
  1. Injection via Service Locator
Service Locator peut agir comme un simple mappeur d'exécution. Cela permet d'ajouter du code au moment de l'exécution sans recompiler l'application et, dans certains cas, sans même le redémarrer.


Avantage 

Dépendances réduites
L'injection de dépendances permet d'éliminer, ou du moins de réduire, une dépendance inutile des composants. Un composant est vulnérable au changement de ses dépendances. 
Si une dépendance change, le composant devra peut-être s'adapter à ces modifications. Par exemple, si une signature de méthode d'une dépendance est modifiée, le composant devra modifier cet appel de méthode. Lorsque les dépendances d'un composant sont réduites, il est moins vulnérable aux changements.
Code plus réutilisable
La réduction des dépendances des composants facilite généralement la réutilisation dans un contexte différent. Le fait que des dépendances puissent être injectées et donc configurées de manière externe augmente la réutilisabilité de ce composant. Si une implémentation différente d'une interface est nécessaire dans un contexte différent, ou simplement une configuration différente de la même implémentation, le composant peut être configuré pour fonctionner avec cette implémentation. Il n'est pas nécessaire de changer le code.
Code plus testable
L'injection de dépendance augmente également la testabilité des composants. Lorsque des dépendances peuvent être injectées dans un composant, il est possible d'injecter des implémentations factices de ces dépendances. Les objets fantaisie sont utilisés pour les tests en remplacement d'une implémentation réelle. Le comportement de l'objet fictif peut être configuré. De cette manière, le composant utilisant la maquette peut être testé pour gérer correctement tous les comportements. Par exemple, gérer les deux quand la maquette retourne un objet correct, quand la valeur NULL est renvoyée et quand une exception est levée. De plus, les objets fictifs enregistrent normalement les méthodes qui ont été invoquées afin que le test puisse vérifier que le composant utilisant le fictif les a utilisés comme prévu.
Code plus lisible
L'injection de dépendance déplace les dépendances vers l'interface des composants. Cela facilite la visualisation des dépendances d'un composant, rendant le code plus lisible. Vous n'avez pas à parcourir tout le code pour voir quelles dépendances vous devez satisfaire pour un composant donné. Ils sont tous visibles dans l'interface.
.

Inconvénients de DI

C’est un peu complexe à apprendre, et en abuser, cela peut poser des problèmes de gestion et d’autres problèmes.
De nombreuses erreurs de compilation sont poussées vers l'exécution.
Les infrastructures d'injection de dépendances sont implémentées avec une réflexion ou une programmation dynamique. Cela peut entraver l'utilisation de l'automatisation IDE, telle que «trouver des références», «afficher la hiérarchie des appels» et le refactoring sécurisé.



Ad Code

Responsive Advertisement