Problème de dépendance du projet Asp.net (construction de chaque niveau séparément)

Projet1 = Projet de pages Asp.net (couche de présentation)

Projet2 = couche d’access aux données

lorsque Project1 est hébergé et fonctionne correctement, si je dois append quelques méthodes PRIVATE dans Project2 et appeler ces méthodes dans certaines des méthodes PUBLIC appelées par Project1, les modifications que j’ai apscopes à Project2 doivent-elles s’appliquer?

J’ai fait ce qui précède, mais les nouvelles méthodes n’ont pas été appelées. (Je pense que Project1 pointe toujours vers les anciennes assemblées de Project2)

Je suis sûr que si je reconstruis le Project1, les modifications fonctionneront.

Mais si je dois reconstruire Project1 après chaque modification apscope dans Project2, à quoi sert-il d’avoir une architecture à plusieurs niveaux? J’ai pensé que la bonne chose à propos des niveaux séparés est que l’on peut faire autant de changements dans une couche sans reconstruire les autres couches … est-ce une mauvaise perception?

Vous n’avez pas à le reconstruire. Vous pouvez simplement copier la nouvelle dll project2 dans le répertoire Web app \ bin et cela fonctionnera si l’interface n’a pas changé. Une version de project1 reconstruira de manière redondante project1 et produira le même résultat, et inclura également la dernière version de project2, c’est pourquoi il fonctionne également.

Tout d’abord, un niveau séparé ne signifie pas vraiment des assemblages séparés. Un programme d’architecture multi-niveaux peut facilement être stocké dans un assemblage et avoir des classes DAL, de présentation et BL séparées par un séparateur logique tel qu’un espace de noms ou même des dossiers de projets avec classes (ou même aucune séparation logique), mais vous saurez que pour DAl et annother pour BL, etc.)

A votre question – si votre DAL est générique et a une interface fixe, vous pouvez mettre à jour votre assemblage de dal (par exemple, corriger certaines méthodes douteuses, ou quelque chose d’autre) si vous ne changez pas l’interface des méthodes publiques. Évidemment, si vous modifiez une interface, vos autres assemblys faisant référence à cet assemblage devront non seulement être reconstruits, mais également réécrits pour pouvoir utiliser de nouveaux noms de méthodes, par exemple.