Vous cherchez des conseils sur la façon de structurer/architecturer une application et j'ai quelques difficultés. N'hésitez pas à ne pas limiter les réponses aux détails techniques, car je ne suis pas sûr de faire les choses de la manière la plus efficace. Je donne des exemples dans VB.NET, mais n'hésitez pas à utiliser C#, car c'est notre langue cible officielle. Je connais juste mieux vb. Nous utilisons également Visual Studio 2008.Héritage/Architecture
Donc, le scénario: Nous sommes en train d'écrire une application web qui (nous l'espérons) sera personnalisable pour plusieurs clients. Par souci de concision et de ne pas donner la ferme, disons que c'est une application de personnel. Donc, je vais avoir une classe de base Person. Cela aura des méthodes très générales seulement. Il a une propriété publique Nom dans la classe Class1.
Juste pour l'amour arguments, je vais maintenant créer un nouveau projet/assemblage Person.Employee
Maintenant, depuis que je pourrais vouloir vendre cette application aux agences de mannequins ou des entreprises de construction, peut-être que je veux ajouter un peu de très propriétés impaires. CheekStructure ou CanOperateHeavyMachinery
Alors, je vais créer de nouveaux projets en studio appelé Person.Employee.TinasModeling & Person.Employee.TomsConstructionCompany qui contiendra le code pour une entreprise spécifique uniquement.
Vous pouvez supposer que chacun de ces assemblys contiendra UNIQUEMENT une logique métier appropriée au niveau de l'assemblage dans la hiérarchie. Rappelez-vous, ceci est destiné à être une application personnalisée pour de nombreuses entreprises différentes, mais toutes traitant avec le personnel. C'est pourquoi je suis venu avec ce modèle. Si nous trouvons un bug dans un niveau inférieur, je veux juste pouvoir le réparer et expédier un dll ou un 2. Cette structure est très fortement ciblée sur nous et peut-être avoir 20 applications personnalisées ou plus. La distribution et la maintenance sont les préoccupations de PARAMOUNT ici. Il n'y a pas beaucoup de développeurs. Plus que moi, mais moins de 3 -grin-.
Maintenant, le problème.
Par souci de simplicité, j'ai Class1 en personne.
Dans mon application web, j'ai une référence à Person.Employee.TinasModeling Ce projet d'application web est juste pour Tinas Modeling.
Si je
Imports Person.Employee.TinasModeling
...
Dim cette As New Class1
this.Name = "une valeur"
Cela ne compilera pas à moins d'avoir une référence à la personne aussi.
Question 1. Ai-je vraiment besoin d'une référence à la personne de la classe de base (et probablement aussi à Person.Employee), ou y a-t-il une façon de s'en passer? Je ne veux pas que quelqu'un crée accidentellement des classes aux niveaux inférieurs de la chaîne d'héritage. Je ne suis pas sûr de vouloir les créer à des niveaux inférieurs, mais peut-être que mon problème est sans intérêt?
Question 2. Est-ce la meilleure façon d'architecturer cela?S'il vous plaît rappelez-vous, Maint et Distribution sont les préoccupations primaires ici. Image trouvant un bug à un niveau bas et devant ouvrir 20 solutions, construire chacune, tester (même si automatisé), construire et distribuer. Je veux vraiment la capacité d'envoyer 1 Dll (ou peut-être celui qui a été mis à jour, et les dépendants aussi?) Et être fait, si cette dll de niveau inférieur passe ses tests
Si je dois avoir des références à tous les niveaux inférieurs de l'arbre de l'héritage, peut-être que je devrais simplement mettre tout cela en une seule assemblée sous différents espaces de noms?
Cripes, j'espère que c'est assez clair. J'ai cherché google toute la journée pour des échantillons d'héritage en essayant de trouver quelque chose d'utile. Espérons que quelqu'un ici puisse nettoyer le brouillard de mon cerveau.
Merci à l'avance, Bob