Алексей Кирсанов ведущий разработчик «1С-Битрикс» Магазин – глобальная реструктуризация. D7 Партнерская конференция «1С-Битрикс»
Рефакторинг Полное преобразование внутренней структуры Новые концепции Новое ядро D7 Новая идеология разработки ООП Сильное зацепление и слабая связанность Новая библиотека классов Партнерская конференция 2015 #bitrixconf2015
Причины рефакторинга Длительное эволюционное развитие Большое количество «костылей» Сложность поддержки Сложность расширения функционала Новые требования к коду Новые требования к функционалу и возможностям Запас прочности на дальнейшее расширение #bitrixconf2015 Партнерская конференция 2015
Цель рефакторинга Повышение устойчивости работы Качественный и более понятный АПИ Оптимизация производительности Новое ядро Новые возможности Запас прочности на дальнейшее расширение #bitrixconf2015 Партнерская конференция 2015
Трудности рефакторинга Высокая цена ошибки Большие объемы данных Большой объем кода Большой объем функционала Проектирование в стиле нового ядра #bitrixconf2015 Партнерская конференция 2015
Архитектура модуля D7 БД ORM Бизнес- логика Компо- ненты Данные Действия над данными Логика Интерфейс #bitrixconf2015 Партнерская конференция 2015
Парадигмы разработки Ориентация на данные (Data Driven Design) Главное – данные, а не связи между ними Плюсы: скорость разработки, простота использования и внедрения Минусы: хуже согласуется с концепциями ООП, сложнее поддержка и может привести к хаосу при росте проекта Ориентация на бизнес-логику (Domain Driven Design - DDD) Главное – предметная область, объекты, связи и зависимости Плюсы: полностью ООП, мощный инструмент для развития и поддержки большого проекта Минусы: гораздо сложнее в реализации #bitrixconf2015 Партнерская конференция 2015
Ориентация на бизнес-логику ORM – репозиторий, т.е. прокси (промежуточный слой) между бизнес- логикой и данными Больше подходит для модулей со сложными связями между объектами Плюсы: полное ООП, потенциально проще развитие и поддержка, потенциально более компактный код, оперируем целями, АПИ настроен на конкретную задачу Минусы: существенно сложнее в реализации #bitrixconf2015 Партнерская конференция 2015
#bitrixconf2015 Бизнес-логика Магазина Состав отгрузки Отгрузка Свойства и т.п. Товар заказа Заказ Коллекция товаров (корзина) Коллекция оплат Коллекция отгрузок Склады, штрих коды и т.п. Оплата Компания Архивирование История Партнерская конференция 2015
Структура БД Новые сущности Частичные оплаты Частичные отгрузки Архивирование Компании Местоположения История ORM – репозиторий (прокси) #bitrixconf2015 Партнерская конференция 2015
#bitrixconf2015 Обработка данных Состав отгрузки Отгрузка Свойства и т.п. Товар заказа Заказ Коллекция товаров (корзина) Коллекция оплат Коллекция отгрузок Оплата Партнерская конференция 2015
#bitrixconf2015 Заказ Анализ заказа: товары и документы Новые интерфейсы История Пользовательские типы свойств заказа Архивация заказов Единый интерфейс настройки физического смысла свойств и параметров заказа Партнерская конференция 2015
Оплата Один заказ – много оплат Оплата с внутреннего счета Компания, на которую принимается оплата Новые интерфейсы История оплат Рефакторинг и актуализация платежных систем #bitrixconf2015 Партнерская конференция 2015
Отгрузка Один заказ - много отгрузок У каждой отгрузки свои служба доставки, статус, резервация и отгрузка Компания, с которой отгружается Новые интерфейсы История отгрузок Рефакторинг служб доставки #bitrixconf2015 Партнерская конференция 2015
Службы доставки Группировка служб доставки по папкам Наценки на доставку как в процентах так и в валюте заказа Гибкая настройка ограничений Пользовательские типы ограничений Дополнительные услуги Пользовательские типы услуг Единый АПИ для всех служб доставки Новые интерфейсы #bitrixconf2015 Партнерская конференция 2015
Местоположения Дерево любого уровня вложенности Связь с внешними местоположениями Идентификация по коду Быстрый поиск Разные варианты выбора Импорт с выбором уровней #bitrixconf2015 Партнерская конференция 2015
Компании Произвольное количество компаний с произвольными набираемыми свойствами Доставку и оплату можно привязать к компании Отчеты по компаниям #bitrixconf2015 Партнерская конференция 2015
Полученные результаты Оптимизация скорости работы Повышение устойчивости Новый удобный и читабельный АПИ Расширение возможностей Частичные оплаты и отгрузки Компании Пользовательские дополнительные услуги и ограничения служб доставок Пользовательские типы свойств заказа и т.п. Запас прочности на дальнейшее расширение #bitrixconf2015 Партнерская конференция 2015
Спасибо за внимание! Вопросы? #bitrixconf2015 Партнерская конференция 2015