CQRS Journey Guide
CQRS_Journey_Guide
User Manual:
Open the PDF directly: View PDF
Page Count: 378 [warning: Documents this large are best viewed by clicking the View PDF Link!]
- What other readers are saying about this guide
- Why we created this guidance now
- How is this guidance structured?
- A CQRS journey
- Where to go for more information
- The Contoso Corporation
- Who is coming with us on the journey?
- The Contoso Conference Management System
- Beginning the journey
- More information
- Definitions used in this chapter
- Bounded contexts in the conference management system
- Why did we choose these bounded contexts?
- More information
- A description of the bounded context
- Working definitions for this chapter
- Domain definitions (ubiquitous language)
- Requirements for creating orders
- Architecture
- Patterns and concepts
- Implementation details
- Impact on testing
- Summary
- More information
- Changes to the bounded context
- Patterns and concepts
- Implementation details
- Impact on testing
- A journey into code comprehension: A tale of pain, relief, and learning
- Summary
- More information
- The Contoso Conference Management System V1 release
- Patterns and concepts
- Implementation details
- Impact on testing
- Summary
- More information
- Patterns and concepts
- Implementation details
- Impact on testing
- Summary
- More information
- Working definitions for this chapter
- Architecture
- Adding resilience
- Optimizing performance
- UI flow before optimization
- Optimizing the UI
- Optimizing the infrastructure
- Sending and receiving commands and events asynchronously
- Optimizing command processing
- Using snapshots with event sourcing
- Publishing events in parallel
- Filtering messages in subscriptions
- Creating a dedicated receiver for the SeatsAvailability aggregate
- Caching conference information
- Partitioning the Service Bus
- Other optimizations
- Further changes that would improve performance
- Further changes that would enhance scalability
- No down-time migration
- Implementation details
- Hardening the RegistrationProcessManager class
- Optimizing the UI flow
- Receiving, completing, and sending messages asynchronously
- Handling commands synchronously and in-process
- Implementing snapshots with the memento pattern
- Publishing events in parallel
- Filtering messages in subscriptions
- Creating a dedicated SessionSubscriptionReceiver instance for the SeatsAvailability aggregate
- Caching read-model data
- Using multiple topics to partition the service bus
- Other optimizing and hardening changes
- Impact on testing
- Summary
- More information
- What did we learn?
- What would we do differently if we started over?
- Start with a solid infrastructure for messaging and persistence
- Leverage the capabilities of the infrastructure more
- Adopt a more systematic approach to implementing process managers
- Partition the application differently
- Organize the development team differently
- Evaluate how appropriate the domain and the bounded contexts are for the CQRS pattern
- Plan for performance
- Think about the UI differently
- Explore some additional benefits of event sourcing
- Explore the issues associated with integrating bounded contexts
- More information
- What is domain-driven design?
- Domain-driven design: concepts and terminology
- Bounded contexts
- CQRS and DDD
- More information
- What is CQRS?
- CQRS and domain-driven design
- Introducing commands, events, and messages
- Why should I use CQRS?
- Barriers to adopting the CQRS pattern
- When should I use CQRS?
- When should I avoid CQRS?
- Summary
- More information
- What is event sourcing?
- Why should I use event sourcing?
- Event sourcing concerns
- CQRS/ES
- Standalone event sourcing
- Event stores
- More information
- Introduction
- Defining aggregates in the domain model
- Commands and command handlers
- Events and event handlers
- Embracing eventual consistency
- Eventual consistency and CQRS
- Optimizing the read-side
- Optimizing the write side
- Messaging and CQRS
- Task-based UIs
- Taking advantage of Windows Azure
- More information
- Introduction
- Context maps
- The anti-corruption layer
- Integration with legacy systems
- More information
- Clarifying the terminology
- Process Manager
- More information
- Windows Azure Service Bus
- Unity Application Block
- More information
- Product overview
- Lessons learned
- References
- More information
- Project overview
- Lessons learned
- References
- More information
- Project overview
- Lessons learned
- More information
- More information
- What did we hope to accomplish by using CQRS/ES?
- What were the biggest challenges and how did we overcome them?
- What were the most important lessons learned?
- With hindsight, what would we have done differently?
- Further information
- More information
- eMoney Nexus: Some CQRS lessons
- About eMoney & the Nexus
- System overview
- The evolution of the system
- Lessons learned
- Making it better
- System evolution
- Building and running the sample code (RI)
- Prerequisites
- Obtaining the code
- Creating the databases
- Creating the Settings.xml File
- Building the RI
- Running the RI
- Scenario 1. Local Web Server, SQL Event Bus, SQL Event Store
- Scenario 2. Local Web Server, Windows Azure Service Bus, Table Storage Event Store
- Scenario 3. Compute Emulator, SQL Event Bus, SQL Event Store
- Scenario 4. Compute Emulator, Windows Azure Service Bus, Table Storage Event Store
- Scenario 5. Windows Azure, Windows Azure Service Bus, Table Storage Event Store
- Running the Tests
- Known issues
- More information
- Migrating from the V1 to the V2 release
- Migrating from the V2 to the V3 Release
- More information