Similar to ZFConf 2012: Проектирование архитектуры, внедрение и организация процесса разработки на примере собственного проекта на основе ZF (Антон Велика
Similar to ZFConf 2012: Проектирование архитектуры, внедрение и организация процесса разработки на примере собственного проекта на основе ZF (Антон Велика (20)
4. Многоуровневая
архитектура
Одним из основных понятий, используемых при разработке
распределенных приложений, является уровень (tier).
WEB-Браузер: WEB-Сервер:
Уровень клиента Средства представления и Сервер баз данных
бизнес-логики
Трехуровневая
архитектура
4
5. Сервисно-‐ориентированная
архитектура
Пользователь
Доступ к сервисам может осуществляться при помощи любого устройства, имеющего доступ в интернет
К примеру интеграция с CRM К примеру использование API Google
системами Карт в качестве фронт-энда
Platform as a Service
(Платформа Mashups
в качестве сервиса)
К примеру программное обеспечение
оптимизации маршрутов, которое
использует гео-данные для
нахождения кратчайшего пути
Software as a Service
(Программное обеспечение
в качестве сервиса)
К примеру данные о
пользователях или
географические данные
Data as a Service 5
(Данные в качестве сервиса)
6. Архитектурный
шаблон,
используемый
в
данном
проекте
Google maps API
WEB-Браузер: уровень клиента
Модель:
Объекты Javascript
Geocoding service
Код контроллера:
onClick(){ ... }
WEB-Сервер:
onMouseMove{ … } Уровень бизнес логики
Модель
Представление
WEB-служба
Сервер Баз Данных
Контроллер
Представление
6
7. Диаграмма
последовательностей
Основной пакет::Пользователь
USER Controller View Model
RequestPage
Zend_Controller_Dispatch
View Render
Post Data
Zend_Filter_Input
Zend_Validate 7
Process Data
8. Post Data
Zend_Filter_Input
Zend_Validate
Process Data
ProcessResult
ProcessResult
View Render
8
11. Диаграмма
вариантов
использования.
редактирование фотографий
«uses»
«uses»
Редактирование личной информации Редактирование контактной информации
*
Отправка сообщений «include»
*
«include»
Авторизация
* «include»
*
*
* «include» Аутентификация
*
Просмотр страниц сайта
*
Основной пакет::Пользователь
* *
«include»
«include»
«extends»
Добавление маршрутов Занесение координат в БД
*
«extends»
*
«extends»
Поиск попутчиков Получение GPS координат ключевых точек
11
12. Подсистема
авторизации
и
аутентификации
Данная
система
состоит
из:
•
WEB
интерфейса,
обеспечивающего
регистрацию
пользователей;
•
Аутентификация
пользователей:
предоставления
пользователям
уникального
ключа
и
хранение
его
как
в
браузере
пользователя,
так
и
на
сервере;
•
Авторизация
пользователей:
предоставление
идентифицированным
пользователям
прав
на
выполнение
действий
на
сайте.
12
13. Пользователь
Является ли
нет зарегистрированным да
пользователем?
Регистрация Авторизация
Идентифицированный пользователь
Личная страница Маршруты Личные сообщения Сообщества (попутчики) Фотографии
пользователя пользователя пользователя пользователя пользователя
13
14. ACL
Ресурсы
Роли
Zend_Acl_Role_Interface
Zend_Acl_Resource_Interface
getResourceId()
getRoleId()
Личная
страница
пользователя
Владелец,
«owner»
Попутчик,
«friend»
Маршруты
пользователя
Гость,
зарегистрированный
на
сайте,
Личные
сообщения
пользователя
«registered»
Сообщества
(попутчики)
пользователя
Гость,
незарегистрированный
на
сайте,
Фотографии
пользователя
«unregistered»
-‐
14
15. Подсистема
построения
маршрутов
Для
обозначения
маршрутов
на
карте
существуют
три
способа:
•
Добавление
вручную
траектории
(всех
точек)
маршрута
•
Полностью
автоматическое
построение
маршрута
по
данным
геокодирования
•
Автоматическое
построение
маршрута
на
карте
с
возможностью
дальнейшего
корректирования
15
16. подсистема
геопоиска
в
Базе
Данных
MySQL
нанесение
точек
Передача,
введенных
Выполнение
поиска
Отправка
пользователем
данных
Занесение
подходящих
результатов
маршрутов
для
обработки
на
данных
в
объектов
в
рамках
назад
пользователя
на
сервере
БД
сайта
параметров
поиска
пользователю
карту
16
18. Сравнение
скорости
выполнения
геопоиска
3.5
3
SQL
запрос
без
ограничения
2.5
радиуса
Хранимая
процедура
-‐
2
большой
радиус
Хранимая
процедура
-‐
малый
1.5
радиус
Sphinx
(независимо
от
1
радиуса)
0.5
0
18
19. Оптимизация
системы
Одним
из
эффективных
способов
является
реализация
кэширования
статических
ресурсов.
Диаграмма
времени
загрузки
WEB
интерфейса
без
кэширования
Диаграмма
времени
загрузки
с
кэшированием
подключаемых
ресурсов
19