致谢
非常感谢Addison-Wesley出版社给我机会出版本书。正如我之前在上课和演讲时所说,我将Addison-Wesley看成是一个懂得DDD价值的出版商。在本书的编辑过程中,Christopher Guzikowski和Chris Zahn (Dr. Z)给了我很大的支持。那天,Christopher Guzikowski打电话给我,说他希望我成为他的签约作家。我是不会忘记那一天的,我也不会忘记Christopher Guzikowski对我的鼓励。当然,是Dr. Z将本书的文本变成了可出版的状态。感谢我的出版编辑Elizabeth Ryan协调本书的出版细节。同时,我还要感谢我的技术编辑,Barbara Wood。
回到从前,Eric Evans花了他职业生涯里的5年时间完成了DDD的定义工作。没有他的努力,没有从SmallTalk和模式社区中迸发出来的智慧,许多开发者都只能依旧苦苦摸索,最终交付劣质的软件。可悲的是,这样的问题太常见了。正如Eric所说,那些劣质的软件以及开发团队无创新式的枯燥性几乎使他离开软件领域。因此,我们欠Eric一个大大的感谢。
Eric邀请我参加了2011年的DDD峰会。会毕,大家一致认为,DDD的领导层应该提供一套指导以帮助更多的开发者在DDD上取得成功。那时,我已经写本书有很长一段时间了,并且我们充分地体会到了开发者们所缺少的东西。我自告奋勇,决定写一个文章系列来介绍有关聚合的“经验法则”。之后,我将这个名为“高效聚合设计(Effective Aggregate Design)”的文章系列当成了本书第10章的基础。当该系列文章在dddcommunity.org网站上发布时,我才知道,人们对这样的指导真是如饥似渴。感谢那些DDD领导层中审阅了这个文章系列的同仁们,并感谢他们为本书提供的建议和反馈。Eric Evans和Paul Rayner对该文章系列做了多次细致的审阅。另外,我还从Udi Dahan、Greg Young、Jimmy Nilsson、Niclas Hedhman和Rickard O berg处获得了反馈。
特别感谢DDD社区的资深成员,Randy Stafford。几年前,我在丹佛举行DDD演讲,Randy也参加了。之后,他敦促我更多地参与到更大的DDD社区中去。一段时间之后,Randy将我介绍给了Eric Evans,由此我得以在DDD社区中与大家一起讨论问题。我的一些想法并不那么容易达到,而Eric则说服我们将关注点放在一些具有近期价值的东西上。正是有了那次讨论,才有了后来2011年的DDD峰会。虽然Randy由于忙于Oracle Coherence相关工作而无法参与本书的撰写,我想以后我是可以和他合作来写点什么的。
非常感谢Rinat Abdullin、Stefan Tilkov和Wes Williams,他们都为本书撰写了一些专题内容。要了解有关DDD的一切几乎是不可能的,要在软件开发的各个领域都成为专家更不可能。这也是为什么我邀请他们撰写本书的第4章和附录A中的专题。感谢Stefan Tilkov在REST方面给我的帮助,感谢Wes Williams在GemFire上的经验,也感谢Rinat Abdullin与我们分享有关事件源和聚合实现方面的知识。
本书早期审阅者之一是Leo Gorodinsk。我第一次见到Leo是在丹佛。他根据自己的项目中采用DDD的经历向本书提出了很多宝贵的反馈。我也希望本书能够像他帮助我一样帮助他。我将Leo看成是DDD未来的一部分。
还有很多人都为本书的至少一章提出了反馈。其中,那些更具批评性的反馈提供者有Gojko Adzic、Alberto Brandolini、Udi Dahan、Dan Haywood、Dave Muirhead和Stefan Tilkov。特别是,Dan Haywood和Gojko Adzic提供了很多早期的反馈,其中主要是关于本书“最难读”的那些内容。我很高兴他们能够忍耐下去并且帮我做出更正。Alberto Brandolini在战略设计,特别是上下文映射图方面的洞见使得我将关注点集中在这些概念的核心上。Dave Muirhead在面向对象设计、领域建模、对象持久化和内存数据网格方面——包括GemFire和Coherence——都拥有非常丰富的经验。本书中对对象持久化历史和实现细节的讲解便是受他的影响而完成的。除了在REST方面的贡献,Stefan Tilkov还在SOA、管道和过滤器方面向我提供了额外的支持。最后,UdiDahan帮助我澄清了有关CQRS、长时处理过程(即Sagas)和NServiceBus方面的概念。其他为本书提供了有价值反馈的还有:Rinat Abdullin、Svein Arne Ackenhausen、Javier Ruiz Aranguren、William Doman、Chuck Durfee、Craig Hoff、Aeden Jameson、Jiwei Wu、Josh Maletz、Tom Marrs、Michael McCarthy、Rob Meidal、Jon Slenk、Aaron Stockton、Tom Stockton、Chris Sutton和Wes Williams。
Scorpio Steele为本书提供了非常棒的插图。Scorpio使IDDD团队的每一个人都成为了超级英雄。我的朋友Kerry Gilbert为本书做了非技术性的审阅。其他人的帮助使得本书在技术上是正确的,而Kerry则在行文语法方面给了我很大的帮助。
我的父母为我的写作提供了灵感,在我这一生中,他们一直在支持着我。我的父亲——本书“牛仔的逻辑”幽默片段中的AJ——并不只是一个牛仔。不要搞错了。成为一个不错的牛仔已经非常好了,而我的父亲则在很多方面都展现出了他的才艺。除了喜欢飞行之外,我的父亲还是一个优秀的土木工程师、土地测量员,一个有天赋的谈判高手。另外,他还依旧喜欢着数学,并且研究星系。在我10岁的时候,我父亲就教我如何求解直角三角形。谢谢您,父亲,在我很小的时候就教给我这些。还要感谢我的母亲,她总是在我面临挑战时给予我鼓励和支持。
虽然本书是献给我的妻子Nicole和我们的儿子Tristan的,我还是想在这里再特别提及一下。他们使得我坚持写下去并最终完成本书。没有他们的支持和鼓励,这些都是不可能的。太感谢你们了,我亲爱的Nicole和Tristan。