我正在学习领域驱动设计,但是有一些实际问题让我感到困惑,我认为看到一些好的样本可能会清楚。
有谁知道一些可以很好地建模基本 DDD 概念的工作代码示例?
特别感兴趣
- 说明性领域模型
- 存储库
- 使用域/应用程序服务
- 值对象
- 聚合根
我正在学习领域驱动设计,但是有一些实际问题让我感到困惑,我认为看到一些好的样本可能会清楚。
有谁知道一些可以很好地建模基本 DDD 概念的工作代码示例?
特别感兴趣
DDD 示例的困难在于它们通常是非常特定于领域的,并且生成的系统的技术实现并不总是显示在建模领域时所做的设计决策和转换,这实际上是 DDD 的核心。DDD 更多的是关于过程而不是代码。(有人说,最好的 DDD 样本就是书本身!)
也就是说,一个注释良好的示例应用程序至少应该揭示其中一些决策,并在将域模型与用于实现它的技术模式匹配方面为您提供一些指导。
您尚未指定您使用的是哪种语言,但我会用几种不同的语言为您提供一些:
DDDSample - 一个反映 Eric Evans 在他的书中谈到的示例的 Java 示例。这得到了很好的评论,并展示了许多不同的方法来解决使用单独的有界上下文(即表示层)的各种问题。它正在积极工作中,因此请定期检查以获取更新。
dddps - Tim McCarthy 的示例 C# 应用程序,用于他的书,.NET 域驱动设计与 C#
S#arp 架构- 一个实用的 C# 示例,不像“纯粹的” DDD 方法可能是因为它缺乏真正的领域问题,但仍然是一种很好的干净方法。
使用所有这些示例应用程序,最好查看 SVN 的最新主干版本/任何东西,以真正了解思维和技术模式,因为它们应该定期更新。
不是每个说的源项目,但我偶然发现了 Parleys.com,它有一些很好的视频,很好地涵盖了 DDD(需要 Flash):
我发现这些比目前可用的几乎不存在的 DDD 示例更有帮助。
这是一个基于领域驱动设计的好例子,并解释了为什么拥有单独的领域层很重要。
Microsoft 西班牙 - DDD N 层架构
ddd-cqrs-sample is also a good resource. Written with Java, Spring and JPA.
Updated link: https://github.com/BottegaIT/ddd-leaven-v2
Code Camp 服务器,Jeffrey Palermo 的ASP.NET MVC in Action一书的示例代码。虽然本书侧重于表示层,但应用程序是使用 DDD 建模的。