Что такое N-уровневая архитектура?


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

Это заставляет меня спросить, Что такое N-уровневая архитектура? Как можно получить опыт работы с ним?

10 176

10 ответов:

Википедия:

в программной инженерии, многоуровневой архитектура (часто упоминается как N-уровневая архитектура) - это архитектура клиент-сервер, в которой, презентация, приложение обработка и управление данными являются логически отдельные процессы. Для пример приложения, которое использует промежуточное программное обеспечение для обслуживания запросов данных между Пользователем и базой данных работают многоуровневая архитектура. Самый широкое применение "многоуровневый архитектура" относится к трехуровневой архитектура.

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

alt text

Edit: одно из следствий заключается в том, что презентация уровень и логический уровень (иногда называемый уровнем бизнес-логики) должны пересекать границы машины "через провод" иногда по ненадежной, медленной и/или небезопасной сети. Это очень отличается от простого настольного приложения, где данные живут на той же машине, что и файлы или веб-приложение, где вы можете напрямую попасть в базу данных.

для n-уровневого программирования вам нужно упаковать данные в какую-то переносную форму, называемую "dataset", и передать их по проводу. .сети DataSet класс или протокол веб-служб, как мыло есть несколько таких попыток летать объекты по проводу.

это основано на том, как вы отделяете уровень представления от основной бизнес-логики и доступа к данным (Википедия)

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

Это модное слово, которое относится к таким вещам, как обычная веб - архитектура, например, Javascript- ASP.Net -Middleware-уровень базы данных. Каждая из этих вещей является "ступень".

Если я понимаю вопрос, то мне кажется, что спрашивающий действительно спрашивает: "хорошо, так что 3-ярус хорошо понятен, но кажется, что есть смесь шумихи, путаницы и неопределенности вокруг того, что означает 4-ярусная или обобщающая N-уровневая архитектура. Так...каково определение N-уровня, которое широко понимается и согласовывается?"

Это на самом деле довольно глубокий вопрос, и чтобы объяснить, почему, мне нужно пойти немного глубже. Потерпеть меня.

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

теперь, эта модель служила хорошо на декады, и это классика модель "клиент-сервер". Перенесемся в облачные предложения, где веб-браузеры являются пользовательским интерфейсом для широкого и физически распределенного набора пользователей, и обычно приходится добавлять службы распространения контента, которые не являются частью классической 3-уровневой архитектуры (и которые должны управляться самостоятельно).

концепция обобщает, когда речь заходит о сервисах, микро-сервисах, как распределяются данные и вычисления и так далее. Является или не является "уровень" в основном сводится к тому, предоставляет ли уровень интерфейс и модель развертывания службам, которые находятся позади (или ниже) уровня. Таким образом, сеть распространения контента будет уровнем, но служба аутентификации не будет.

Теперь перейдите и прочитайте другие описания примеров N-уровневых архитектур с учетом этой концепции, и вы начнете понимать проблему. Другие перспективы включают подходы на основе поставщиков (например, NGINX), контент-ориентированную нагрузку балансировщики, службы изоляции данных и безопасности (например, IBM Datapower), все из которых может или не может добавить значение для данной архитектуры, развертывания и использования.

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

N-уровневые приложения данных-это приложения данных, разделенные на несколько уровней. Также называемые "распределенными приложениями" и "многоуровневыми приложениями", n-уровневые приложения разделяют обработку на дискретные уровни, которые распределяются между клиентом и сервером. При разработке приложений, имеющих доступ к данным, должно быть четкое разделение между различными уровнями, составляющими приложение.

и так далее в http://msdn.microsoft.com/en-us/library/bb384398.aspx

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

