21
Проектирование архитектуры, внедрение и организация процесса разработки на примере собственных проектов на основе ZF Великанов Антон ZF Conf

ZFConf 2012: Проектирование архитектуры, внедрение и организация процесса разработки на примере собственного

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

Page 1: ZFConf 2012: Проектирование архитектуры, внедрение и организация процесса разработки на примере собственного

Проектирование  архитектуры,  внедрение  и  организация  процесса  разработки  на  примере  

собственных  проектов  на  основе  ZF  

   Великанов  Антон    

   

ZF  Conf    

Page 2: ZFConf 2012: Проектирование архитектуры, внедрение и организация процесса разработки на примере собственного

2  

Page 3: ZFConf 2012: Проектирование архитектуры, внедрение и организация процесса разработки на примере собственного

3  

Page 4: ZFConf 2012: Проектирование архитектуры, внедрение и организация процесса разработки на примере собственного

Одним из основных понятий, используемых при разработке распределенных приложений, является уровень (tier).

Трехуровневая  архитектура  

Многоуровневая  архитектура  

WEB-Браузер:Уровень клиента Сервер баз данных

WEB-Сервер:Средства представления и

бизнес-логики

4  

Page 5: ZFConf 2012: Проектирование архитектуры, внедрение и организация процесса разработки на примере собственного

Сервисно-­‐ориентированная  архитектура    

Data as a Service(Данные в качестве сервиса)

К примеру данные о пользователях или

географические данные

Software as a Service(Программное обеспечение

в качестве сервиса)

К примеру программное обеспечение оптимизации маршрутов, которое использует гео-данные для нахождения кратчайшего пути

Platform as a Service(Платформа

в качестве сервиса)

К примеру интеграция с CRM системами

Mashups

К примеру использование API Google Карт в качестве фронт-энда

Пользователь

Доступ к сервисам может осуществляться при помощи любого устройства, имеющего доступ в интернет

5  

Page 6: ZFConf 2012: Проектирование архитектуры, внедрение и организация процесса разработки на примере собственного

Архитектурный  шаблон,  используемый  в  данном  проекте      

WEB-Браузер: уровень клиента

Представление

Код контроллера:onClick(){ ... }

onMouseMove{ … }

Модель: Объекты Javascript

WEB-Сервер: Уровень бизнес логики

Сервер Баз Данных

Google maps API

Geocoding service

Модель

Контроллер

Представление

WEB-служба

6  

Page 7: ZFConf 2012: Проектирование архитектуры, внедрение и организация процесса разработки на примере собственного

Controller View ModelUSER

Основной пакет::Пользователь

RequestPage

Zend_Controller_Dispatch

View Render

Post Data

Zend_Filter_Input

Zend_Validate

Process Data

ProcessResult

ProcessResult

View Render

Диаграмма  последовательностей    

7  

Page 8: ZFConf 2012: Проектирование архитектуры, внедрение и организация процесса разработки на примере собственного

Controller View ModelUSER

Основной пакет::Пользователь

RequestPage

Zend_Controller_Dispatch

View Render

Post Data

Zend_Filter_Input

Zend_Validate

Process Data

ProcessResult

ProcessResult

View Render

8  

Page 9: ZFConf 2012: Проектирование архитектуры, внедрение и организация процесса разработки на примере собственного

Модель  базы  данных  системы  

9  

Page 10: ZFConf 2012: Проектирование архитектуры, внедрение и организация процесса разработки на примере собственного

Диаграмма  классов  

10  

Page 11: ZFConf 2012: Проектирование архитектуры, внедрение и организация процесса разработки на примере собственного

Основной пакет::Пользователь

Аутентификация

Редактирование личной информации

Отправка сообщений

Авторизация

Просмотр страниц сайта

Добавление маршрутов

Поиск попутчиков

*

*

*

*

*

*

*

*

*

*

*

*

«include»

«include»

«include»

«include»

«include»

«include»

Получение GPS координат ключевых точек

Занесение координат в БД«extends»

«extends»

«extends»

редактирование фотографий

Редактирование контактной информации

«uses»

«uses»

Диаграмма  вариантов  использования.    

11  

