Book description
“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
Getting started the right way with DDD, so you can rapidly gain value from it
Using DDD within diverse architectures, including Hexagonal, SOA, REST, CQRS, Event-Driven, and Fabric/Grid-Based
Appropriately designing and applying Entities–and learning when to use Value Objects instead
Mastering DDD’s powerful new Domain Events technique
Designing Repositories for ORM, NoSQL, and other databases
Table of contents
- Title Page
- Copyright Page
- Praise for Implementing Domain-Driven Design
- Dedication Page
- Contents
- Foreword
-
Preface
- Getting Grounded, Getting Airborne
- Landing with Domain-Driven Design
- Mapping the Terrain and Charting for Flight
-
Summary of Chapters
- Chapter 1: Getting Started with DDD
- Chapter 2: Domains, Subdomains, and Bounded Contexts
- Chapter 3: Context Maps
- Chapter 4: Architecture
- Chapter 5: Entities
- Chapter 6: Value Objects
- Chapter 7: Services
- Chapter 8: Domain Events
- Chapter 9: Modules
- Chapter 10: Aggregates
- Chapter 11: Factories
- Chapter 12: Repositories
- Chapter 13: Integrating Bounded Contexts
- Chapter 14: Application
- Appendix A: Aggregates and Event Sourcing: A+ES
- Java and Development Tools
- Acknowledgments
- About the Author
- Guide to This Book
-
Chapter 1. Getting Started with DDD
- Can I DDD?
- Why You Should Do DDD
- How to Do DDD
-
The Business Value of Using DDD
- 1. The Organization Gains a Useful Model of Its Domain
- 2. A Refined, Precise Definition and Understanding of the Business Is Developed
- 3. Domain Experts Contribute to Software Design
- 4. A Better User Experience Is Gained
- 5. Clean Boundaries Are Placed around Pure Models
- 6. Enterprise Architecture Is Better Organized
- 7. Agile, Iterative, Continuous Modeling Is Used
- 8. New Tools, Both Strategic and Tactical, Are Employed
- The Challenges of Applying DDD
- Fiction, with Bucketfuls of Reality
- Wrap-Up
- Chapter 2. Domains, Subdomains, and Bounded Contexts
- Chapter 3. Context Maps
- Chapter 4. Architecture
- Chapter 5. Entities
- Chapter 6. Value Objects
- Chapter 7. Services
- Chapter 8. Domain Events
- Chapter 9. Modules
-
Chapter 10. Aggregates
- Using Aggregates in the Scrum Core Domain
- Rule: Model True Invariants in Consistency Boundaries
- Rule: Design Small Aggregates
- Rule: Reference Other Aggregates by Identity
- Rule: Use Eventual Consistency Outside the Boundary
- Reasons to Break the Rules
- Gaining Insight through Discovery
- Implementation
- Wrap-Up
- Chapter 11. Factories
- Chapter 12. Repositories
- Chapter 13. Integrating Bounded Contexts
-
Chapter 14. Application
-
User Interface
- Rendering Domain Objects
- Render Data Transfer Object from Aggregate Instances
- Use a Mediator to Publish Aggregate Internal State
- Render Aggregate Instances from a Domain Payload Object
- State Representations of Aggregate Instances
- Use Case Optimal Repository Queries
- Dealing with Multiple, Disparate Clients
- Rendition Adapters and Handling User Edits
- Application Services
- Composing Multiple Bounded Contexts
- Infrastructure
- Enterprise Component Containers
- Wrap-Up
-
User Interface
-
Appendix A. Aggregates and Event Sourcing: A+ES
- Inside an Application Service
- Command Handlers
- Lambda Syntax
- Concurrency Control
- Structural Freedom with A+ES
- Performance
- Implementing an Event Store
- Relational Persistence
- BLOB Persistence
- Focused Aggregates
- Read Model Projections
- Use with Aggregate Design
- Events Enrichment
- Supporting Tools and Patterns
- Contract Generation
- Unit Testing and Specifications
- Event Sourcing in Functional Languages
- Bibliography
- Index
Product information
- Title: Implementing Domain-Driven Design
- Author(s):
- Release date: February 2013
- Publisher(s): Addison-Wesley Professional
- ISBN: 9780133039900
You might also like
book
Refactoring: Improving the Design of Existing Code
Fully Revised and Updated–Includes New Refactorings and Code Examples “Any fool can write code that a …
video
Design Patterns in the Real World, an Analysis-Based Approach
Alan Holub takes coders deep into the reality of Gang-of-Four design patterns, those reusable guides to …
book
Learning Domain-Driven Design
Building software is harder than ever. As a developer, you not only have to chase ever-changing …
book
Patterns of Enterprise Application Architecture
The practice of enterprise application development has benefited from the emergence of many new enabling technologies. …