Оцените презентацию от 1 до 5 баллов!
Тип файла:
ppt / pptx (powerpoint)
Всего слайдов:
24 слайда
Для класса:
1,2,3,4,5,6,7,8,9,10,11
Размер файла:
417.90 kB
Просмотров:
49
Скачиваний:
0
Автор:
неизвестен
Слайды и текст к этой презентации:
№1 слайд![Command Query Responsibility](/documents_6/73b270b5d66ef2be026962db9012c215/img0.jpg)
Содержание слайда: Command Query Responsibility Segregation
ИЛИ ПРОСТО ЦЭКУЭРЭС
№2 слайд![Но для начала выкинем R из](/documents_6/73b270b5d66ef2be026962db9012c215/img1.jpg)
Содержание слайда: Но для начала выкинем R из CQRS
CQS – Command Query Separation, разделение команд и запросов
Основная идея CQS заключается в том, что любые методы могут быть только двух типов:
- Queries – возвращают результат, не изменяя состояние объекта
- Commands - изменяют состояние объекта, не возвращая значение
№3 слайд![Не-CQS-ный код](/documents_6/73b270b5d66ef2be026962db9012c215/img2.jpg)
Содержание слайда: Не-CQS-ный код
№4 слайд![Превращается в CQS-ный код](/documents_6/73b270b5d66ef2be026962db9012c215/img3.jpg)
Содержание слайда: Превращается в CQS-ный код
№5 слайд![А вот теперь CQRS CQRS](/documents_6/73b270b5d66ef2be026962db9012c215/img4.jpg)
Содержание слайда: А вот теперь CQRS
CQRS – Command Query Responsibility Segregation, разделение ответственности на команды и запросы
Та же идея, что и в CQS, но на более высоком уровне – на уровне всей системы
Для изменения состояния системы используем Command
Для выборки данных о состоянии системы используем Query
№6 слайд![CRUD-сценарий](/documents_6/73b270b5d66ef2be026962db9012c215/img5.jpg)
Содержание слайда: CRUD-сценарий
№7 слайд![Что происходит дальше? - У](/documents_6/73b270b5d66ef2be026962db9012c215/img6.jpg)
Содержание слайда: Что происходит дальше?
- У нас есть концептуальная модель, которая взаимодействует с основными объектами нашего домена
- Мы стараемся сделать наше хранилище наиболее приближенным к нашим данным
- Нам требуется выбирать и отображать все более сложно связанные данные, в том числе отчеты
- Наши объекты становятся все более сложными с большим количеством вспомогательных полей
- Вслед за объектами усложняется и хранилище
- Появляется лишнее для команд, нужное только для запросов
№8 слайд![CQRS-сценарий](/documents_6/73b270b5d66ef2be026962db9012c215/img7.jpg)
Содержание слайда: CQRS-сценарий
№9 слайд![CQRS-сценарий с разными](/documents_6/73b270b5d66ef2be026962db9012c215/img8.jpg)
Содержание слайда: CQRS-сценарий с разными хранилищами
№10 слайд![Эволюция команд и запросов на](/documents_6/73b270b5d66ef2be026962db9012c215/img9.jpg)
Содержание слайда: Эволюция команд и запросов на практике
Акт первый
№11 слайд![Эволюция команд и запросов на](/documents_6/73b270b5d66ef2be026962db9012c215/img10.jpg)
Содержание слайда: Эволюция команд и запросов на практике
Акт второй
№12 слайд![Эволюция команд и запросов на](/documents_6/73b270b5d66ef2be026962db9012c215/img11.jpg)
Содержание слайда: Эволюция команд и запросов на практике
Акт третий
№13 слайд![Эволюция команд и запросов на](/documents_6/73b270b5d66ef2be026962db9012c215/img12.jpg)
Содержание слайда: Эволюция команд и запросов на практике
Акт четвертый
№14 слайд![Эволюция команд и запросов на](/documents_6/73b270b5d66ef2be026962db9012c215/img13.jpg)
Содержание слайда: Эволюция команд и запросов на практике
Занавес
- Меньше зависимостей в каждом классе
- Соблюдается принцип единственной ответственности
- Маленький класс проще заменить
- Маленький класс проще тестировать
- В целом дизайн кода однотипный и понятный
- При расширении функциональности системы сложность дизайна растет почти линейно
№15 слайд![CQRS может быть на любом](/documents_6/73b270b5d66ef2be026962db9012c215/img14.jpg)
Содержание слайда: CQRS может быть на любом уровне
Тенденция рефакторинга:
- Растет количество классов
- Растет количество методов в каждом классе
- Растет количество зависимостей каждого класса
- Разбиваем их на Command и Query
Вместо больших классов с множеством зависимостей мы движемся в сторону большого количества маленьких однотипных классов, каждый из которых отвечает за единственное бизнес-правило
№16 слайд![Наш недо-CQRS](/documents_6/73b270b5d66ef2be026962db9012c215/img15.jpg)
Содержание слайда: Наш недо-CQRS
№17 слайд![Наш недо-CQRS](/documents_6/73b270b5d66ef2be026962db9012c215/img16.jpg)
Содержание слайда: Наш недо-CQRS
№18 слайд![Наш недо-CQRS](/documents_6/73b270b5d66ef2be026962db9012c215/img17.jpg)
Содержание слайда: Наш недо-CQRS
№19 слайд![Наш недо-CQRS](/documents_6/73b270b5d66ef2be026962db9012c215/img18.jpg)
Содержание слайда: Наш недо-CQRS
№20 слайд![Наш недо-CQRS](/documents_6/73b270b5d66ef2be026962db9012c215/img19.jpg)
Содержание слайда: Наш недо-CQRS
№21 слайд![Наш недо-CQRS](/documents_6/73b270b5d66ef2be026962db9012c215/img20.jpg)
Содержание слайда: Наш недо-CQRS
№22 слайд![Как это выглядит в бою?](/documents_6/73b270b5d66ef2be026962db9012c215/img21.jpg)
Содержание слайда: Как это выглядит в бою?
№23 слайд![Как это выглядит в бою?](/documents_6/73b270b5d66ef2be026962db9012c215/img22.jpg)
Содержание слайда: Как это выглядит в бою?
№24 слайд![Почему недо-CQRS? Работа по](/documents_6/73b270b5d66ef2be026962db9012c215/img23.jpg)
Содержание слайда: Почему недо-CQRS?
Работа по большей части с CRUD
При выполнении команды хочется тут же получить какой-то результат и использовать его для отрисовки UI
После добавления элемента часто необходимо перенаправить пользователя на страницу с только что добавленным элементом
Мы изменяем поля CommandContext-ов, мы сожалеем