【发布时间】:2010-09-14 04:57:00
【问题描述】:
我试图理解 DDD 背后的概念,但我发现仅通过阅读书籍很难理解,因为它们倾向于以相当抽象的方式讨论该主题。我希望在代码中看到一些好的 DDD 实现,最好是在 C# 中。
有没有在开源世界实践 DDD 的项目的好例子?
【问题讨论】:
标签: c# architecture open-source domain-driven-design
我试图理解 DDD 背后的概念,但我发现仅通过阅读书籍很难理解,因为它们倾向于以相当抽象的方式讨论该主题。我希望在代码中看到一些好的 DDD 实现,最好是在 C# 中。
有没有在开源世界实践 DDD 的项目的好例子?
【问题讨论】:
标签: c# architecture open-source domain-driven-design
我自己没有使用过任何工具,但 DDD 维基百科页面上提到了一些工具。不过,它们中的大多数似乎都是用 Java 实现的。
http://en.wikipedia.org/wiki/Domain-driven_design#Software_tools_to_support_domain-driven_design
【讨论】:
Jimmi Nilssons 的书(和博客)值得一读 Applying domain driven design
这是 Evans 和 Fowlers 书籍 (Domain-Driven Design - Evans) 和 (Patterns of Enterprise Application Architecture - Fowler) 的混合体
【讨论】:
这不是一个开源项目,但它仍然是一个代码示例:http://www.codeplex.com/dddpds
示例在.NET Domain-Driven Design with C#: Problem-Design-Solution一书中使用
一个看起来很有希望但可能已经死亡的虚构示例: http://www.codeplex.com/domaindrivendesign
【讨论】:
好的,我找到了,但它不是 Java,不是 C#:
http://timeandmoney.domainlanguage.com/
【讨论】:
恐怕http://www.codeplex.com/domaindrivendesign 确实已经死了,但如果有人有兴趣贡献,请随时与我联系。
总的来说,我建议不要过度依赖 DDD 的示例,最好的示例可以显示域建模的结果和/或实现模式的一种方法。因此,我建议您阅读这本书,然后在forum 提问。
【讨论】:
Eric Evans 和一家瑞典咨询公司基于 Eric 在本书中使用的运输示例发布了一个示例应用程序。它是用 Java 编写的,但这些概念在项目页面上有详细记录。
http://dddsample.sourceforge.net/
但是,请注意,DDD 更多的是关于旅程而不是目的地。了解您正在查看的示例代码在变成您现在所看到的之前采用了多种形式。您没有看到最初使用的笨拙模型,并且您错过了根据沿途获得的洞察力重构模型所采取的步骤。虽然构建块在 DDD 中很重要,但 Eric 认为它们被过分强调了,所以对所有样本都持保留态度。
【讨论】:
我不确定它有多完整,但我在 Google 代码上找到了 NDDD Sample。
【讨论】:
Code Camp Server, Jeffrey Palermo's 本书的示例代码ASP.NET MVC in Action 是开源的并且使用 DDD。
(和我在Good Domain Driven Design samples的回答一样)
【讨论】:
http://kigg.codeplex.com/ 对我来说是一个很好的例子。
【讨论】:
我知道它不是 C#,但这是一个遵循域驱动方法的 java 元框架:我对此了解不多,但我愿意在不久的将来研究它:Roma Framework
【讨论】:
http://sellandbuy.codeplex.com/
另一个项目 DDD
【讨论】:
我很惊讶没有人提到 Macto,Ayende 的 DDD 示例。 Macto 最重要的一点是,实际编码之前的漏洞思考过程以series of posts 的形式呈现。 DDD 不是关于实现模型,而是关于对业务域进行建模。诸如“某些概念是聚合根/实体/值对象”之类的决定远比 AR 的持久性重要得多。
另外我会推荐 Udi Dahan 的关于 SOA 和 CQRS 的视频,这可能会为应用 DDD 提供更好的背景。
【讨论】: