我们在平时的学习中或多或少的接触到一些领域驱动设计(Domain-Driven Design,DDD)这些概念,这些概念也非常抽象,最重要的在国内也没有这方面的优秀书籍或者指导手册。也没有一些典型的Sample提供我们学习DDD。
在DDD领域中,就属Eric Evans大师的“Domain-Driven Design: Tackling Complexity in the Heart of Software”和Jimmy Nilsson大师的“Applying Domain-Driven Design and Patterns”两本书堪称经典之作。
最近看了“Applying Domain-Driven Design and Patterns”中文版——人民邮电出版的“领域驱动设计与模式实战”这本书,从书中的内容和章节可以体会到Jimmy Nilsson大师是结合了Eric Evans大师的“Domain-Driven Design: Tackling Complexity in the Heart of Software”和面向对象大师Martin Fowler的“Patterns of Enterprise Application Architecture”这两本书的理论基础和自己的实践,总结自己多年项目实践心得写在一本书里,从写作手法就可以看出作者的内功极其深厚,把DDD的要点都谈到了,并进一步用自己的代码展示了这些观点。当然了,一本书的确不可能把每个知识点说的很深,Jimmy有时也只是起到“指导”的角色。留给大家的也是“动手探索”或者“Google搜索”一下。
当然了,对于开始学习DDD的人来说,“领域驱动设计与模式实战”这本书还是值得去看看,这本书主要说到了以下内容:
测试驱动开发有下面要点:
Mock Objects
- Agile Value: decoupled software components must be tested in isolation
- Mocks, Stubs, TestDoubles, and Fakes
- Mocks syntax options
TDD
- Agile Value: consider your design from the perspective of its consumers
- Intent, methodology, values, and approach
领域驱动设计有下面要点:
DDD
- Agile Value: solve the problem and then select a technology
- Entities
- Value Objects
- Services
- Repositories
- Aggregate Roots
- Bounded Contexts
最后一部分应用PoEAA,相信大家都品味过Martin Fowler的“Patterns of Enterprise Application Architecture”这本书,说实在的,这本书的理论知识太强了,每次读都有不同的体会,Jimmy把这本书里面的一些模式结合DDD在实际项目中实战了一番,从中我们进一步体会到更多的思想。
最后Jimmy介绍了最为经典的ORM框架NHibernate的基本使用方法,从我的角度来说,这个章节感觉说的不怎么好,没有把NHibernate的东西介绍的很完美。对了,这不是一本专门针对NHibernate的书,但是国内到现在还没有一本专门介绍NHibernate的书呢,“领域驱动设计与模式实战”还算是“第一本”。然后作者使用NHibernate在程序中开始实战DDD。
NHibernate
- Configuration
- Mapping
- Query
- 企业应用
- DDD
最后这本书带提了SOA、IoC、AOP这些内容。
这本书的每一章节都要仔细的品味,大小标题都起到了画龙点睛的效果,面面俱到。读完之后,我们需要把每一章节进行扩展融入更多的内容。首先还是先学习下ORM框架吧,NHibernate或者EF,再联合这本书慢慢的实现DDD之旅吧。
不过实践DDD,目前与之配合最好的框架是ORM,而ORM中最为经典的是NHibernate,大家学习NHibernate可以参考下我的博客吧。
一本书让我们了解到挺多技术,相信这本书对于架构师或者设计程序架构的或者学习程序架构实在太值了,等没事的时候再仔细读读,再体会体会。