Многослойная архитектура

Это наиболее распространенный шаблон архитектуры в большинстве приложений корпоративного уровня. Это также известно как шаблон n уровней, предполагающий n уровней. Это де-факто шаблон для приложений JAVA EE.

Пример сценария для слоев

Уровень презентации

Представление веб-страниц, форм пользовательского интерфейса и API взаимодействия конечных пользователей

Бизнес-уровень

Логика, лежащая в основе доступности, безопасности и аутентификации, происходит на этом уровне. Сюда входят ESB (Enterprise Service Buses), промежуточное ПО и другие различные перехватчики запросов для выполнения проверок.

Постоянный слой

Это уровень представления данных. Это включает в себя представление DAO (объект доступа к данным), ORM (объектно-реляционные сопоставления) и другие режимы представления постоянных данных на уровне приложения. Говоря более осмысленными словами, это демонстрирует постоянные данные в ОЗУ. Который обычно остается на дисках на нижнем уровне.

Уровень базы данных

Простые базы данных с расширением до SAN (сетей хранения данных)

Состав слоев

Слои состоят из компонентов. Эти компоненты находятся на более абстрактном уровне, чем классы объектов и пакеты. Компонент может демонстрировать набор пакетов, выполняющих одну задачу.

«Компоненты обеспечивают разделение ответственности»

Ключевые идеи

Закрытые слои

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

Открытые слои

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

Анализ по образцу

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

Тестируемость по образцу

Это выше из-за слоистости. Каждый уровень можно тестировать индивидуально, передавая фиктивные сообщения и имея фиктивные интерфейсы для демонстрации непосредственных уровней.

Производительность и масштабируемость

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

P.S.
Несмотря на взлеты и падения, усилия по разработке значительно меньше, поскольку после определения протоколов связи разные группы могут работать над уровнями и разделять компоненты между членами каждой из команд.