SPECIAL OFFERS
Keep up with new releases and promotions. Sign up to hear from us.
Rough Cuts are manuscripts that are developed but not yet published, available through Safari. Rough Cuts provide you access to the very latest information on a given topic and offer you the opportunity to interact with the author to influence the final publication.
Also available in other formats.
This is the Rough Cut version of the printed book.
“For software developers of all experience levels looking to improve their results, and design and implement domain-driven enterprise applications consistently with the best current state of professional practice, Implementing Domain-Driven Design will impart a treasure trove of knowledge hard won within the DDD and enterprise application architecture communities over the last couple decades.”–Randy Stafford, Architect At-Large, Oracle Coherence Product Development
“This book is a must-read for anybody looking to put DDD into practice.”
–Udi Dahan, Founder of NServiceBus
Implementing Domain-Driven Design presents a top-down approach to understanding domain-driven design (DDD) in a way that fluently connects strategic patterns to fundamental tactical programming tools. Vaughn Vernon couples guided approaches to implementation with modern architectures, highlighting the importance and value of focusing on the business domain while balancing technical considerations.
Building on Eric Evans’ seminal book, Domain-Driven Design, the author presents practical DDD techniques through examples from familiar domains. Each principle is backed up by realistic Java examples–all applicable to C# developers–and all content is tied together by a single case study: the delivery of a large-scale Scrum-based SaaS system for a multitenant environment.
The author takes you far beyond “DDD-lite” approaches that embrace DDD solely as a technical toolset, and shows you how to fully leverage DDD’s “strategic design patterns” using Bounded Context, Context Maps, and the Ubiquitous Language. Using these techniques and examples, you can reduce time to market and improve quality, as you build software that is more flexible, more scalable, and more tightly aligned to business goals.
Coverage includes
Foreword xvii
Preface xix
Acknowledgments xxix
About the Author xxxiii
Guide to This Book xxxv
Chapter 1: Getting Started with DDD 1
Can I DDD? 2
Why You Should Do DDD 6
How to Do DDD 20
The Business Value of Using DDD 25
The Challenges of Applying DDD 29
Fiction, with Bucketfuls of Reality 38
Wrap-Up 41
Chapter 2: Domains, Subdomains, and Bounded Contexts 43
Big Picture 43
Why Strategic Design Is So Incredibly Essential 53
Real-World Domains and Subdomains 56
Making Sense of Bounded Contexts 62
Sample Contexts 72
Wrap-Up 84
Chapter 3: Context Maps 87
Why Context Maps Are So Essential 87
Wrap-Up 111
Chapter 4: Architecture 113
Interviewing the Successful CIO 114
Layers 119
Hexagonal or Ports and Adapters 125
Service-Oriented 130
Representational State Transfer–REST 133
Command-Query Responsibility Segregation, or CQRS 138
Event-Driven Architecture 147
Data Fabric and Grid-Based Distributed Computing 163
Wrap-Up 168
Chapter 5: Entities 171
Why We Use Entities 171
Unique Identity 173
Discovering Entities and Their Intrinsic Characteristics 191
Wrap-Up 217
Chapter 6: Value Objects 219
Value Characteristics 221
Integrate with Minimalism 232
Standard Types Expressed as Values 234
Testing Value Objects 239
Implementation 243
Persisting Value Objects 248
Wrap-Up &