Domain Driven Design
Session présentée par sami jabert de DNG Consulting dans le carde du symposium DNG
Sami, créateur de DotNetGuru, s'essaye à partager sa perception du DDD dont on peut trouver un livre résumé (de 100 pages quand même) du livre référence d'Eric Evans sur le sujet.
Sa session assez pragmatique est intéressante car il tente d'apporter son point de vue sur une approche complexe et pour laquelle il n'adhère pas à 100% mais qui fait son chemin. Sami s'en est expliqué ici.
InsideIt a fait un bon retour de la présentation sans polémique de cette partie et on retrouve le slideshow de la présentation là.
Je voudrais quand même faire un focus sur la seconde partie de la présentation dédiée à la couche présentation.
Un constat d'abord, beaucoup de temps passé sur la couche présentation pour la partie contrôle de surface, le binding, la conversion de format et les erreurs (80% de temps en moyenne).
Le contrôle de surface peut être porté par la couche domaine du DDD en s'appuyant sur des customs attributs et les formats par des converter.
Exemples de customs attributes du Validation Block:
[IgnoreNulls]
[ValidatorComposition(CompositionType.Or, Ruleset = "RuleSetA", MessageTemplate = "Address line 2 must be empty, or between 5 and 50 characters")]
[StringLengthValidator(0, Ruleset = "RuleSetA")]
[RegexValidator(@"\d{5}(-\d{4})?", MessageTemplate="\"{0}\" is not a valid US zip code", Ruleset = "RuleSetA")]
[RangeValidator(0, RangeBoundaryType.Inclusive, 1000000, RangeBoundaryType.Inclusive, Ruleset = "RuleSetA", MessageTemplate="Rewards points cannot exceed 1,000,000")]
Cette approche est relativement intéressante car elle permet de factoriser ces contrôles sur l'objet métier et d'automatiser le best practice de redondance de ces contrôles (côté client pour l'expérience utilisateur, côté serveur pour valider la règle).
Elle nécessite aujourd'hui un peu de développement autour d'un mini framework ou d'intégrer le Validation Application Block de pattern & practices (voir le webcast). Et promettent un gain de productivité.
Un petit mot également sur la perte de temps sur le binding mais sur lequel j'ai un peu de mal à adhérer car le binding asp.net permet déjà d'aller assez loin.
Le mot de la fin, les technos .Net avec WCF pour les services métiers, Linq pour la DAL, WPF pour l'autobinding promettent aujourd'hui de faire du RAD clean plutôt que quick & dirty.
Aucun commentaire:
Enregistrer un commentaire