Требуется справка по уровням веб-приложения

#architecture

#архитектура

Вопрос:

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

Пока у меня есть следующее

  1. Уровень сущности — моделирует бизнес-объекты и используется во всем приложении

  2. Уровень репозитория — отвечает за сохраняемость и все вызовы к базе данных и из нее

  3. Сервисный уровень — отвечает бизнес-требованиям

  4. Уровень контроллера — обрабатывает запросы и вызывает только службы

  5. Слой просмотра

Также для каждого объекта существует выделенный репозиторий и выделенная служба

Мои вопросы заключаются в следующем:

  1. Нормально ли, если одна служба сущностей ссылается на другую службу сущностей, или должна быть новая служба, не привязанная к сущности, которая использует службы сущностей?(это более широкий вопрос: каково взаимодействие между слоями)

  2. Должен ли существовать другой уровень между хранилищем и службами, такой как Manager (выделенный для объекта, содержащий бизнес-логику, которая относится к этому объекту, точно так же, как сервис в исходной настройке, но используемый только другими службами) и уровень сервиса, который ссылается на уровень менеджера?(tbh это звучит слишком сложно, но если у кого-то есть какие-то аргументы в пользу уровня менеджера и уровня сервиса, пожалуйста, скажите мне)

  3. Должен ли уровень представления иметь доступ к службам, на которые ссылается контроллер?(для получения некоторых списков или контроллером должна быть предоставлена вся информация, необходимая для представления?

Спасибо

PS: Я мог бы задать больше вопросов по мере прочтения ответов, если я думаю, что они важны, я обновлю основной пост. PS2: Я был бы признателен, если бы вы могли поделиться любым личным опытом по этому вопросу.

Ответ №1:

  1. Я бы сказал, да, служба может сотрудничать с другими службами.
  2. Нет, это излишнее усложнение.
  3. Контроллер действительно является частью View; они идут рука об руку. Возможно, что представление может вызывать службы, особенно если вы создаете веб-интерфейс с вызовами AJAX.