Upload
zfconf-conference
View
2.222
Download
7
Embed Size (px)
DESCRIPTION
http://www.zfconf.ru/2012/talks/architecture-design-implementation-and-organization-of-the-development-process-on-the-example-of-own-zend-framework-project/
Citation preview
Проектирование архитектуры, внедрение и организация процесса разработки на примере
собственных проектов на основе ZF
Великанов Антон
ZF Conf
2
3
Одним из основных понятий, используемых при разработке распределенных приложений, является уровень (tier).
Трехуровневая архитектура
Многоуровневая архитектура
WEB-Браузер:Уровень клиента Сервер баз данных
WEB-Сервер:Средства представления и
бизнес-логики
4
Сервисно-‐ориентированная архитектура
Data as a Service(Данные в качестве сервиса)
К примеру данные о пользователях или
географические данные
Software as a Service(Программное обеспечение
в качестве сервиса)
К примеру программное обеспечение оптимизации маршрутов, которое использует гео-данные для нахождения кратчайшего пути
Platform as a Service(Платформа
в качестве сервиса)
К примеру интеграция с CRM системами
Mashups
К примеру использование API Google Карт в качестве фронт-энда
Пользователь
Доступ к сервисам может осуществляться при помощи любого устройства, имеющего доступ в интернет
5
Архитектурный шаблон, используемый в данном проекте
WEB-Браузер: уровень клиента
Представление
Код контроллера:onClick(){ ... }
onMouseMove{ … }
Модель: Объекты Javascript
WEB-Сервер: Уровень бизнес логики
Сервер Баз Данных
Google maps API
Geocoding service
Модель
Контроллер
Представление
WEB-служба
6
Controller View ModelUSER
Основной пакет::Пользователь
RequestPage
Zend_Controller_Dispatch
View Render
Post Data
Zend_Filter_Input
Zend_Validate
Process Data
ProcessResult
ProcessResult
View Render
Диаграмма последовательностей
7
Controller View ModelUSER
Основной пакет::Пользователь
RequestPage
Zend_Controller_Dispatch
View Render
Post Data
Zend_Filter_Input
Zend_Validate
Process Data
ProcessResult
ProcessResult
View Render
8
Модель базы данных системы
9
Диаграмма классов
10
Основной пакет::Пользователь
Аутентификация
Редактирование личной информации
Отправка сообщений
Авторизация
Просмотр страниц сайта
Добавление маршрутов
Поиск попутчиков
*
*
*
*
*
*
*
*
*
*
*
*
«include»
«include»
«include»
«include»
«include»
«include»
Получение GPS координат ключевых точек
Занесение координат в БД«extends»
«extends»
«extends»
редактирование фотографий
Редактирование контактной информации
«uses»
«uses»
Диаграмма вариантов использования.
11
Данная система состоит из: • WEB интерфейса, обеспечивающего регистрацию пользователей; • Аутентификация пользователей: предоставления пользователям уникального ключа и хранение его как в браузере пользователя, так и на сервере; • Авторизация пользователей: предоставление идентифицированным пользователям прав на выполнение действий на сайте.
Подсистема авторизации и аутентификации
12
13
Пользователь
Является ли зарегистрированным пользователем?
Регистрация Авторизация
нет да
Идентифицированный пользователь
Личная страница пользователя
Маршруты пользователя
Личные сообщенияпользователя
Сообщества (попутчики)пользователя
Фотографиипользователя
ACL
14
Ресурсы Роли
Zend_Acl_Role_Interface Zend_Acl_Resource_Interface
getResourceId() getRoleId()
Личная страница пользователя Маршруты пользователя Личные сообщения пользователя Сообщества (попутчики) пользователя Фотографии пользователя
Владелец, «owner» Попутчик, «friend» Гость, зарегистрированный на сайте, «registered» Гость, незарегистрированный на сайте, «unregistered» -‐
Для обозначения маршрутов на карте существуют три способа: • Добавление вручную траектории (всех точек) маршрута • Полностью автоматическое построение маршрута по данным геокодирования • Автоматическое построение маршрута на карте с возможностью дальнейшего корректирования
Подсистема построения маршрутов
15
подсистема геопоиска в Базе Данных MySQL
нанесение точек маршрутов
пользователя на карту
Передача, введенных пользователем данных
для обработки на сервере
Занесение данных в БД сайта
Выполнение поиска подходящих
объектов в рамках параметров поиска
Отправка результатов
назад пользователю
16
Сравнение маршрутов
17
Схема перемещений пользователей
А
C
B
D
F
E
Сравнение скорости выполнения геопоиска
18
0
0.5
1
1.5
2
2.5
3
3.5
SQL запрос без ограничения радиуса
Хранимая процедура -‐ большой радиус
Хранимая процедура -‐ малый радиус
Sphinx (независимо от радиуса)
Одним из эффективных способов является реализация кэширования статических ресурсов.
Оптимизация системы
Диаграмма времени загрузки WEB интерфейса без кэширования
Диаграмма времени загрузки с кэшированием подключаемых ресурсов
19
Возможность оптимизации и миграция проекта на Zend Framework 2.0
20 Иерархия ZF 1.x Иерархия ZF 2.0
21