2010-04-16 4 views
1

J'essaie d'obtenir une poignée sur la meilleure pratique pour le code organisation au sein de mon projet. J'ai regardé autour de l'Internet pour de bons exemples et, jusqu'ici, j'ai vu exemples d'un projet Web avec une ou plusieurs bibliothèques de classes de soutien qu'il référence ou un projet Web avec sous-dossiers qui suivent ses conventions d'espace de noms .Code Organisation Connundrum: projet Web avec plusieurs DLL de support?

En supposant qu'il n'y a pas de réponse, c'est ce que je actuellement ai pour l'organisation du code:

MyProjectWeb

Ceci est mon site web. Je référence mes bibliothèques de classes ici.

MyProject.dll

Comme l'espace de noms de base, je me sers de cette DLL pour les fichiers doivent être généralement consommables. Par exemple, ma classe "Enums" qui a toutes les énumérations dans mon projet vit là. Comme fait classe MyProjectException pour toutes les gestion d'exception.

MyProject.IO.DLL

C'est un groupe de fichiers peut-être 20 qui gèrent le téléchargement de fichiers et téléchargement (jusqu'à présent).

MyProject.Utilities.DLL

mes classes et ALl méthodes communes retroussée ensemble dans une DLL généralement consommable. Chaque classe fait suite à une convention "XHelper" tels que « SqlHelper, AuthHelper, SerializationHelper, et ainsi de suite ...

MyProject.Web.DLL

J'utilise cette DLL comme la principale interface client. droit maintenant, la majorité des fichiers de classe ici sont:

1) propriétés (telles que l'école, l'emplacement, compte, messages) 2) substance d'autorisation (adhésion personnalisée, rôle personnalisé, & fournisseurs profil personnalisé)

Ma question est simplement - est-ce logique?

De même, comment éviter d'avoir à croiser des DLL de référence d'une bibliothèque de projet à la suivante? Par exemple, MyProject.Web.DLL utilise le code de MyProject.Utilities.DLL et MyProject.Utilities.DLL utilise le code de MyProject.DLL. Est-ce résolu en cliquant sur les propriétés et en sélectionnant "Dépendances"? J'ai essayé cela mais ne semble toujours pas accéder aux espaces de noms de l'ensemble que j'ai choisi. Dois-je référencer chaque assemblage dont j'ai besoin pour chaque bibliothèque de classes?

Les réponses ont été appréciées et merci pour votre patience.

Répondre

0

Il est logique que cela procède logiquement de vos hypothèses. Le fait que vous posiez la question me porte à croire que vous pourriez ne pas penser que c'est rationnel.

En général, les choses doivent être décomposées selon des limites conceptuelles plutôt que techniques. MyProject.IO.DLL est un exemple de ce principe faisant surface dans votre design actuel. Toutes les choses IO logiquement vont ensemble, donc ils se retrouvent dans un seul binaire. Logique.

Briser les choses dans des espaces de noms en fonction de leur type technique - enum, classe, etc. - va être un peu plus problématique. Le problème des dépendances est le même que celui que vous auriez avec une classe avec plusieurs et il est résolu en utilisant la même technique: inversion de dépendance. Lorsque deux choses doivent apparemment dépendre l'une de l'autre, ajoutez une chose intermédiaire qui représente le contrat entre les deux premiers. Cela peut être des abstractions, des constantes, des médiateurs etc ... tout ce dont vous avez besoin pour que, au lieu de chose A dépendant de chose B et chose B dépendant de chose A, vous ayez des choses A et B dépendant de la chose C.

Questions connexes