Middle+
CQRS (Ҷудо кардани масъулияти фармон ва пурсиш) чист?
sobes.tech AI
Ҷавоб аз AI
CQRS (Command Query Responsibility Segregation) — дизайн-шаблон, ки, ки амалҳои хондан (queries) ва навиштани (commands) маълумотҳоро дар бар мегирад.
Принсипҳои асосӣ:
- Ҷудо кардани амалҳо: Commands ҳолати системаро тағир медиҳанд, аммо маълумотро бармегардонанд (ғайр аз, шояд, идентификатори манбаи эҷодшуда). Queries маълумотро бармегардонанд, аммо ҳолатро тағир намедиҳанд.
- Моделҳои маълумоти гуногун: Одатан, барои commands ва queries моделҳои оптимизатсияшудаи маълумот истифода мешаванд, ки барои вазифаҳои худ мувофиқанд. Масалан, барои навиштани маълумот базаи додаҳои релясионӣ, барои хондан — базаи NoSQL, ки барои намуди махсуси намоишҳо оптимизатсия шудааст.
- Иҷрои асинхронӣ: Тағйироти ҳолат пас аз иҷрои command метавонад асинхрон бошад, махсусан дар ҳамоҳангӣ бо Event Sourcing.
Фоидаҳо:
- Масштабшавандагӣ: Операсияҳои хондан ва навиштани маълумот метавонанд мустақилона масштаб шаванд.
- Камарзишӣ: Оптимизатсия барои ҳар як ҷониб (query/command) барои вазифаҳои махсус.
- Флексибиллик: Мақоми бештар флексибл барои соҳаҳои мураккаб.
- Ҷудо кардани масъулиятҳо: Тартиби равшан дар логикаи хондан ва навиштан.
Норасогиҳо:
- Мураккабият: Внедошти CQRS мураккабияти меъмориро меорад.
- Муносибат: Мушкилоти эҳтимолӣ бо мутобиқатии маълумот байни моделҳои хондан ва навиштан (eventual consistency).
Барнома дар Frontend: Ҳарчанд CQRS бештар дар пасзамина истифода мешавад, донистани ин модел барои фаҳмидани меъмории муоширати байни мизоҷ ва сервер кӯмак мекунад, махсусан дар барномаҳо, ки Event Sourcing-ро истифода мебаранд ё талаботи баланд барои хондан/навиштани маълумот доранд. Frontend бо CQRS тавассути API кор мекунад, ки ба равшанӣ endpoint-ҳоро барои commands (POST, PUT, DELETE) ва queries (GET) ҷудо мекунад.