2009-04-22 8 views
5

J'ai été invité à passer en revue un système l'autre jour qui était basé sur ASP.NET MVC + CSLA + DDD (conception de lecteur de domaine). La première version de ce système était basée sur ASP.NET MVC + CSLA. La deuxième version était basée sur cela plus DDD ajouté. La raison en est que ... eh bien, je ne sais pas quoi. Lorsque j'ai regardé les diagrammes des deux architectures différentes, il était assez évident que la deuxième version était extrêmement complexe. Les objets CSLA utilisaient essentiellement les objets de domaine. Lorsque vous voyez quelque chose comme ça, vous savez qu'il sent déjà, mais il est difficile de justifier pourquoi quelqu'un ne devrait pas le faire de cette façon sans A) avoir une connaissance extrême de tous les sujets ou B) l'utiliser pendant une longue période. Je n'ai aucun d'entre eux pour ce sujet, mais je sais que si je l'avais construit à partir de zéro, je ne l'aurais pas fait de cette façon, pas plus que beaucoup de développeurs auxquels je suis associé.Asp.Net MVC + CSLA + DDD possible

Alors, cher lecteur, que feriez-vous dans cette situation? Mes pensées sont que si vous voulez utiliser CSLA et MVC et DDD alors vous faites un stand et choisissez l'un ou l'autre (CSLA ou DDD). Si vous ne le faites pas, il y a trop de cuisiniers dans la cuisine.

Veuillez donner un aperçu si vous avez des opinions à ce sujet.

+0

+1 pour "Trop de cuisiniers dans la cuisine." –

Répondre

-2

Je ne suis pas sûr que CSLA qui de la mémoire utilise une approche ActiveRecord est particulièrement adapté à DDD. Mieux vaut nHibernate.

+5

CSLA peut utiliser n'importe quel outil ORM, il n'est pas lié à un outil ORM. –

4

Mes pensées sont que si vous voulez utiliser AAPC et MVC et DDD vous faites un stand et a choisi un ou l'autre (AAPC ou DDD). Si vous ne le faites pas, il y a beaucoup de cuisiniers dans la cuisine.

J'ai tendance à être d'accord avec vous là-bas. Si quelqu'un veut faire DDD avec une architecture DDD + déjà supportée et des frameworks supportés, je recommanderais S#arp Architecture sur CSLA. Cela étant dit, certaines personnes estiment qu'il est possible de prendre en charge certains aspects de DDD en utilisant l'AAPC. Évidemment, un puriste DDD grincera probablement à cette perspective, mais vous n'avez pas besoin d'être un puriste pour obtenir quelque chose de DDD. Derick Bailey a un blog intéressant sur le sujet: http://www.avocadosoftware.com/csblogs/dredge/archive/2007/02/19/687.aspx

+0

'Supprimer le DataPortal mais garder les autres bons' semble être un thème commun.Dans les forums de discussion de l'AAPC, il y a des gens qui ont intégré NHibernate à l'AAPC et dans ce cas, ils ont aussi décidé de se passer du modèle DataPortal ... – rohancragg

2

A mon avis, CSLA s'est tiré dans la jambe avec la dernière version. Les opinions diffèrent, mais c'est tellement faux, dans mon livre, quand un objet doit savoir s'il s'agit d'un enfant ou non.

0

Il semble que certaines personnes trouvent que l'AAPC et DDD/Alt.Net ne sont pas entièrement contradictoires. Je suis toujours d'accord que vous avez probablement beaucoup de travail à faire pour adapter le bon travail que Rocky a fait si vous décidez que vous voulez suivre un chemin plus puriste et moins pragmatique, et comme Keith l'a suggéré , il pourrait être facile de créer un désordre si vous ne faites pas attention.

Quelques infos supplémentaires:

Using Dependency Injection with CSLA.NET

Using the Repository Pattern with CSLA.NET

Rocky sur why he's committed to building a 'pragmatic' framework