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

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

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

10 ответов


Википедия:

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

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

alt text

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

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


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

3-х означает слой представления + слой компонента + слой доступа к данным. N-уровень - это когда ненужные слои добавляются за эти три, и он помечен модным словом, поэтому не похоже, что ваши архитекторы-кучка крэковых обезьян. Я говорю это на основе 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-уровневые приложения отдельная обработка в дискретные уровни, распределенные между клиентом и сервером. Когда вы разрабатывайте приложения, которые получают доступ к данным, у вас должен быть clear разделение между различными уровнями, которые составляют приложение.

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

из Microsoft сайт.


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

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

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

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

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

мобильный

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


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

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

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

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


от 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.

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