Вопрос

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

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

Это было полезно?

Решение

Википедия:

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

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

alt text

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

Для n-уровневого программирования вам нужно упаковать данные в какую-то переносимую форму, называемую "dataset", и передать их по сети..NET- это Набор данных класс или протокол веб-служб, например МЫЛО таких попыток перебросить предметы через проволоку немного.

Другие советы

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

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

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

  

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

     

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

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

Если я понимаю вопрос, то мне кажется, что спрашивающий действительно спрашивает "ОК", поэтому 3-уровневый уровень хорошо понятен, но, похоже, что смесь 4- уровень, или обобщить, означает, что N-уровневая архитектура. Итак ... что такое определение N-уровня, которое широко понято и согласовано? & Quot;

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

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

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

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

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

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

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

И так далее в http://msdn.microsoft.com/en- нас / библиотека / bb384398.aspx

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

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

Когда вы помещаете его на Видовой слой (презентация), тогда вы сможете (держитесь!!) замените ПОЛЬЗОВАТЕЛЬСКИЙ интерфейс на другой компьютер, тем самым автоматизировав РЕАЛЬНЫЙ ввод (!!!) - и вы сможете, таким образом, запускать утомительные тесты юзабилити тысячи раз без необходимости какому-либо пользователю снова и снова касаться одних и тех же объектов.

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

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

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

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

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

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

  

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

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

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

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

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

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

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

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.

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

Мартин Фаулер демонстрирует наглядно:

Расслоение - это один из наиболее распространенных методов, которые дизайнеры программного обеспечения используют для разбить сложную систему программного обеспечения. Вы видите это в машинных архитектурах, где слои спускаются с языка программирования с вызовами операционной системы в драйверы устройств и наборы команд процессора, а также в логические элементы внутри чипов. Сеть имеет FTP-уровень поверх TCP, который находится поверх IP, который включен верхняя часть Ethernet.

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

Разбиение системы на слои имеет ряд важных преимуществ.

• Вы можете понять один слой как единое целое, не зная много о других слоях. Вы можете понять, как построить службу FTP поверх TCP, не зная подробностей о том, как работает Ethernet.

• Вы можете заменить слои альтернативными реализациями того же самого основные услуги. Служба FTP может работать без изменений через Ethernet, PPP, или то, что кабельная компания использует.

• Вы минимизируете зависимости между слоями. Если кабельная компания изменится его физическая система передачи, при условии, что они делают работу IP, мы должны изменить наш FTP-сервис.

• Слои создают хорошие места для стандартизации. TCP и IP являются стандартами потому что они определяют, как должны работать их слои.

• Создав слой, вы можете использовать его для многих сервисов более высокого уровня. Таким образом, TCP / IP используется FTP, telnet, SSH и HTTP. В противном случае все эти протоколы более высокого уровня должны будут писать свои собственные протоколы более низкого уровня. Из библиотеки Кайла Джеффри Пассарелли

Расслоение является важной техникой, но есть и недостатки.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top