типичное n-уровневое приложение включает в себя уровень презентации, средний уровень и уровень данных. Самый простой способ разделить различные уровни в многоуровневом приложении, чтобы создать отдельные проекты для каждого уровня что вы хотите включить в свое приложение. Например, уровень представления может быть приложением Windows Forms, в то время как логика доступа к данным может быть библиотекой класса находится на среднем уровне. Кроме того, уровень представления может взаимодействовать с данными логика доступа на среднем уровне через службу. Разделение компонентов приложения на отдельные уровни увеличивает ремонтопригодность и масштабируемость приложения. Он делает это путем позволяет упростить внедрение новых технологий, которые могут быть применены к один уровень без необходимости перепроектировать все решение. В кроме того, n-уровневые приложения обычно хранят конфиденциальную информацию в средний уровень, который поддерживает изоляцию от презентации уровень.

из Microsoft сайт.

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

мы часто видим преимущества этого, например, в сценариях, где вы хотите иметь возможность использовать более одной базы данных (в этом случае у вас есть двойной интерфейс между уровнями управления и данных).

когда вы кладете его на вид-слой (презентация), то вы можете (держись!!) замените пользовательский интерфейс на другую машину, тем самым автоматизируйте реальный ввод (!!!)- и вы можете, таким образом, запускать утомительные тесты юзабилити тысячи раз без какого-либо пользователя, который должен нажимать и повторно нажимать и повторно нажимать одни и те же вещи снова и снова.

некоторые описывают такие 3-х уровневая архитектура С 1 или 2 двойными интерфейсами, как 4-уровневая или 5-й уровень архитектура, неявно подразумевающая двойные интерфейсы.

другие случаи включают (но не ограничиваются) тот факт, что вы - в случае полу-или-полностью реплицированных баз данных-системы практически могли бы рассматривать одну из баз данных как "главную", и тем самым у вас был бы уровень, состоящий из главной и другой, состоящей из подчиненной базы данных.

мобильный

, многоуровневый-или N-уровневый - действительно имеет несколько интерпретаций, в то время как я бы, безусловно, придерживался 3-уровневых + дополнительных уровней, состоящих из тонких интерфейсных дисков, вклинившихся между ними, чтобы включить указанные уровни-свопы, и с точки зрения тестирования (особенно используемого на мобильных устройствах), теперь вы можете запускать пользовательские тесты на реальном программном обеспечении, по имитация пользователей нажав способами, которые логика управления не может отличить от реального нажатия пользователя. Это почти первостепенно в имитация реального пользователя тесты, в котором вы можете записать все входные данные от пользователей OTA, а затем повторно использовать тот же вход при выполнении регрессионных тестов.

когда мы говорим о уровнях, мы обычно говорим о физических процессах (имеющих различное пространство памяти).

таким образом, в случае, если слои приложения развернуты в разных процессах, эти разные процессы будут разными уровнями.

например, в 3-уровневом приложении бизнес-уровень разговаривает с Мэйнфреймами (отдельный процесс) и разговаривает со Службой отчетов (отдельный процесс), тогда это приложение будет 5-уровневым.

следовательно, общий имя Н-уровня.

from https://docs.microsoft.com/en-us/azure/architecture/guide/architecture-styles/n-tier

N-уровневая архитектура разделяет шины приложение на логические шини физические уровни в основном, и их разделить на частей. enter image description here

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

уровни физически разделены, работают на разных машинах. Уровень может вызывать другой уровень напрямую или использовать асинхронные сообщения (очередь сообщений). Хотя каждый слой может быть размещен на своем собственном уровне, это не обязательно. Несколько слоев могут быть размещены на одном уровне. Физическое разделение уровней улучшает масштабируемость и устойчивость, но также добавляет задержку от дополнительной сети связь.

традиционное трехуровневое приложение имеет уровень представления, средний уровень и уровень базы данных. Средний уровень является необязательным. Более сложные приложения могут иметь более трех уровней. На диаграмме выше показано приложение с двумя средними уровнями, инкапсулирующими различные области функциональности.

N-уровневое приложение может иметь архитектуру закрытого слоя или архитектуру открытого слоя:

In a closed layer architecture, a layer can only call the next layer immediately down.
In an open layer architecture, a layer can call any of the layers below it.

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