Архитектура проекта: границы, слои, зависимости
Архитектура масштабируемого проекта опирается на изоляцию бизнес-логики в проектном модуле /local/modules/<vendor>.<project>/, оставляя компоненты тонкими контроллерами отображения. Обработчики событий не должны выполнять тяжелые операции синхронно, а делегируют сетевые интеграции в сервисный слой или очереди сообщений с обязательным логированием.
Прогресс хранится в этом браузере. Войдите, чтобы сохранить его в аккаунте.
Что нужно понимать
-
1
Проектный модуль как ядро проекта
-
2
Границы между компонентами, сервисами и интеграциями
-
3
Работа с двумя ядрами: классика и D7
-
4
Технический долг и план его выплаты
Материалы
Официальная документация
-
Service Locator Новая дока
Проверь себя
Обмен с 1С на двадцать тысяч элементов стал падать по таймауту после добавления обработчика OnAfterIBlockElementAdd. Что не так с архитектурой?
Обработчик события синхронно ходит во внешний сервис на каждом элементе. Обработчику положено только поставить задачу — сообщение в очередь или фоновую задачу, а сама интеграция живёт в сервисе модуля с таймаутом и логом.
Почему бизнес-логику не стоит держать в result_modifier.php и init.php, даже если она там работает?
Её нельзя вызвать из другого места — агента, контроллера, консольной команды — без копирования, и её не проверить тестом. В проектном модуле она становится сервисом, который зовут и компонент, и агент.
Чем сервис в ServiceLocator лучше статического класса-хелпера?
Его можно подменить на стенде фейком через .settings.php модуля, не трогая код: контроллер получает зависимость из контейнера, а не через new.
Что ломается, если правило «новое на D7» применять как «переписать всё на D7»?
Переписывание старых участков без задачи от бизнеса даёт регрессии и не даёт ценности. Граница проходит по обёртке: старый вызов прячется внутрь метода сервиса, а вызывающий код пишется по-новому.
Не сходится?
Спросите ассистента BXMax: он знает документацию и материалы сайта по этой теме.
Знаете материал лучше?
Предложите ссылку: после проверки она появится в этом разделе.
Войти, чтобы предложить