Preface
- Version & Feedback
- Style of this book
- Executing the code
- About the author
- Formatting and highlighting
- Chapter summary
Chapter 1: Domains
- Technological and business domains
- Domain Experts
- Subdomains
- Identification of Subdomains
- Sample Application: Domains
Chapter 2: Domain Models
- Structure and components
- Ubiquitous Language
- Domain Modeling
- Model representations
- Sample Application: Domain Models
Chapter 3: Bounded Contexts
- Relation to Domains
- Model and context sizes
- Contexts and language
- Technological boundaries
- Context Maps
- Sample Application: Bounded Contexts
Chapter 4: Software Architecture
- Common software parts
- Layered Architecture
- Onion Architecture
- Approach for this book
- Sample Application: Software architecture
Chapter 5: Code quality
- Model binding
- Readability
- Behavior and state
- Dealing with dependencies
- Command-Query-Separation
Chapter 6: Value Objects, Entities and Services
- Value Objects
- Entities
- Domain Services
- Invariants
- Sample Application: Domain Model implementation
Chapter 7: Domain Events
- Relation to Event-driven Architecture
- Naming conventions
- Structure and content
- Distribution and processing
- Sample Application: Event-based integration
Chapter 8: Aggregates
- Transactions
- Structure and access
- Concurrency
- Design considerations
- Eventual Consistency
- Sample Application: Aggregates
Chapter 9: Repositories
- Domain Model emphasis
- Design and implementation
- Optimistic Concurrency
- Interaction with Domain Events
- Sample Application: Repositories and event publishing
Chapter 10: Application Services
- Service design
- Use case scenarios
- Transactions and Processes
- Cross-cutting concerns
- Authentication and Authorization
- Sample Application: Application Services
Chapter 11: Command Query Responsibility Segregation
- Architectural overview
- Write and Read Model
- Read Model synchronization
- Commands and Queries
- Command and Query Handlers
- Sample Application: CQRS
Chapter 12: Event Sourcing
- Architectural overview
- Event-sourced Write Model
- Event Store
- Read Model Projection
- Domain Event publishing
- Sample Application: Event Sourcing
Chapter 13: Separate executable programs
- Program layouts
- Context-level communication
- Remote use case execution
- Remote event distribution
- Sample Application: Separate executable programs
Chapter 14: User Interface
- HTTP file server
- Task-based UI
- Optimistic UI
- Reactive Read Models
- Components and composition
- Sample Application: User Interface
Conclusion
- Apply the useful parts
- The use of frameworks
Appendix A: Static types
- Value Objects, Entities and Services
- Events
- Event-sourced Write Model
- Dependency Inversion
- Commands and Queries
- Sample Application: TypeScript implementation
Appendix B: Going into production
- Identifier generation
- Containerization and Orchestration
- Event Store
- Read Model store
- Message Bus
- HTTP server
- Sample Application: Going into production