чого ви навчитеся
- 8 способів поліпшити архітектуру за допомогою CQRS
- подібності та відмінності Cqrs та Vertical Slice Architecture
- Створення власного cqrs движка
- Керівництво по міграції з шаруватої архітектурв на Cqrs Handlers
- вибір кращого з існуючих cqrs движків
- різниця в реалізації сгоѕѕ-cutting concerns для шаруватої архітектури і CQRS
- 10 міфів про CQRS
- різниця в написанні тестів для cqrs handlers і сервісів
- Чи варто використовувати Result для покращення архітектури чи продуктивності
- базові знання c #
що таке CQRS
Command Query Responsibility Segregation-це поділ системи на дві незалежні частини: стек команд для зміни даних і стек запитів для вибірки даних без їх зміни. Стек команд розрахований на роботу з нормалізованою реляційною базою через Object-Relational Mapping (ORM), а стек запитів - на денормалізоване сховище, оптимізоване на швидкість виконання вибірок даних. Такий підхід дозволяє істотно підвищити швидкість виконання вибірок даних, які складають більшу частину операцій на бекенді.
навіщо потрібен ще один курс про CQRS
Підхід CQRS з'явився вже давно, але згідно з дослідженням InfoQ застосовується на практиці рідше, ніж мікросервіси або DDD. Причина в тому, що для поліпшення продуктивностія сьогодні частіше використовуються мікросервіси замість cqrs. А у використанні CQRS для поліпшення архітектури багато програмістів не бачать достоїнств, і навіть побоюються цього підходу. Даний курс покаже всі переваги для архітектури системи, які можна отримати, використовуючи вертикальні cqrs хендлери замість звичних горизонтальних сервісів. Таких достоїнств буде цілих вісім! Також ми спростуємо найбільш часті побоювання, які є у програмістів, які планують перехід на cqrs.
про що цей курс
Курс починається з наведення порядку в термінології, роз'яснення понять CQS, CQRS, Vertical Slices і Feature by folder.
Далі на демо-додатку "інтернет-магазин" ми будемо розглядати відмінності в реалізації одного і того ж функціоналу в горизонтальному шаруватому і вертикальному cqrs варіантах. Приклад буде наскрізним, ми буде додавати і змінювати функціонал демо-проекту і побачимо на практиці:
- можна повертати значення з команд
- Як виглядає реалізація юскейса в ApplicationService і cqrs handler
- Чи обов'язково використовувати cqrs handlers для розділення стеків читання та запису
- Чи варто використовувати cqrs команди та запити як DTO або робити їх окремими класами
- як масово реєструвати Cqrs Handlers в DI Container
- як перевикористовувати код між юскейсами. Чи залишаться ApplicationServices в системі, якщо application-логіка реалізована у вигляді cqrs handlers
- як мігрувати додаток зі шарів на хендлери. Як ораганизовать процес міграції і які рефакторинги решарпера в цьому допоможуть
- Як виглядає реалізація CRUD сценаріїв для сервісів і хендлерів, який підхід краще використовувати
- виклик юскейса з юскейса: неявне для сервісів і явне для хендлерів
- cross-cutting concerns: реалізація для сервісів і хедлерів
- відмінності в написанні юніт-тестів для сервісів і хендлерів
- чи варто повертати з хендлерів Result для поліпшення архітектури або продуктивності
Ми зробимо огляд і аналіз існуючих cqrs движків, виберемо кращий з них і обговоримо, чи варто використовувати існуючий cqrs движок або краще написати свій власний.
Для кого цей курс?
Курс призначений для backend-розробників бізнес-додатків, які хочуть відчувати гордість за виконану роботу, створюючи системи, в яких додавання нових фіч і виправлення багів викликає радість і щастя, а не біль і страждання.
Демо-проект курсу зроблений на C# і ASP.NET Core, але без використання специфічних фіч як Мови програмування, так і платформи. Так що ідеї та підходи, описані в курсі, будуть зрозумілі і корисні backend-розробникам на будь-якій мові програмування і будь-якій платформі (Java, Python, JavaScript, Ruby, Go, PHP ітд).
Для кого цей курс:
- middle і Senior розробники
- архітектори
- Тимліди і Техліди
- CTO
https://privatelink.de/?https://www.udemy.com/course/cqrs-architecture-csharp-ru/#instructor-1