cairngorm microarchitecture
DESCRIPTION
Презентация Павла Кожина aka Vertex о Cairngorm MicroarchitectureTRANSCRIPT
![Page 1: Cairngorm Microarchitecture](https://reader038.vdocuments.pub/reader038/viewer/2022100602/558a483dd8b42a8e368b46a2/html5/thumbnails/1.jpg)
Cairngorm Microarchitecture
Павел Кожин[email protected]
http://www.riapriority.com/vertex
Exigen Services
http://www.adobe.com/go/cairngorm
![Page 2: Cairngorm Microarchitecture](https://reader038.vdocuments.pub/reader038/viewer/2022100602/558a483dd8b42a8e368b46a2/html5/thumbnails/2.jpg)
Cairngorm (karn gorm)
Желто-коричневая разновидность топаза,
залегающая преимущественно в Шотландии.
Произношение
![Page 3: Cairngorm Microarchitecture](https://reader038.vdocuments.pub/reader038/viewer/2022100602/558a483dd8b42a8e368b46a2/html5/thumbnails/3.jpg)
Что такое Cairngorm?
• Набор классов и интерфейсов• Микроархитектура на базе паттернов• Проверенное решение для создания
Flex-приложений
![Page 4: Cairngorm Microarchitecture](https://reader038.vdocuments.pub/reader038/viewer/2022100602/558a483dd8b42a8e368b46a2/html5/thumbnails/4.jpg)
Зачем?
• Нет необходимости изобретать велосипед• Стандартный подход• Легкий способ добавления новой
функциональности• Повторное использование
![Page 5: Cairngorm Microarchitecture](https://reader038.vdocuments.pub/reader038/viewer/2022100602/558a483dd8b42a8e368b46a2/html5/thumbnails/5.jpg)
Используемые паттерны
• Singleton• Command• Delegate• ValueObject• Observer
![Page 6: Cairngorm Microarchitecture](https://reader038.vdocuments.pub/reader038/viewer/2022100602/558a483dd8b42a8e368b46a2/html5/thumbnails/6.jpg)
Решаемые проблемы
• Обработка действий пользователя• FrontController – перехват• Command – обработка • Service to Worker микроархитектура
• Бизнес логика• BusinessDelegate – обработка бизнес логики• ServiceLocator – доступ к дата-сервисам
• Клиентская объектная модель• ValueObject – модель• ModelLocator – управление состоянием и
обновление представления
![Page 7: Cairngorm Microarchitecture](https://reader038.vdocuments.pub/reader038/viewer/2022100602/558a483dd8b42a8e368b46a2/html5/thumbnails/7.jpg)
Модель
• Состояние приложения• Данные с сервера или локальные данные • Реализует Cairngorm ModelLocator
– Singleton для хранения клиентской модели
![Page 8: Cairngorm Microarchitecture](https://reader038.vdocuments.pub/reader038/viewer/2022100602/558a483dd8b42a8e368b46a2/html5/thumbnails/8.jpg)
Представление
• Пользовательский интерфейс (GUI)• mxml файлы и контролы • Данные доставляются в модел через binding
![Page 9: Cairngorm Microarchitecture](https://reader038.vdocuments.pub/reader038/viewer/2022100602/558a483dd8b42a8e368b46a2/html5/thumbnails/9.jpg)
Контроллер
• Взаимодействие между уровнями приложения– Events
• com.adobe.cairngorm.control.CairngormEvent– Commands
• com.adobe.cairngorm.commands.ICommand• com.adobe.cairngorm.business.IResponder
• Реализует Cairngorm ModelLocator– Singleton для хранения клиентской модели
• Связка комманд и событий– Пользовательские события/смена модели
![Page 10: Cairngorm Microarchitecture](https://reader038.vdocuments.pub/reader038/viewer/2022100602/558a483dd8b42a8e368b46a2/html5/thumbnails/10.jpg)
События
• Парметры передаваемые между уровнями приложения
![Page 11: Cairngorm Microarchitecture](https://reader038.vdocuments.pub/reader038/viewer/2022100602/558a483dd8b42a8e368b46a2/html5/thumbnails/11.jpg)
Комманда
• “Service to Worker” паттерн• Реализует Cairngorm Command Interface• Responder Interface (опционально)• execute() получает событие в виде аргумента
![Page 12: Cairngorm Microarchitecture](https://reader038.vdocuments.pub/reader038/viewer/2022100602/558a483dd8b42a8e368b46a2/html5/thumbnails/12.jpg)
Сервис Локатор
• Singleton паттерн• Выделяет уровень взимодействия с данными
![Page 13: Cairngorm Microarchitecture](https://reader038.vdocuments.pub/reader038/viewer/2022100602/558a483dd8b42a8e368b46a2/html5/thumbnails/13.jpg)
Бизнес Делегат
• Обращается и получает результаты от сервераиспользуя ServiceLocator
• Позволяет комманде вызывать удаленный сервис, обрабатывать результат или ошибку
![Page 14: Cairngorm Microarchitecture](https://reader038.vdocuments.pub/reader038/viewer/2022100602/558a483dd8b42a8e368b46a2/html5/thumbnails/14.jpg)
Workflow
• Регистрируем CairngormEvent в FrontController• Вещаем событие• FrontController – вызов execute() в нужной
комманде• Command вызывает сервис используя
BusinessDelegate• Результат обрабатывается в result() комманды• Изменение модели через ModelLocator• Изменения представления
![Page 15: Cairngorm Microarchitecture](https://reader038.vdocuments.pub/reader038/viewer/2022100602/558a483dd8b42a8e368b46a2/html5/thumbnails/15.jpg)
ServiceLocator
ServiceLocator
ModelLocatorModelLocator
VOVO ViewView
User EventUser Event
CairngormEventDispatcher
CairngormEventDispatcher
FrontControllerFrontController
CommandCommand
binding
DelegateDelegate
Диаграмма
http://www.cairngormdocs.org/tools/CairngormDiagramExplorer.html
![Page 16: Cairngorm Microarchitecture](https://reader038.vdocuments.pub/reader038/viewer/2022100602/558a483dd8b42a8e368b46a2/html5/thumbnails/16.jpg)
За и против
• Ясный и прямолинейный подход• Легко оценивать трудозатраты• Много кода при добавлении простой
функциональности• Много зависимостей