Cairngorm Microarchitecture

1,484 views

Published on

Презентация Павла Кожина aka Vertex о Cairngorm Microarchitecture

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,484
On SlideShare
0
From Embeds
0
Number of Embeds
126
Actions
Shares
0
Downloads
20
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Cairngorm Microarchitecture

  1. 1. Cairngorm Microarchitecture Павел Кожин [email_address] http://www.riapriority.com/vertex Exigen Services http://www.adobe.com/go/cairngorm
  2. 2. <ul><li>Cairngorm ( karn gorm ) </li></ul>Произношение Желто-коричневая разновидность топаза, залегающая преимущественно в Шотландии.
  3. 3. Что такое Cairngorm? <ul><li>Набор классов и интерфейсов </li></ul><ul><li>Микроархитектура на базе паттернов </li></ul><ul><li>Проверенное решение для создания </li></ul><ul><li>Flex -приложений </li></ul>
  4. 4. Зачем ? <ul><li>Нет необходимости изобретать велосипед </li></ul><ul><li>Стандартный подход </li></ul><ul><li>Легкий способ добавления новой функциональности </li></ul><ul><li>Повторное использование </li></ul>
  5. 5. Используемые паттерны <ul><li>Singleton </li></ul><ul><li>Command </li></ul><ul><li>Delegate </li></ul><ul><li>ValueObject </li></ul><ul><li>Observer </li></ul>
  6. 6. Решаемые проблемы <ul><li>Обработка действий пользователя </li></ul><ul><ul><ul><li>FrontController – перехват </li></ul></ul></ul><ul><ul><ul><li>Command – обработка </li></ul></ul></ul><ul><ul><ul><li>Service to Worker микроархитектура </li></ul></ul></ul><ul><li>Бизнес логика </li></ul><ul><ul><ul><li>BusinessDelegate – обработка бизнес логики </li></ul></ul></ul><ul><ul><ul><li>ServiceLocator – доступ к дата-сервисам </li></ul></ul></ul><ul><li>Клиентская объектная модель </li></ul><ul><ul><ul><li>ValueObject – модель </li></ul></ul></ul><ul><ul><ul><li>ModelLocator – управление состоянием и обновление представления </li></ul></ul></ul>
  7. 7. Модель <ul><li>Состояние приложения </li></ul><ul><li>Данные с сервера или локальные данные </li></ul><ul><li>Реализует Cairngorm ModelLocator </li></ul><ul><ul><li>Singleton для хранения клиентской модели </li></ul></ul>
  8. 8. Представление <ul><li>Пользовательский интерфейс ( GUI) </li></ul><ul><li>mxml файлы и контролы </li></ul><ul><li>Данные доставляются в модел через binding </li></ul>
  9. 9. Контроллер <ul><li>Взаимодействие между уровнями приложения </li></ul><ul><ul><li>Events </li></ul></ul><ul><ul><ul><li>com.adobe.cairngorm.control.CairngormEvent </li></ul></ul></ul><ul><ul><li>Commands </li></ul></ul><ul><ul><ul><li>com.adobe.cairngorm.commands.ICommand </li></ul></ul></ul><ul><ul><ul><li>com.adobe.cairngorm.business.IResponder </li></ul></ul></ul><ul><li>Реализует Cairngorm ModelLocator </li></ul><ul><ul><li>Singleton для хранения клиентской модели </li></ul></ul><ul><li>Связка комманд и событий </li></ul><ul><ul><li>Пользовательские события/смена модели </li></ul></ul>
  10. 10. События <ul><li>Парметры передаваемые между уровнями приложения </li></ul>
  11. 11. Комманда <ul><li>“ Service to Worker” паттерн </li></ul><ul><li>Реализует Cairngorm Command Interface </li></ul><ul><li>Responder Interface (опционально) </li></ul><ul><li>execute() получает событие в виде аргумента </li></ul>
  12. 12. Сервис Локатор <ul><li>Singleton паттерн </li></ul><ul><li>Выделяет уровень взимодействия с данными </li></ul>
  13. 13. Бизнес Делегат <ul><li>Обращается и получает результаты от сервера </li></ul><ul><li>используя ServiceLocator </li></ul><ul><li>Позволяет комманде вызывать удаленный сервис, обрабатывать результат или ошибку </li></ul>
  14. 14. Workflow <ul><li>Регистрируем CairngormEvent в FrontController </li></ul><ul><li>Вещаем событие </li></ul><ul><li>FrontController – вызов execute() в нужной комманде </li></ul><ul><li>Command вызывает сервис используя BusinessDelegate </li></ul><ul><li>Результат обрабатывается в result() комманды </li></ul><ul><li>Изменение модели через ModelLocator </li></ul><ul><li>Изменения представления </li></ul>
  15. 15. Диаграмма ServiceLocator ModelLocator VO View User Event Cairngorm EventDispatcher FrontController Command binding Delegate http://www.cairngormdocs.org/tools/CairngormDiagramExplorer.html
  16. 16. За и против <ul><li>Ясный и прямолинейный подход </li></ul><ul><li>Легко оценивать трудозатраты </li></ul><ul><li>Много кода при добавлении простой функциональности </li></ul><ul><li>Много зависимостей </li></ul>
  17. 17. Вопросы? Павел Кожин [email_address] http://www.riapriority.com/vertex Exigen Services

×