D7: проектирование и реализация нового модуля «Диск» Алексей Кирсанов Ведущий программист «1С-Битрикс»

Презентация:



Advertisements
Похожие презентации
Алексей Кирсанов ведущий разработчик «1С-Битрикс» Магазин – глобальная реструктуризация. D7 Партнерская конференция «1С-Битрикс»
Advertisements

Архитектура «D7»: модули, классы, жизненный цикл Кирсанов Алексей Ведущий разработчик 1C-Битрикс.
D7 – новая платформа разработки сайтов и порталов Тушинский Юрий Технический директор Битрикс.
1 Введение Информационные системы Альтернативы задачи доступа к данным Стандарт JPA и коммерческие ORM имплементации Определение ORM Проблемы полного преобразования.
Трехслойная архитектура приложений, основанных на использовании баз данных.
Архитектура операционных систем. Архитектура ОС Состав модулей (компонент) ОС Структура связей между отдельными модулями ОС Принципы взаимодействия модулей.
Архитектура операционных систем Семестр 2, Лекция 1.
Технические возможности. Наши цели Максимальная гибкость Максимальная скорость считывания и обработки данных Стабильность работы Максимальная простота.
Первый опыт внедрения WPF в сложной системе (С++ и COM) Михаил Павлов Transas.
SMS GW острые углы архитектуры. © Beeline декабря 2013 г. 2 Содержание 1.Зачем нужен SMS gateway 2. Первые взлеты и падения 3. SMS dispatcher –
Владимир Костюков, АлтГТУ АлтГТУ им И. И. Ползунова Распределенная система мониторинга и диспетчерезации процессов гетерогенной среды.
Практическое использование облачных хранилищ Смирнов Максим Ведущий программист «1С-Битрикс»
Мартин Фаулер « Архитектура корпоративных программных приложений » Подготовила Ст. ПС - 41 Лукиных Н. А.
Интеграция 1С:Предприятие. Планы и развитие. Рябинков Артем 1С-Битрикс.
1 Современные системы программирования. Часть 2. Системное и прикладное программное обеспечение Малышенко Владислав Викторович.
Симпозиум 2008 Сергей Шутов, ДИМАС Борис Егоров, Интерсистемс Практика использования Zen и Прототип-6.
Применение DDD-методологии в PHP Александр Новиков
Как улучшить производительность проекта за три шага Шаромов Денис руководитель отдела техподдержки.
Бизнес-процессы: от простого к сложному Кирсанов Алексей Ведущий разработчик 1C-Битрикс.
ЭТАПЫ ЖИЗНЕННОГО ЦИКЛА БАЗЫ ДАННЫХ. Жизненный цикл БД Это процесс, который начинается с этапа проектирования БД и заканчивается снятием БД с эксплуатации.
Транксрипт:

D7: проектирование и реализация нового модуля «Диск» Алексей Кирсанов Ведущий программист «1С-Битрикс»

Новое ядро D7 Новая идеология разработки отказ от устаревших моделей современные технологии, современный php ООП сильное зацепление и слабая связанность нетерпимость к ошибкам Совместная работа старой и новой платформы. Постепенная миграция. Новая библиотека классов Обновленный жизненный цикл

Модуль «Битрикс 24.Диск» Замена файл-серверу, совместная работа с файлами Текущий модуль Битрикс 24. Диск (webdav) Цели нового модуля Битрикс 24. Диск (disk) Повышение производительности Интеграция в другие сущности Повышение устойчивости работы Качественный АПИ Работа с большими объемами

Архитектура модуля D7 БД ORM Бизнес- логика Компо- ненты Данные Действия над данными Логика Интерфейс

Структура БД модуля «Диск» Отдельные таблицы (не инфоблоки) Нормализация Быстрое дерево по шаблону «Таблица связей», относительно устойчивое к ошибкам при изменении структуры Вынужденная денормализация в узких местах (права на чтение)

ORM CRUD + Query Object Репозиторий – фасад (промежуточный слой) между бизнес-логикой и данными События Нет объектов

Генерирование классов ORM Генератор ORM в разделе «Таблицы» Редактирование классов ORM: единый базовый класс для файлов и папок

