Je développe une solution en couches utilisant WinForms, Visual Studio 2015, Entity Framework 6 et l'injection de dépendance sans conteneur tiers. À l'heure actuelle, j'ai une structure qui permet à l'interface utilisateur, BLL et DAL de ne pas avoir besoin de se référencer si je place les interfaces nécessaires pour effectuer le travail dans un projet partagé. Voir l'option A dans le diagramme ci-dessous:Où placer des interfaces dans un projet Visual Studio pour une solution en couches à l'aide de Dependency Injection
Les services BLL sont minces comme ils l'appellent essentiellement les mises en œuvre complètes dans le DAL (c.-à-BLL.GetDepts appelle DAL.GetDepts A l'origine, j'avais les interfaces définies dans. la BLL, comme indiqué dans l'option B. L'option B exigeait également que la couche LAL comprenne les interfaces, et que l'interface utilisateur devait également faire référence à la couche BLL. UI ou DAL donc il n'y avait pas de dépendance sur l'une ou l'autre couche Bien que l'option B ne dépende pas de toutes les couches, je commence à me demander si ce n'était pas une mauvaise idée. affectant le BLL tant que les couches de remplacement honorent l'interface exigences. Que j'utilise l'option A ou B, toute modification apportée à l'interface utilisateur ou à la couche d'accès direct nécessitera toujours un test avec la BLL. Donc, je commence à penser que faire des efforts pour que toutes les couches soient indépendantes les unes des autres n'était pas vraiment nécessaire ou pragmatique. La raison pour laquelle j'ai commencé à remettre en question mon passage à l'option A est parce que j'augmente le nombre de classes avec des interfaces pour étendre la fonctionnalité BLL, j'augmente également le nombre d'entrées d'interface dans la zone partagée. En regardant visuellement mon projet Visual Studio, je pense que toute couche qui a besoin de quelque chose de la BLL devrait trouver l'interface décrivant ce dont le BLL a besoin dans la couche BLL. C'est ce que l'option B a fait. Maintenant, avec l'option A, je dis que toute couche souhaitant implémenter quelque chose que la BLL doit regarder dans la section des interfaces BLL du projet partagé. Tout fonctionne pour l'instant mais je ne suis pas sûr que la poursuite de ce chemin va causer des problèmes. Donc, la question est, "Y a-t-il un problème avec l'option de poursuite A comme décrit ci-dessus?".
Merci Mark pour les informations et références. Principes, modèles et pratiques Agile en C# est maintenant un autre ajout Kindle à ma bibliothèque. – Robertcode