Je travaille sur une application Silverlight. Je l'ai divisé en plusieurs assemblées:
- Domaine
- Référentiels (tout avec persistance dans la base de données Sterling)
- UI
- ...
C'est comme ça que je l'ai appris, mais je me suis demandé. Si vous savez que les DLL ne vont pas être réutilisées, est-il nécessaire de les diviser? Ou pourriez-vous tout mettre dans un seul assemblage et utiliser des dossiers et des espaces de noms pour le garder en ordre?
J'ai également vu des projets qui ont trop d'assemblages. Au lieu d'utiliser des espaces de noms là où cela aurait été approprié.
Alors: quand créez-vous un nouvel assemblage pour un nouveau morceau de code? De bonnes ressources à ce sujet? Et divisez-vous le code techniquement (domaine, données, interface utilisateur, etc.) et / ou fonctionnel (c'est-à-dire administration des patients, patient-médical, logistique hospitalière, ... - probablement uniquement pour des applications plus grandes au niveau de l'entreprise)?
A
,B
,C
,D
,E
,F
,G
,H
,I
,J
,K
. Où que vous faites référence à l' assemblageA
, vous devez également faire référence à ses assemblées dépendantes:B
,C
,D
. Mais l' assemblageC
dépend:E
,F
,G
,H
donc nous allons avoir besoin de ceux qui sont trop. Donc, chaque fois que vous avez besoin d'une fonction,A
vous devez dérouler 7 assemblages supplémentaires pour le faire fonctionner; en vous assurant d'obtenir les versions correctes de chaque assemblage. Bienvenue dans la nouvelle DLL Hell.Un assembly est l'unité de déploiement d'une application .NET; vous devez donc envisager de faire correspondre la coupe de vos assemblages avec votre architecture de déploiement.
Les assemblys sont également utiles lorsque vous avez besoin d'un contrôle de version distinct sur du code. Par exemple, lorsque vous disposez d'interfaces communes qui bénéficieraient d'un contrôle de version indépendant, vous devez séparer ce code dans un assembly.
N'oubliez pas que les espaces de noms peuvent s'étendre sur des assemblys. Dans de nombreux cas, il suffit de séparer le comportement à l'aide d'espaces de noms. Regardez le .NET
mscorlib.dll
qui dans un seul assembly contient du code qui couvre un vaste éventail de comportements séparés uniquement par un espace de noms.Si vous voulez une certaine autorité à ce sujet, ne cherchez pas plus loin:
Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries (2nd Edition) par Krzysztof Cwalina et Brad Abrams.
la source