Advanced Architecture (The Enterprise Core 🏢)
For when MVC is not enough.
Patterns
1. DDD (Domain-Driven Design)
- •Aggregates: Cluster of objects treated as a unit (e.g., Order + OrderLines).
- •Value Objects: Objects defined by attributes, not ID (e.g., Money, EmailAddress). Immutability is key.
- •Bounded Contexts: Sales context vs Inventory context. Do not share models directly.
2. CQRS (Command Query Responsibility Segregation)
- •Write Side:
CreateInvoiceCommand->invoicestable. - •Read Side:
InvoiceReadModel(Optimized JSON column or separate ElasticSearch index). - •Benefit: Read performance does not block Write complexity.
3. Event-Driven
- •Domain Events:
OrderPlaced(Past Tense). - •Listeners:
SendEmail,UpdateInventory,NotifySlack. - •Decoupling: The Order Service doesn't know about Slack.