【发布时间】:2014-06-19 23:18:18
【问题描述】:
我最近添加了一个关于 DDD 架构的question。回答@guillaume31 提到的问题
The Domain layer is at the core of your system, as a general rule it shouldn't depend on other modules
最近,我一直在看Microsoft Project SilK(里程统计)。 MileageStats.Domain 取决于 MileageStats.Data (repo) 和 MileageStats.Model。 another post中提到的@user996985@
Check out Project Silk. Not only does it demonstrate DDD but other cutting edge patterns
那么,我在这里缺少什么? Project Silk 是学习 DDD 的好项目吗?如果没有,vs.net 中是否还有其他可用的开源项目?
【问题讨论】:
-
如果您不了解/了解域,任何代码示例都是无用的。 DDD 实际上是关于建模概念和行为,而不是关于以某种方式实现事物。选择您想要的任何域(您可以使用常见的电子商务网站场景)并尝试对事物进行建模,使其尽可能接近业务概念。您会注意到事情会如何自行弹出,但您确实需要建模,而不仅仅是使用数据结构。您可以阅读此 post 作为建模示例。
-
我完全同意你的看法。我已经开始了一个项目并尝试使用 DDD 概念。我希望这一天对我来说很清楚。现在,我非常困惑。但是您对 MS Project Silk 有任何想法吗?他们真的遵循 DDD 吗?或者他们根据自己的要求进行了一些更改?
-
我不了解 Silk,我知道我花了几年时间才明白 DDD 是关于建模的,如果模型错误,其他一切都无关紧要。只有当您是领域专家时,您才有机会知道 Silk 是否好用。使用 DDD 与使用 OOP 相同,使用某些术语并以某种方式命名您的类并不意味着您正在做正确的事情。
-
感谢您的及时回复。 “域层不应该依赖于其他模块”总是正确还是可能有例外?域可以使用存储库从数据库中获取一些常量值吗?还是应该以其他方式处理?抱歉问题太多。感谢您的合作。
-
你必须了解事情,我或其他任何人告诉你“这总是会发生”并不是很有用。是的,域不应该依赖于其他层,但为什么呢? DDD 不是食谱,不要试图学习它。很多经验来自于尝试正确地按照良好的设计原则(SOLID 等)对事物进行建模。并且您需要对适当的 OOP 非常熟悉,并且已经使用 OOP 开发了非平凡的项目。很多事情都是有意义的,只有在你遇到问题并试图解决它之后。现在您有了解决方案,而且没有任何问题。
标签: .net architecture domain-driven-design domain-model ddd-repositories