Ale*_*sev 9 c# architecture oop domain-driven-design
我想我读过关于DDD的所有书以及如何在C#中应用它(3-5本书,不记得它是几年前).
但是在过去的两年里,我在所有项目中使用了贫血领域模型并且运作良好.实际上我从未尝试过实现纯域模型,而且我从未见过使用干净域模型方法的一段代码.
例如,本书中有关DDD的代码不遵循DDD风格.以Tim MacCarthy的代码为例,关于DDD http://dddddsds.de,看看他的域名对象,他们对任何行为都很干净,只是DTO是他集成到域对象中的唯一东西就是验证,如果我在DDD中正确记住你的域不应该处于无效状态,所以你应该防止设置无效值并抛出异常,而不是允许设置它们并在某些时候进行验证.
与其他书籍和示例代码相同的情况,它们都非常简单,只显示一个具有属性的类,最多可以找到一组插入\ remove子对象的方法,这些方法设置了父属性.例如,我几乎看不到使用域事件或将服务注入域对象的代码.
2003年Martin Fowler写了一篇文章告诉我们,贫血领域模型是一件坏事http://www.martinfowler.com/bliki/AnemicDomainModel.html 8年过去了,我认为贫血模型现在非常流行(它演变为分层架构) ).并且在3层RIA开发中使用了很多.
所以我的主要问题是干净的DDD乌托邦?它死了吗?包括我在过去3年里看到的所有代码是分层架构(在我看来,它是本质上贫血的领域模型).如果存在,我非常希望看到一些干净的DDD代码.
你不是一个人.在大多数地方,真正的DDD将是一个乌托邦.根据我的经验,这是由于两个主要原因.
DDD也不适用于许多CRUDy应用程序.还有像CQRS这样的替代方法.另请参阅以下博客链接,以了解贫血领域模型.
http://codebetter.com/gregyoung/2009/07/15/the-anemic-domain-model-pattern/
http://lostechies.com/jimmybogard/2009/12/03/persistence-model-and-domain-贫血/