Разница между тремя уровнями против n-уровня - PullRequest
17 голосов
/ 18 января 2009

Я только что натолкнулся на следующее предложение:

Как индустрия перешла из трех от многоуровневой модели к n-уровневым моделям, несоответствие реляционного импеданса объекта стало более распространенным.

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

Ответы [ 9 ]

25 голосов
/ 18 января 2009

В разработке мы понимаем уровень как абстракцию " уровень ответственности ".

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

В этом смысле так называемая трехуровневая модель или n-уровневые модели являются просто различными реализациями этих концепций.

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

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

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

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

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

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

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

11 голосов
/ 18 января 2009

Если бы мы смотрели на уровни как на слои пирога, каждый слой имел бы свои ингредиенты и делал свои собственные вещи. Уровни каждого приложения взаимодействуют только с уровнем над ним или под ним.

3 уровня означает, что торт имеет 3 слоя. Обычно это данные внизу, затем уровень логики приложения (PHP / ruby ​​/ etc), а затем уровень представления вверху (html)

Наличие n-уровневой архитектуры означает, что вы создаете для нее слой из нескольких слоев. Количество слоев у вас будет зависеть от того, как вы решите это сделать.

Кажется, это имеет больше смысла с большими или веб-приложениями.

Я обычно получаю 5-уровневое приложение. Каждый уровень может взаимодействовать только с тем, который находится над ним или под ним. Это может обеспечить фантастическую расширяемость и стандартизацию в вашем приложении.

Уровень клиента

Веб-браузер


Уровень представления

Визуализация HTML - Coldfusion / Flash / Ruby / PHP и т. Д.


Уровень бизнес-логики

Запускайте процессы и расчеты по мере необходимости - Coldfusion / Flash / Ruby / PHP и т. Д.


Уровень интеграции данных

(Запросы из моего языка разработки, хранимых процедур и т. Д.)


Уровень данных

(база данных - MySQL и т. Д.)

8 голосов
/ 18 января 2009

Цитата, кажется, с этой codeproject страницы. Похоже, что он неплохо объясняет, что n-уровень включает такие вещи, как веб-сервисы, javascript, рабочие процессы и т. Д. Все вещи, которые не обязательно включают в себя трехуровневые модели.

7 голосов
/ 18 января 2009

n-уровень подразумевает, что n - это любое число - когда n = 3, то это то же самое, что и n-уровень.

Обычное определение 3-го уровня - представление, логика и данные (в любом порядке), и да, SOA может сбить с толку неофита, потому что иногда он находится на уровне данных, иногда на уровне логики, а иногда и на уровне логики и данных ,

Весь предмет ... субъективен. Если вам нужны некоторые уровни, тогда назовите их n-уровневым - если вы знаете, что n = 7, то назовите его 7-уровневым или n-уровневым.

3 голосов
/ 18 января 2009

Эй, я даже не могу получить определение 3 уровня. Иногда они игнорируют javascript на клиенте, а иногда javascript на клиенте и клиентском веб-браузере считаются другим уровнем. Таким образом, страница ASP, которая взаимодействует с базой данных, может быть трехуровневой, если предположить, что база данных = уровень 3, веб-сервер = уровень 2, клиентский веб-браузер = уровень 1. А в других случаях веб-сервер = уровень 1, промежуточное программное обеспечение = уровень 2, база данных = Уровень 3. Это действительно зависит от того, кто пишет определение / книгу.

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

1 голос
/ 27 марта 2012

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

1 голос
/ 16 декабря 2009

привет, пожалуйста, проверьте эту ссылку, чтобы вы могли получить хорошее представление об этом

http://msdn.microsoft.com/en-us/library/ms973829.aspx

1 голос
/ 18 января 2009

Откуда эта цитата? К какой отрасли они относятся? Мне бы пришлось представить, что это как-то связано с SOA , потому что это единственное, что имеет смысл для такого рода заявлений.

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

0 голосов
/ 18 января 2009

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

...