我正在学习域驱动设计,但是有一些实际问题使我感到困惑,我认为看到一些好的样本可能会解决这些问题。
有谁知道一些可以很好地完成基本DDD概念建模的良好工作代码示例?
特别感兴趣
- 说明性领域模型
- 储存库
- 域/应用程序服务的使用
- 价值对象
- 汇总根
我正在学习域驱动设计,但是有一些实际问题使我感到困惑,我认为看到一些好的样本可能会解决这些问题。
有谁知道一些可以很好地完成基本DDD概念建模的良好工作代码示例?
特别感兴趣
Answers:
DDD示例的困难在于它们通常是特定于领域的,并且最终系统的技术实现并不总是显示在建模领域时所做的设计决策和转换,而这实际上是DDD的核心。DDD与其说是代码,不如说是关于流程的更多内容。(有人说,最好的DDD示例是本书本身!)
就是说,一个经过良好评价的示例应用程序至少应揭示其中的一些决策,并为您将领域模型与实现该模型的技术模式进行匹配提供指导。
您尚未指定使用哪种语言,但我将以几种不同的语言为您提供一些信息:
DDDSample-一个Java示例,反映了Eric Evans在书中谈到的示例。对此进行了很好的评论,并显示了使用不同的受限上下文(即表示层)解决各种问题的多种不同方法。它正在积极进行中,因此请定期检查其更新。
dddps-蒂姆·麦卡锡(Tim McCarthy)的示例C#应用程序,他的书《使用C#进行.NET域驱动的设计》
S#arp体系结构 -一个实用的C#示例,可能由于缺乏实际领域问题而不是“纯粹”的DDD方法,但仍然是一种不错的简洁方法。
使用所有这些示例应用程序,最好检查一下SVN /任何版本的最新主干版本,以真正了解其思想和技术模式,因为应该定期进行更新。
dddps
似乎完全贫乏,实际上与OOP相反。没有任何域对象具有任何行为,并且服务层类基本上是对存储库的1:1委派。我不确定这是否应该视为DDD的“好”示例?我仍在学习自己,但是S#arp Architecture中的样本对于那些学习DDD的人来说似乎是一个更好的例子,因为它同时包含状态和行为,这是一个很好的OOP设计。
每个人说的不是源项目,但我偶然发现Parleys.com上有一些很好的视频,涵盖了DDD(需要Flash):
我发现这些比当前几乎不存在的DDD示例更有用。
查看Project Silk。它不仅展示了DDD,而且展示了其他前沿模式。对于任何Web开发人员来说,这都是极好的资源。可以在MSDN上找到该项目的完整概述。
这是一个基于域驱动设计的好例子,并解释了为什么拥有独立的域层很重要。
Microsoft西班牙-DDD N层体系结构
ddd-cqrs-sample也是很好的资源。用Java,Spring和JPA编写。
Code Camp Server,Jeffrey Palermo的《ASP.NET MVC in Action》一书的示例代码。在本书着重于表示层的同时,使用DDD对应用程序进行建模。