Архитектура модуля D7 БД ORM Бизнес- логика Компо- ненты Данные Действия над данными Логика Интерфейс

Шаблоны работы с данными ActiveRecord Плюсы: писать код легко, сохранение в одном месте Минусы: нарушает принцип одной ответственности в SOLID, сложное изменение места хранения данных DataMapper Плюсы: соблюдается принцип одной ответственности SOLID, легко поменять место хранения Минусы: усложнение кода Unit of Work SOLID – принципы одной обязанности, открытости/закрытости, подстановки, разделения интерфейсов и инверсии зависимостей

Парадигмы программирования Ориентация на данные (Data Driven Design) Главное – данные, а не связи между ними Плюсы: скорость разработки, простота использования и внедрения Минусы: хуже согласуется с концепциями ООП, сложнее поддержка и может привести к хаосу при росте проекта Ориентация на бизнес-логику (Domain Driven Design - DDD) Главное – предметная область, объекты, связи и зависимости Плюсы: полностью ООП, мощный инструмент для развития и поддержки большого проекта Минусы: гораздо сложнее в реализации

Варианты для нас: 1 Ориентация на данные и ORM ORM – часть бизнес-логики, стандартные CRUD для работы в рамках бизнес- логики Плюсы: полностью стандартные CRUD, простота реализации, стандартные события Минусы: оперируем не целями, а средствами; потенциально более длинный код; сложно удержать проект от распухания и хаоса при существенном росте.

Варианты для нас: 2 Ориентация на данные, но не на ORM ORM – репозиторий, т.е. прокси (промежуточный слой) между бизнес-логикой и данными, т.е. внутренний механизм Плюсы: потенциально более компактный код, оперируем целями, АПИ настроен на конкретную задачу, не на много сложнее в реализации Минусы: нет единообразия в CRUD, в событиях, разный АПИ в разных модулях (но можно ввести общие базовые принципы), сложно удержать проект от распухания и хаоса при существенном росте.

Варианты для нас: 3 Ориентация на бизнес-логику ORM – репозиторий, т.е. прокси (промежуточный слой) между бизнес-логикой и данными Плюсы: полное ООП, потенциально проще развитие и поддержка, потенциально более компактный код, оперируем целями, АПИ настроен на конкретную задачу Минусы: разный АПИ в разных модулях (но можно ввести общие базовые принципы), существенно сложнее в реализации

Варианты для нас: 4 Смешанный вариант Модульная система, где необходимо – бизнес-логика, в остальных местах – данные Плюсы: просто там, где не надо сложно; мощно там, где нужна мощность Минусы: нет единообразия в подходах к решению задачи

Бизнес-логика модуля «Диск» Модуль для обкатки технологий Абстракт ный класс модели File Folder Абстрактный класс DataManager БД FileTable FolderTable ActiveRecord, в котором источниками данных являются DataManager (Table)

Безопасность в «Диске» Наследуемые права, возможность отмены прав на любом уровне Проверка прав – вне АПИ Проблема выборки с проверкой прав Контекст безопасности – провайдер прав canRead, canRename и т.п. SqlExpression для списочных выборок

Компоненты Компонент-класс, наследование Базовые классы Паттерн проектирования «Шаблонный метод» Шаблон в базовом компоненте Каждый запуск компонента – выполнение действия Стандартные ответы Стандартная обработка ошибок

Компонент: жизненный цикл Жизненный цикл компонента 1.Узнать, какое действие сейчас требуется выполнить 2. Подключить необходимые модули и сервисы (учитывая действие) 3. Подготовить параметры, проверить их корректность (учитывая действие) 4. Общий код компонента, который нужен перед всеми действиями (например, инициализация файлового хранилища) 5. Выполнение самого действия

Компонент: действия В конкретном компоненте просто определяются конкретные шаги - действия

Полученные результаты Скорость построения снапшота (снимка файловой системы) webdav сек, 23 Мб памяти диск сек, 3.5 Мб памяти Успешно синхронизируется дистрибутив Битрикс с демо-данными (порядка файлов и папок) Возможность интеграции в другие сущности Возможность организации произвольных хранилищ с произвольными правилами доступа Новый удобный АПИ

Спасибо за внимание! Вопросы?