【发布时间】:2011-09-10 16:04:21
【问题描述】:
我想我读过所有关于 DDD 以及如何在 C# 中应用它的书(3-5 本书,不记得是几年前的了)。
但在过去的 2 年里,我在所有项目中都使用了贫血域模型,并且效果很好。实际上我从未尝试过实现纯域模型,而且我从未见过使用干净域模型方法的一段代码。
以书中关于 DDD 的代码为例,它不遵循 DDD 风格。以 Tim MacCarthy 关于 DDD http://dddpds.codeplex.com/ 的书中的代码代码为例,看看他的域对象,它们对任何行为都是干净的,这只是 DTO 他集成到域对象中的唯一东西是验证,如果我在 DDD 中没记错的话,你的域应该不处于无效状态,因此您应该防止设置无效值并抛出异常,而不是允许设置它们并在某个时候进行验证。
与其他书籍和示例代码的情况相同,它们都非常简单,仅显示一个具有属性的类,您最多可以找到一组用于插入/删除设置父属性的子对象的方法。例如,我几乎从未见过使用域事件的代码,或者将服务注入到域对象中。
2003 年 Martin Fowler 写了一篇文章告诉我们贫血域模型是一个坏东西http://www.martinfowler.com/bliki/AnemicDomainModel.html 8 年过去了,我认为贫血模型现在很流行(它演变为分层架构)。并且在 3-Tier RIA 开发中被大量使用。
所以我的主要问题是干净的 DDD 是一个乌托邦吗?它死了吗?因为我在过去 3 年中看到的所有代码都是分层架构(在我看来,它本质上是贫乏的领域模型)。如果存在的话,我非常希望看到一些干净的 DDD 代码。
【问题讨论】:
-
这完全是主观的。投票结束。
-
@Oded:是的,这是主观的,没有一个正确的答案,但是其他开发者的意见对我来说很重要,我想听听。
-
Alex - SO 是关于编程问题的,有明确答案的东西。程序员网站用于讨论和发表意见。
-
这是社区已经决定的事情 - 你可能不喜欢它,但它现在是这样工作的。
标签: c# oop architecture domain-driven-design