Я пытаюсь принять Слоистый Архитектурный Стиль. Я представляю многослойную архитектуру, как она нарисована на этой картинке
и у меня есть приложение на основе PHP Laravel. Приложение состоит из:
Рамки
Пакет композитора — набор независимых интерфейсов, от которых зависит все остальное (инверсия зависимостей)
Пакет композитора — менеджер компонентов. Зависит от пакета интерфейсов. Управляет компонентами — частями страниц (см. Следующий пункт), состоящими из этих компонентов.
Композиторский пакет — менеджер страниц. Зависит от интерфейсов и пакетов компонентов. Извлекает JSON из базы данных и строит HTML-страницы на ее основе, используя также пакет компонентов. Страницы состоят из компонентов, созданных пакетом из пункта 2.
Мои вопросы:
Можно ли назвать набор интерфейсов сервисным уровнем? Он используется в разных местах: контроллеры, используемые интерфейсом JS-приложения (пересылка запросов службам, реализующим интерфейсы), API-интерфейс, используемый мобильными приложениями (также переадресация запросов) и т. Д. — все зависит от интерфейсов. Или уровень обслуживания — это что-то менее тонкое? Я имею в виду, должен ли он иметь свою собственную реализацию? Примерно так: интерфейс уровня сервиса, реализация зависимого уровня сервиса, которая перенаправляет запросы на бизнес-уровень.
Компоненты, описанные в пунктах 2 и 3, представляются скорее компонентами уровня представления. Но они реализуют интерфейсы из набора, описанного в пункте 1. Это нормально? Я путаюсь с тем, что уровень обслуживания ниже уровня представления, поскольку он перенаправляет запросы на уровень представления (или может пересылать, если у него есть собственная реализация). Действительно запутался здесь.
Бизнес-уровень в настоящее время отсутствует. Это правда или два пакета (компонент и сервисы страниц) являются скорее бизнес-компонентами? Они реализуют некоторую логику построения страниц.
Уровень данных представлен компонентами платформы.
Не могли бы вы помочь мне, ребята, прояснить ситуацию? Чувствую себя по-настоящему смущенным
Задача ещё не решена.
Других решений пока нет …