Par "Verticalement cloisonné", je veux dire avoir namespaces nommé d'après les modules plutôt que des "couches"Comment est-ce que j'évite la collision d'espace de nom et de nom de classe dans les assemblys «partitionnés verticalement»?
Ainsi,
- MyApp.Core
- MyApp.Accounting
- MyApp.OrderManagement
- MyApp.HR
au lieu de,
- MyApp.UI
- MyApp.Business
- MyApp.Data
La seule question que je me présente en est que, parfois, ces assemblées pourraient avoir une partie de l'espace de noms qui est identique à un nom du type. Supposons que je crée un module associé au compte et que je l'appelle MyApp.Account.dll avec l'espace de nom de base MyApp.Account. Inévitablement, je dois créer une classe nommée Account. Ensuite, je dois utiliser l'espace de noms ou les alias de type.
En plus d'être très créatif avec les noms, quelqu'un d'autre a-t-il déjà expérimenté le découpage des assemblages de cette manière et a-t-il traité des problèmes de collision de noms?
Puis-je vous demander quel est le besoin pour vous de créer votre espace de noms comme celui-ci? Pourquoi pas MyApp.Business.Account? – ram
Voulez-vous dire que l'espace de noms serait MyApp.Business, qui contiendrait le type Account? Si c'est le cas, c'est une façon de le gérer - en fait, je pense à garder les noms des assemblées comme MyApp.Accounting, puis l'espace de noms comme MyApp.DomainObjects, sous lequel le type de compte serait créé. –
La raison pour laquelle je crée ces tranches verticales est que chaque "module" peut être développé et maintenu séparément. Au lieu d'avoir toutes vos fonctionnalités dans un seul assembly sous "Business", vous auriez beaucoup d'assemblys contenant les "couches" nécessaires pour supporter une seule fonctionnalité. –