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