Introducción: Separar lectura y escritura
CQRS separa el modelo de comandos (escrituras) del modelo de consultas (lecturas). Esto permite optimizar cada camino de forma independiente.
Las escrituras priorizan consistencia y reglas del dominio; las lecturas priorizan velocidad y proyecciones eficientes.
La separación reduce acoplamiento y facilita escalar donde realmente hay presión (normalmente, las lecturas).

Prompt: CQRS split read and write paths, clean minimal style.
1. Naturaleza: Carriles separados
En una autopista con carriles separados para buses y autos, cada flujo avanza sin estorbar al otro.
CQRS replica esa idea: las consultas no compiten con las escrituras y pueden evolucionar distinto.

Prompt: Separated traffic lanes, soft illustration.
2. Mundo Real: E-commerce con alto tráfico
El catálogo tiene miles de lecturas por segundo, mientras que las compras son menos frecuentes.
Con CQRS, las lecturas usan vistas optimizadas y cacheadas, y las compras pasan por reglas estrictas del dominio.

Prompt: E-commerce read/write split, clean flat style.
3. Implementación en C#: Código Paso a Paso
public record CrearPedido(string Id, decimal Total);
public record ObtenerPedido(string Id);
public class CommandHandler
{
public void Handle(CrearPedido cmd) { /* validar y persistir */ }
}
public class QueryHandler
{
public PedidoDto Handle(ObtenerPedido q) => new PedidoDto();
}
En escenarios avanzados, las consultas leen de proyecciones específicas o bases dedicadas.
Combina con Event Sourcing si necesitas historial completo de cambios.
4. CQRS vs CRUD tradicional
CRUD usa un modelo único para todo. CQRS separa responsabilidades y permite optimizaciones específicas.
Si tu dominio es simple, CRUD suele bastar. CQRS brilla cuando hay carga de lectura masiva o reglas complejas.
5. Diagrama UML

Prompt: UML diagram of CQRS pattern, clean vector layout.

Prompt: CQRS flow diagram, minimal infographic style.
⚠️ Cuándo NO Usar CQRS
- Si el dominio es pequeño y sin carga de lectura relevante.
- Si el equipo no puede mantener modelos separados.
- Si la complejidad añadida no se justifica.
💪 Ejercicio
Diseña un CQRS para un catálogo: comandos para alta/edición y consultas optimizadas para listados.
Conclusión
CQRS mejora escalabilidad y claridad al separar lectura y escritura.
Es especialmente útil cuando la lectura domina y el dominio tiene reglas complejas.