Placement acceptable de la racine de composition en utilisant l'injection de dépendance (DI) et l'inversion des conteneurs de contrôle (CIO)

softwareengineering.stackexchange https://softwareengineering.stackexchange.com/questions/194511

Question

J'ai lu dans plusieurs sources, dont Blog «Ploeh» de Mark Seemann À propos de la façon dont le placement approprié de la racine de composition d'un conteneur IOC est aussi proche que possible du point d'entrée d'une application.

Dans le monde .NET, ces applications semblent généralement considérées comme des projets Web, des projets WPF, des applications de console, des choses avec une interface utilisateur typique (lire: pas des projets de bibliothèque).

Est-ce que cela va vraiment à l'encontre de ce conseil de sage pour placer la racine de composition au point d'entrée d'un projet de bibliothèque, lorsqu'il représente le point d'entrée logique d'un groupe de projets de bibliothèque, et le client d'un groupe de projet comme celui-ci est le travail de quelqu'un d'autre , dont l'auteur ne peut pas ou n'ajoutera pas la racine de composition à leur projet (un projet d'interface utilisateur ou un autre projet de bibliothèque, même)?

Je connais Ninject en tant qu'implémentation du conteneur du CIO, mais j'imagine que beaucoup d'autres fonctionnent de la même manière car ils peuvent rechercher un module contenant toutes les configurations de liaison nécessaires. Cela signifie que je pourrais mettre un module de liaison dans son propre projet de bibliothèque à compiler avec la sortie de mon principal projet de bibliothèque, et si le client voulait modifier la configuration (un scénario improbable dans mon cas), ils pourraient supprimer une DLL de remplacement pour remplacer la bibliothèque avec le module de liaison.

Cela semble éviter que les clients les plus courants de devoir faire face à des racines d'injection et de composition de dépendance et de créeraient l'API la plus propre pour le groupe de projets de bibliothèque.

Pourtant, cela semble voler face à la sagesse conventionnelle sur la question. Est-ce juste que la plupart des conseils là-bas font l'hypothèse que le développeur a également une certaine coordination avec le développement du ou des projets d'interface utilisateur, plutôt que de mon cas, dans lequel je développe simplement des bibliothèques pour les autres?

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
scroll top