Многоуровневая архитектура

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

В программной инженерии многоуровневая архитектура — клиент-серверная архитектура, в которой разделяются функции представления, обработки и хранения данных. Наиболее распространённой разновидностью многоуровневой архитектуры является трёхуровневая архитектура.

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

Хотя понятия слоя и уровня зачастую используются как взаимозаменяемые, многие сходятся во мнении, что между ними всё-таки есть различие. Различие заключается в том, что слой — это механизм логического структурирования компонентов, из которых состоит программное решение, в то время как уровень — это механизм физического структурирования инфраструктуры системы.[1][2] Трёхслойное решение легко может быть развёрнуто на единственном уровне, таком как персональная рабочая станция.[1]

Слои[править | править код]

Архитектурный шаблон «Слои» (англ. Layers) помогает структурировать приложения разложением на группы подзадач, находящихся на определенных уровнях абстракции[3].

Распространённые слои[править | править код]

В логически разделённых на слои архитектурах информационных систем наиболее часто встречаются следующие четыре слоя:

  • Слой представления (слой UI, UIL, пользовательский интерфе́йс, уровень представления в многоуровневой архитектуре)
  • Слой приложения (сервисный слой, сервисный уровень[4][5][6] или GRASP уровень управления[7])
  • Слой бизнес-логики (слой предметной области, BLL, доменный слой)
  • Слой доступа к данным (слой хранения данных, DAL, слой инфраструктуры; логирование, сетевые взаимодействия и другие сервисы, требующиеся для поддержания конкретного слоя бизнес-логики)

Книга Предметно-ориентированное проектирование (DDD) описывает некоторые общепринятые способы применения обозначенных четырёх слоёв, хотя фокус в ней смещён в сторону слоя предметной области.[8]

Некоторые также выделяют в отдельный слой бизнес инфраструктуры (BI) то, что расположено между слоем (слоями) бизнес-логики и слоем (слоями) инфраструктуры. Иногда этот слой именуется «нижнеуровневым слоем бизнес-логики» или «слоем бизнес-сервисов». Этот слой является очень обобщённым и может быть использован на нескольких уровнях приложения (такого как Конвертер валют).[9]

Слой инфраструктуры может быть подразделён на уровни: высокоуровневые и низкоуровневые технические сервисы.[9] Разработчики зачастую концентрируют своё внимание на возможностях доступа к данным слоя инфраструктуры и вследствие в разговоре упоминают о нём только как о слое доступа к данным (вместо более общего «слоя инфраструктуры» или «слоя технических сервисов»). Другими словами, об иных разновидностях технических сервисов не всегда задумываются как о части определённого слоя.

Каждый слой зависит только от нижележащего слоя и может существовать без вышерасположенных слоёв. Ещё одна распространённая точка зрения заключается в том, что слои не всегда строго зависят от слоя расположенного непосредственно под ними. Например, в нестрогой многослойной системе (англ. a relaxed layered system) какой-то слой может зависеть от всех расположенных ниже слоёв.[3]

См. также[править | править код]

Источники[править | править код]

  1. 1 2 Deployment Patterns (Microsoft Enterprise Architecture, Patterns, and Practices) Архивная копия от 4 ноября 2018 на Wayback Machine (англ.)
  2. Мартин Фаулер «Архитектура корпоративных программных приложений» (2002). Addison-Wesley. (англ.)
  3. 1 2 Buschmann, Frank; Meunier, Regine; Rohnert, Hans; Sommerlad, Peter; Stal, Michael (1996-08). Pattern-Oriented Software Architecture, Volume 1, A System of Patterns. Wiley, August 1996. ISBN 978-0-471-95869-7. Retrieved from http://www.wiley.com/WileyCDA/WileyTitle/productCd-0471958697.html Архивная копия от 29 ноября 2017 на Wayback Machine(англ.). Chapter 2.
  4. Martin Fowler’s Service Layer Архивная копия от 18 ноября 2018 на Wayback Machine (англ.)
  5. Справочник «Паттерны проектирования» Сервисный уровень. Дата обращения: 1 октября 2018. Архивировано 7 октября 2018 года.
  6. Мартин Фаулер объясняет, что Сервисный слой — тот же слой, что и Слой приложения Архивная копия от 2 сентября 2018 на Wayback Machine (англ.)
  7. Сравнение и обсуждение GRASP Контроллера и Слоя приложения / Слоя сервисов (англ.)
  8. Domain-Driven Design, the Book pp. 68-74. Retrieved from http://dddcommunity.org/book/evans_2003/(англ.) Архивная копия от 13 мая 2019 на Wayback Machine
  9. 1 2 Применение UML 2.0 и Шаблонов проектирования, 3е издание, стр. 203 Архивная копия от 29 сентября 2018 на Wayback Machine ISBN 0-13-148906-2 (англ.)

Ссылки[править | править код]

Многоуровневая архитектура
Описан в Design Patterns Нет