DDD vs CSLA.NET
-
Hi, My apologies if I put this in the incorrect forum :) I got the book on expert business objects, and they use the CSLA.NET framework. Now I read many negative reviews on this framework after buying the book :( And alot of people say that we should rather use DDD (Domain-Driven Design). What exactly is DDD? And why choose it above CSLA.NET? Are there any good books/online articles to read that explains this for beginners and how to implement it? What other similar commercial/opensource frameworks are available to look at? Has any one used CSLA.NET? And comments positive/negative? Regards, Brendan
-
Hi, My apologies if I put this in the incorrect forum :) I got the book on expert business objects, and they use the CSLA.NET framework. Now I read many negative reviews on this framework after buying the book :( And alot of people say that we should rather use DDD (Domain-Driven Design). What exactly is DDD? And why choose it above CSLA.NET? Are there any good books/online articles to read that explains this for beginners and how to implement it? What other similar commercial/opensource frameworks are available to look at? Has any one used CSLA.NET? And comments positive/negative? Regards, Brendan
These are two somewhat orthogonal (or complementary) items. CSLA.NET provides a harness that eases the persistence, state snapshot, and business-rule tracking. This entire harness reflects the methodology that Lhotka uses to create his applcations. You can compare this harness-as-philosophy to Taligent's MVP harness or Clifton's Application Automation Layer. Normally, you have to buy into this lock, stock, and barrel to adopt these types of harnesses. DDD attempts to provide a set of guidelines by which a software development team can produce in anticipated and repeatable ways the decomposition of a business model into an object-oriented structure. My exposure to this started with Coad's Domain-Neutral Component and Modelling in Color, supplemented by Nicola, et. al.'s Streamlined Object Modeling. The most recent valuable entry in this list is Evans' Domain-Driven Design: Tackling Complexity in the Heart of Software. So, CSLA.NET embodies a philosophy regarding application construction. DDD embodies "best practices" for modeling a business domain. The Application Automation Layer: Introduction And Design[^] Modeling in Color[^] Streamlined Object Modeling[^] Domain-Driven Design[^]
"we must lose precision to make significant statements about complex systems." -deKorvin on uncertainty
-
These are two somewhat orthogonal (or complementary) items. CSLA.NET provides a harness that eases the persistence, state snapshot, and business-rule tracking. This entire harness reflects the methodology that Lhotka uses to create his applcations. You can compare this harness-as-philosophy to Taligent's MVP harness or Clifton's Application Automation Layer. Normally, you have to buy into this lock, stock, and barrel to adopt these types of harnesses. DDD attempts to provide a set of guidelines by which a software development team can produce in anticipated and repeatable ways the decomposition of a business model into an object-oriented structure. My exposure to this started with Coad's Domain-Neutral Component and Modelling in Color, supplemented by Nicola, et. al.'s Streamlined Object Modeling. The most recent valuable entry in this list is Evans' Domain-Driven Design: Tackling Complexity in the Heart of Software. So, CSLA.NET embodies a philosophy regarding application construction. DDD embodies "best practices" for modeling a business domain. The Application Automation Layer: Introduction And Design[^] Modeling in Color[^] Streamlined Object Modeling[^] Domain-Driven Design[^]
"we must lose precision to make significant statements about complex systems." -deKorvin on uncertainty
-
.NET Enthusiast wrote:
So you would advise staying away for CSLA.NET and taking a DDD approach?
That's not what he said. The two items are complementary, so you should incorporate the bits of both that work for you. Possibly the best skill you can learn is how to analyse ideas, and see how they fit in a particular instance - don't blindly accept that one way or another is the only way to do things in all situations.
"WPF has many lovers. It's a veritable porn star!" - Josh Smith
As Braveheart once said, "You can take our freedom but you'll never take our Hobnobs!" - Martin Hughes.
-
I think that you need to stop worrying about the .NET focus and read more on object-oriented design. You can, then, translate that to many different OO languages. Furthermore, it will help your programming more than just learning from .NET-focused studies. Once you do that, harnesses like CSLA.NET will make a lot more sense to you.
"we must lose precision to make significant statements about complex systems." -deKorvin on uncertainty