В чем разница между «Слоями» и «Ярусами»?

215

В чем разница между слоями и слоями?

cretzel
источник
4
Почти все, кого я встречал в мире программного обеспечения, используют эти два термина взаимозаменяемо, как будто они абсолютно одинаковы.
RBT

Ответы:

260

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

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

Источник: Rockford Lhotka, должны ли все приложения быть n-уровневыми?

Панос
источник
43

Прочтите сообщение Скотта Хансельмана по этому вопросу: http://www.hanselman.com/blog/AReminderOnThreeMultiTierLayerArchitectureDesignBroughtToYouByMyLateNightFrustrations.aspx

Помните, однако, что в «Мире Скотта» (который, надеюсь, тоже ваш мир :)) «Уровень» - это единица развертывания, а «Уровень» - это логическое разделение ответственности внутри кода. Вы можете сказать, что у вас есть «трехуровневая» система, но запускайте ее на одном ноутбуке. Вы можете сказать, что у вас «трехслойная» система, но есть только страницы ASP.NET, которые общаются с базой данных. Сила в точности, друзья.

мистифицировать
источник
36

Слои относятся к логическому разделению кода. Логические слои помогают вам лучше организовать ваш код. Например, приложение может иметь следующие слои.

1) Уровень представления или уровень пользовательского интерфейса 2) Бизнес-уровень или уровень бизнес-логики 3) Уровень доступа к данным или уровень данных

Эти три уровня находятся в собственных проектах, может быть 3 или даже больше. Когда мы компилируем проекты, мы получаем DLL соответствующего слоя. Итак, у нас есть 3 DLL сейчас.

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

Если мы решим развернуть каждую DLL на отдельной машине, то у нас будет 3 уровня и 3 уровня.

Итак, уровни - это логическое разделение, а уровни - это физическое разделение. Можно также сказать, что ярусы - это физическое развертывание слоев.

Сатиш
источник
Из вашего ответа я понял, что мы можем развернуть 3 слоя (DLL) на трех разных серверах Правильно ? Подскажите, пожалуйста, как я могу дать ссылку на слой бизнес-логики на уровне презентации?
Мажар Хан
@MazharKhan Возможно, вы захотите использовать сервис для представления функциональности бизнес-уровня на уровне презентации
Амит Саксена
32

Почему всегда пытаться использовать сложные слова?

Слой = часть вашего кода , если ваше приложение является торт, это кусочек.

Ярус = физический компьютер , сервер.

Уровень содержит один или несколько слоев.


Пример слоев:

  • Уровень представления = обычно весь код, связанный с пользовательским интерфейсом
  • Уровень доступа к данным = весь код, связанный с доступом к вашей базе данных

Уровень:

Ваш код размещен на сервере = Ваш код размещен на уровне.

Ваш код размещен на 2 серверах = Ваш код размещен на 2 уровнях.

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


Есть много преимуществ для реализации многоуровневой архитектуры. Это сложно и для правильной реализации многоуровневого приложения требуется время. Если у вас есть, посмотрите на это сообщение от Microsoft: http://msdn.microsoft.com/en-gb/library/ee658109.aspx

Андрей
источник
13

Я нашел определение, в котором говорится, что слои - это логическое разделение, а уровни - это физическое разделение.

cretzel
источник
10
  1. В простом английском языке это Tierотносится к «каждому из ряда рядов или уровней структуры, расположенной один над другим», тогда как Layerотносится к «листу, количеству или толщине материала, обычно одного из нескольких, охватывающих поверхность или тело». ».

  2. Уровень - это физическая единица , в которой выполняется код / ​​процесс. Например: клиент, сервер приложений, сервер базы данных;

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

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

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

Двухуровневый шаблон представляет клиента и сервер.

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

Слои против Уровней

Преимущества слоев и ярусов:

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

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

Одноуровневое приложение может быть трехуровневым.

TryinHard
источник
6

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

  1. уровень представления
  2. уровень бизнес-логики
  3. уровень доступа к данным

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

==> безопасности

==> управляемость

==> масштабируемость

Другие потребности, такие как после разработки приложения, нам нужно изменить DBMS или изменить бизнес-логику и т. д., то это необходимо для всех.

Q * почему мы используем многоуровневую архитектуру?

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

