cqrs-implementation
Implement Command Query Responsibility Segregation for scalable architectures. Use when separating read and write models, optimizing query performance, or building event-sourced systems.
Installation
Pick a client and clone the repository into its skills directory.
Installation
About this skill
Implement Command Query Responsibility Segregation for scalable architectures. Use when separating read and write models, optimizing query performance, or building event-sourced systems.
How to use
Zapoznaj się z architekturą CQRS: system dzieli się na dwie części — Commands (komendy zmieniające stan) i Queries (zapytania pobierające dane). Komendy trafiają do Command Handlers, które walidują i wykonują zmiany w Write Model. Zdarzenia (Events) przepływają do Read Model, który optymalizuje dane do odczytu.
Zdefiniuj swoje komendy — każda komenda reprezentuje intencję zmiany stanu (np. CreateOrder, UpdateInventory). Command Handler dla każdej komendy powinien zawierać logikę walidacji i generować zdarzenia jako zapis zmian.
Skonfiguruj osobne modele: Write Model przechowuje dane w formie zdatnej do transakcji, a Read Model jest zoptymalizowany dla szybkich zapytań. Zdarzenia z Write Model synchronizują Read Model w czasie rzeczywistym lub asynchronicznie.
Implementuj Query Handlers dla operacji odczytu — każdy handler obsługuje jedno zapytanie i zwraca dane z Read Model bez wpływu na logikę zapisu.
Rozważ event sourcing: zamiast przechowywać tylko bieżący stan, przechowuj całą historię zdarzeń. Pozwala to na odtworzenie stanu w dowolnym momencie i ułatwia debugowanie.
Testuj niezależnie: ponieważ komendy i zapytania są oddzielone, możesz testować logikę zapisu bez wpływu na wydajność odczytu i vice versa.