售 价:¥
温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印
为你推荐
Dedication
About Packt
Why subscribe?
Packt.com
Contributors
About the author
About the reviewers
Packt is searching for authors like you
Preface
Who this book is for
What this book covers
To get the most out of this book
Download the example code files
Download the color images
Conventions used
Get in touch
Reviews
Why Domain-Driven Design?
Understanding the problem
Problem space and solution space
What went wrong with requirements
Dealing with complexity
Types of complexity
Categorizing complexity
Decision making and biases
Knowledge
Domain knowledge
Avoiding ignorance
Summary
Further reading
Language and Context
Ubiquitous Language
Domain language
Sample application domain
Making implicit explicit
Domain language for classified ads
Language and context
Summary
EventStorming
EventStorming
Modeling language
Visualization
Facilitating an EventStorming workshop
Who to invite
Preparing the space
Materials
The room
The workshop
Timing and scheduling
The beginning
During the workshop
After the workshop
Our first model
Summary
Further reading
Designing the Model
Domain model
What does the model represent?
Anemic domain model
Functional languages and anemic models
What to include in the domain model
Design considerations
CQRS
Design-level EventStorming
Getting deeper knowledge
Preparation for the workshop
Extended notation
Commands
Read models
Users
Policies
All together now
Modeling the reference domain
Summary
Further reading
Implementing the Model
Technical requirements
Starting up the implementation
Creating projects
The framework
Transferring the model to code
Entities
Identities
Classified ad entity
Adding behavior
Ensuring correctness
Constraints for input values
Value objects
Factories
Domain services
Entity invariants
Domain events in code
Domain events as objects
Raising events
Events change state
Summary
Acting with Commands
Technical requirements
Outside the domain model
Exposing the web API
Public API contracts
HTTP endpoints
Application layer
Handling commands
The command handler pattern
Application service
Summary
Consistency Boundary
Technical requirements
Domain model consistency
Transaction boundaries
Aggregate pattern
Protecting invariants
Analyzing constraints for a command
Enforcing the rules
Entities inside an aggregate
Summary
Aggregate Persistence
Technical requirements
Aggregate persistence
Repository and units of work
Implementation for RavenDB
Implementation of Entity Framework Core
Summary
CQRS - The Read Side
Technical requirements
Adding user profiles
User profile domain concerns
Domain project organization
Adding new value objects
User profile aggregate root
Application side for the user profile
The query side
CQRS and read-to-write mismatch
Queries and read models
Implementing queries
Query API
Queries with RavenDB
Queries with Entity Framework
Summary
Event Sourcing
Technical requirements
Why Event Sourcing
Issues with state persistence
What is Event Sourcing?
Event Sourcing around us
Event Sourced aggregates
Event streams
Event stores
Event-oriented persistence
Writing to Event Store
Reading from Event Store
The wiring infrastructure
The aggregate store in application services
Running the event-sourced app
Summary
Further reading
Projections and Queries
Events and queries
Building read models from events
Projections
Subscriptions
Implementing projections
Catch-up subscriptions
Cross-aggregate projections
Projecting events from two aggregates
Multiple projections per subscription
Event links and special streams
Enriching read models
Querying from a projection
Upcasting events
Persistent storage
Checkpoints
Persisting read models
Wrapping up
Summary
Bounded Context
The single model trap
Starting small
Complexity, again
Big ball of mud
Structuring systems
Linguistic boundaries
Team autonomy
Limiting work in progress
Improving throughput
Conway's law
Loose coupling, high alignment
Geography
Summary
Other Books You May Enjoy
Leave a review - let other readers know what you think
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