Простой пример

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

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

все они являются связанными компонентами системы.

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

Как насчет уровня? Филиал банка открывается в городе, потом в другом, потом в другом, но каково основное требование каждого филиала?

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

точно такая же концепция слоя и уровня.

Атула
источник
Отличное объяснение, дорогой
Дулай Кулатхунга
6

Уровни - это логическое разделение related-functionality[code] внутри приложения. Связь между уровнями является явной и слабо связанной. [Логика представления, логика приложения, логика доступа к данным]

Уровни - это физическое разделение layers[которые размещаются на отдельных серверах] на отдельном компьютере (процесс).

введите описание изображения здесь

Как показано на диаграмме:

1-Tier & 3-Layers « App Logic  with out DB access store data in a files.
2-Tier & 3-Layers « App Logic & DataStorage-box.
2-Tier & 2-Layers « Browser View[php] & DataStorage[procedures]
2-Tier & 1-Layers « Browser View[php] & DataStorage, query sending is common.
3-Tier & n-Layer  « Browser View[php], App Logic[jsp], DataStorage

Преимущества n- уровня :
Лучшая
масштабируемость безопасности : по мере роста вашей организации Вы можете расширить свой уровень DB с помощью кластеризации DB, не затрагивая другие уровни.
Поддержка : веб-дизайнер может изменить код представления, не касаясь других слоев на других уровнях.
Простое обновление или улучшение [Пример: вы можете добавить дополнительный код приложения, обновить область хранения или даже добавить несколько уровней представления для отдельных устройств, таких как мобильные устройства, планшеты, ПК]

Яши
источник
6

Мне нравится приведенное ниже описание из Microsoft Application Architecture Guide 2

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

sanjaykumar81
источник
5

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

Брайан Мэтьюз
источник
1

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

Например, гипотетически может быть запущено 3-уровневое приложение

  1. 3 физических машины без ОС.
  2. 1 физическая машина с 3 виртуальными машинами без ОС.

    (Это было 3- (аппаратное) приложение уровня)

  3. 1 физическая машина с 3 виртуальными машинами с 3 разными ОС

    (Это было приложение уровня 3 (OS))

  4. 1 физическая машина с 1 виртуальной машиной с 1 ОС, но с 3 серверами приложений

    (Это было приложение уровня 3- (AppServer))

  5. 1 физическая машина с 1 виртуальной машиной с 1 ОС с 1 сервером приложений, но 3 СУБД

    (Это было приложение уровня 3 (СУБД))

  6. 1 физическая машина с 1 виртуальной машиной с 1 ОС с 1 сервером приложений и 1 СУБД, но 3 книгами Excel.

    (Это было приложение уровня 3- (AppServer))

Книга Excel - это минимально необходимая среда для запуска кода VBA.

Эти 3 книги могут находиться на одном физическом компьютере или на нескольких.

Я заметил, что на практике люди имеют в виду «уровень ОС», когда они говорят «уровень» в контексте описания приложения.

То есть, если приложение работает в 3-х отдельных ОС, то это трехуровневое приложение.

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

Приложение с поддержкой от 1 до 3 уровней, работающее на 2 уровнях.

:)


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

Дмитрий КОХ
источник
0

Слои являются концептуальными объектами и используются для отделения функциональности программной системы от логической точки зрения; когда вы внедряете систему, вы организуете эти слои разными способами; в этом состоянии мы называем их не слоями, а уровнями.

звездное гринвичское время
источник
0

Когда вы говорите о представлении, услуге, данных, сетевом уровне, вы говорите о слоях. Когда вы «развертываете их отдельно», вы говорите об уровнях.

Уровни это все о развертывании. Подумайте так: у нас есть приложение, у которого есть внешний интерфейс, созданный в Angular, он имеет внутренний интерфейс MongoDB и средний уровень, который взаимодействует между внешним интерфейсом и внутренним интерфейсом. Итак, когда это внешнее приложение, приложение базы данных и средний уровень развернуты отдельно, мы говорим, что это трехуровневое приложение.

Преимущество: если нам нужно масштабировать наш бэкэнд в будущем, нам нужно только масштабировать бэкэнд независимо, и нет необходимости в масштабировании фронтэнда.

Аарзу Трехан
источник