Page 12: ZFConf 2012: Проектирование архитектуры, внедрение и организация процесса разработки на примере собственного

Данная  система  состоит  из:  •   WEB  интерфейса,  обеспечивающего  регистрацию  пользователей;  •   Аутентификация  пользователей:  предоставления  пользователям  уникального  ключа  и  хранение  его  как  в  браузере  пользователя,  так  и  на  сервере;  •   Авторизация  пользователей:  предоставление  идентифицированным  пользователям  прав  на  выполнение  действий  на  сайте.  

Подсистема  авторизации  и  аутентификации  

12  

Page 13: ZFConf 2012: Проектирование архитектуры, внедрение и организация процесса разработки на примере собственного

13  

Пользователь

Является ли зарегистрированным пользователем?

Регистрация Авторизация

нет да

Идентифицированный пользователь

Личная страница пользователя

Маршруты пользователя

Личные сообщенияпользователя

Сообщества (попутчики)пользователя

Фотографиипользователя

Page 14: ZFConf 2012: Проектирование архитектуры, внедрение и организация процесса разработки на примере собственного

ACL  

14  

Ресурсы   Роли  

Zend_Acl_Role_Interface     Zend_Acl_Resource_Interface    

getResourceId()   getRoleId()    

Личная  страница  пользователя  Маршруты  пользователя  Личные  сообщения  пользователя  Сообщества  (попутчики)  пользователя  Фотографии  пользователя    

Владелец,  «owner»  Попутчик,  «friend»    Гость,  зарегистрированный  на  сайте,  «registered»    Гость,  незарегистрированный  на  сайте,  «unregistered»  -­‐  

Page 15: ZFConf 2012: Проектирование архитектуры, внедрение и организация процесса разработки на примере собственного

Для  обозначения  маршрутов  на  карте  существуют  три  способа:  •   Добавление  вручную  траектории  (всех  точек)  маршрута  •   Полностью  автоматическое  построение  маршрута  по  данным  геокодирования  •   Автоматическое  построение  маршрута  на  карте  с  возможностью  дальнейшего  корректирования    

Подсистема  построения  маршрутов  

15  

Page 16: ZFConf 2012: Проектирование архитектуры, внедрение и организация процесса разработки на примере собственного

подсистема  геопоиска  в  Базе  Данных  MySQL  

нанесение  точек  маршрутов  

пользователя  на  карту  

Передача,  введенных  пользователем  данных  

для  обработки  на  сервере  

Занесение  данных  в  БД  сайта  

Выполнение  поиска  подходящих  

объектов  в  рамках  параметров  поиска  

Отправка  результатов  

назад  пользователю  

16  

Page 17: ZFConf 2012: Проектирование архитектуры, внедрение и организация процесса разработки на примере собственного

Сравнение  маршрутов  

17  

Схема перемещений пользователей

А

C

B

D

F

E

Page 18: ZFConf 2012: Проектирование архитектуры, внедрение и организация процесса разработки на примере собственного

Сравнение  скорости  выполнения  геопоиска    

18  

0  

0.5  

1  

1.5  

2  

2.5  

3  

3.5  

SQL  запрос  без  ограничения  радиуса  

Хранимая  процедура  -­‐  большой  радиус  

Хранимая  процедура  -­‐  малый  радиус  

Sphinx  (независимо  от  радиуса)  

Page 19: ZFConf 2012: Проектирование архитектуры, внедрение и организация процесса разработки на примере собственного

Одним  из  эффективных  способов  является  реализация  кэширования  статических  ресурсов.  

Оптимизация  системы  

Диаграмма  времени  загрузки  WEB  интерфейса  без  кэширования  

Диаграмма  времени  загрузки  с  кэшированием  подключаемых  ресурсов  

19  

Page 20: ZFConf 2012: Проектирование архитектуры, внедрение и организация процесса разработки на примере собственного

Возможность  оптимизации  и  миграция  проекта  на  Zend  Framework  2.0  

20  Иерархия  ZF  1.x   Иерархия  ZF  2.0  

Page 21: ZFConf 2012: Проектирование архитектуры, внедрение и организация процесса разработки на примере собственного

21