Что такое N-уровневая архитектура? - PullRequest
186 голосов
/ 23 ноября 2008

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

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

Ответы [ 11 ]

242 голосов
/ 23 ноября 2008

Wikipedia

В разработке программного обеспечения, многоуровневая архитектура (часто упоминается как n-уровневая архитектура) клиент-серверная архитектура, в которой презентация, приложение обработка и управление данными логически отдельные процессы. За Например, приложение, которое использует промежуточное ПО для обслуживания запросов данных между пользователем и базой данных использует многоуровневая архитектура. Большинство Широкое использование "многоуровневой архитектура "относится к трехуровневой архитектура.

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

alt text

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

Для n-уровневого программирования вам необходимо упаковать данные в какую-то переносимую форму, называемую «набор данных», и передать их по проводам. Класс DataSet .NET или протокол веб-служб, такой как SOAP , - это лишь немногие из таких попыток пролететь объекты по проводам.

22 голосов
/ 23 ноября 2008

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

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

16 голосов
/ 23 ноября 2008

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

4 голосов
/ 16 января 2016

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

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

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

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

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

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

4 голосов
/ 07 февраля 2015

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

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

Взято с веб-сайта Microsoft .

3 голосов
/ 01 мая 2017

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

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

Когда вы помещаете его в слой View (презентация), вы можете (удерживать !!) заменить интерфейс USER на другой машине, тем самым автоматизируя РЕАЛЬНЫЙ ввод (!!!) - и таким образом, вы можете тысячи раз запускать утомительные юзабилити-тесты, при этом пользователю не нужно нажимать, а затем снова и снова нажимать одни и те же вещи снова и снова.

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

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

Мобильный пример

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

3 голосов
/ 22 сентября 2014

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

и т. Д. В http://msdn.microsoft.com/en-us/library/bb384398.aspx

3 голосов
/ 23 ноября 2008

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

2 голосов
/ 21 июля 2018

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

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

2 голосов
/ 04 июля 2013

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

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

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

Следовательно, родовое имя n-уровневое.

...