![](/user_photo/20260_vGLHU.jpg)
Пацей 4 сем / Лекции / 10CS_Архитектуры_MVVM
.pdf![](/html/20260/740/html_3CcH_BDT6M.7bri/htmlconvd-XViPKT11x1.jpg)
Трёхуровневая архитектура |
||||||
|
Пользователи |
|
|
|
|
|
Компоненты пользовательского интерфейса |
|
Управление транзакциями |
|
|||
|
Компоненты сценариев |
|
|
|||
|
Интерфейсы сервисов |
Безопасность |
Связь |
|||
Рабочие |
Бизнес- |
|
Бизнес- |
|||
потоки |
компоненты |
сущности |
||||
Компоненты, |
|
|
||||
отвечающие за доступ |
Агенты сервисов |
|||||
к данным |
|
|
||||
|
|
|
|
|
||
Источники данных |
|
Сервисы |
|
|
|
![](/html/20260/740/html_3CcH_BDT6M.7bri/htmlconvd-XViPKT12x1.jpg)
Многозвенная архитектура
►Многозвенная архитектура (multitier architecture) –
это стиль развёртывания приложений. Подразумевает разделение компонентов на функциональные группы.
►
Группа формируют звено (tier) – часть приложения,
которая физически обособлена, выполняется в отдельном процессе или на отдельном физическом компьютере.
![](/html/20260/740/html_3CcH_BDT6M.7bri/htmlconvd-XViPKT13x1.jpg)
Архитектура, управляемая событиями - EDA
Обработчики являются изолированными независимыми компонентами, отвечающими (в идеале) за какуюнибудь одну задачу, и содержат бизнеслогику, необходимую для работы.
![](/html/20260/740/html_3CcH_BDT6M.7bri/htmlconvd-XViPKT14x1.jpg)
Микросервисная архитектура
►Каждый микросервис включает в себя бизнес-логику и представляет собой совершенно независимый компонент.
►Сервисы одной системы могут быть написаны на различных языках программирования и общаться друг с
другом, используя различные протоколы.
![](/html/20260/740/html_3CcH_BDT6M.7bri/htmlconvd-XViPKT15x1.jpg)
Onion-архитектура
![](/html/20260/740/html_3CcH_BDT6M.7bri/htmlconvd-XViPKT16x1.jpg)
Domain-driven design (DDD)
►Проектирование, основывающееся на домене
(domain-driven design) – вариант объектно-ориентированной архитектуры.
►Основной принцип:
проектируемая система – это набор взаимодействующих объектов, описывающих предметную область.
![](/html/20260/740/html_3CcH_BDT6M.7bri/htmlconvd-XViPKT17x1.jpg)
Терминология Domain-driven
Сущности (entities). design
Объекты-значения (value objects).
Агрегаторы (aggregates).
Хранилища (repositories).
Фабрики (factories).
Доменные сервисы (domain services).
Сервисы приложения (application services).
![](/html/20260/740/html_3CcH_BDT6M.7bri/htmlconvd-XViPKT18x1.jpg)
Уровни в Domain-driven design
![](/html/20260/740/html_3CcH_BDT6M.7bri/htmlconvd-XViPKT19x1.jpg)
CQRS
►Разделение ответственности на команды и запросы (Command Query Responsibility Segregation, CQRS) – в основе стиля лежит принцип использования различных объектов и потоков управления для чтения и
модификации данных.
сформулировал Грег Янг на основе принципа CQS, предложенного Бертраном Мейером
CQRS реализуется в ограниченных контекстах (bounded context) приложений, проектируемых на основе DDD
![](/html/20260/740/html_3CcH_BDT6M.7bri/htmlconvd-XViPKT20x1.jpg)
CQRS – один из вариантов