В программной инженерии многоуровневая архитектура — клиент-серверная архитектура, в которой разделяются функции представления, обработки и хранения данных. Наиболее распространённой разновидностью многоуровневой архитектуры является трёхуровневая архитектура.
N-уровневая архитектура приложения предоставляет модель, по которой разработчики могут создавать гибкие и повторно-используемые приложения. Разделяя приложение на уровни абстракции, разработчики приобретают возможность внесения изменений в какой-то определённый слой, вместо того, чтобы перерабатывать всё приложение целиком. Трёхуровневая архитектура обычно состоит из уровня представления, уровня бизнес-логики и уровня хранения данных.
Хотя понятия слоя и уровня зачастую используются как взаимозаменяемые, многие сходятся во мнении, что между ними всё-таки есть различие. Различие заключается в том, что слой — это механизм логического структурирования компонентов, из которых состоит программное решение, в то время как уровень — это механизм физического структурирования инфраструктуры системы.Deployment Patterns (Microsoft Enterprise Architecture, Patterns, and Practices) Мартин Фаулер «Архитектура корпоративных программных приложений» (2002). Addison-Wesley. Трёхслойное решение легко может быть развёрнуто на единственном уровне, таком как персональная рабочая станция.
Слои Архитектурный шаблон «Слои» () помогает структурировать приложения разложением на группы подзадач, находящихся на определенных уровнях абстракции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. . Retrieved from http://www.wiley.com/WileyCDA/WileyTitle/productCd-0471958697.html .. Chapter 2..
Распространённые слои В логически разделённых на слои архитектурах информационных систем наиболее часто встречаются следующие четыре слоя:
Слой представления (слой UI, UIL, пользовательский интерфе́йс, уровень представления в многоуровневой архитектуре) Слой приложения (сервисный слой, сервисный уровеньMartin Fowler’s Service Layer Мартин Фаулер объясняет, что Сервисный слой — тот же слой, что и Слой приложения или GRASP уровень управленияСравнение и обсуждение GRASP Контроллера и Слоя приложения / Слоя сервисов) Слой бизнес-логики (слой предметной области, BLL, доменный слой) Слой доступа к данным (слой хранения данных, DAL, слой инфраструктуры; логирование, сетевые взаимодействия и другие сервисы, требующиеся для поддержания конкретного слоя бизнес-логики)
Книга Предметно-ориентированное проектирование (DDD) описывает некоторые общепринятые способы применения обозначенных четырёх слоёв, хотя фокус в ней смещён в сторону слоя предметной области.Domain-Driven Design, the Book pp. 68-74. Retrieved from http://dddcommunity.org/book/evans_2003/.
Некоторые также выделяют в отдельный слой бизнес инфраструктуры (BI) то, что расположено между слоем (слоями) бизнес-логики и слоем (слоями) инфраструктуры. Иногда этот слой именуется «нижнеуровневым слоем бизнес-логики» или «слоем бизнес-сервисов». Этот слой является очень обобщённым и может быть использован на нескольких уровнях приложения (такого как Конвертер валют).Применение UML 2.0 и Шаблонов проектирования, 3е издание, стр. 203
Слой инфраструктуры может быть подразделён на уровни: высокоуровневые и низкоуровневые технические сервисы. Разработчики зачастую концентрируют своё внимание на возможностях доступа к данным слоя инфраструктуры и вследствие в разговоре упоминают о нём только как о слое доступа к данным (вместо более общего «слоя инфраструктуры» или «слоя технических сервисов»). Другими словами, об иных разновидностях технических сервисов не всегда задумываются как о части определённого слоя.
Каждый слой зависит только от нижележащего слоя и может существовать без вышерасположенных слоёв. Ещё одна распространённая точка зрения заключается в том, что слои не всегда строго зависят от слоя расположенного непосредственно под ними. Например, в нестрогой многослойной системе () какой-то слой может зависеть от всех расположенных ниже слоёв.
См. также Front-end и back-end
Источники
Ссылки Concepts of Three-Tier Architecture Linux journal, Three Tier Architecture Microsoft Application Architecture Guide — Chapter 5: Layered Application Guidelines Пример бесплатной трёхуровневой системы What Is the 3-Tier Architecture?
Категория:Архитектура программного обеспечения