Яка різниця між "шарами" та "рівнями"?


215

Яка різниця між "Шарами" та "Рівнями"?


4
Майже всі, кого я зустрічав у світі програмного забезпечення, використовують ці два терміни взаємозамінно, як ніби вони абсолютно однакові.
RBT

Відповіді:


260

Логічні шари - це лише спосіб організації вашого коду. Типові шари включають презентацію, бізнес та дані - те саме, що і традиційна трирівнева модель. Але коли ми говоримо про шари, ми говоримо лише про логічну організацію коду. Ні в якому разі не мається на увазі, що ці шари можуть працювати на різних комп'ютерах або в різних процесах на одному комп'ютері або навіть в одному процесі на одному комп'ютері. Все, що ми робимо, - це обговорення способу організації коду в набір шарів, визначених певною функцією.

Однак фізичні яруси стосуються лише того, де працює код. Зокрема, яруси - це місця, де розгорнуті шари та де проходять шари. Іншими словами, яруси - це фізичне розгортання шарів.

Джерело: 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) на трьох різних серверах. Правильно? Скажіть, будь ласка, як я можу дати посилання на рівень Business Logic на презентаційному шарі?
Мажар Хан

@MazharKhan Ви можете скористатися послугою, щоб відкрити функціональний рівень бізнес-шару презентаційному шару
Amit Saxena

32

Чому завжди намагаються вживати складні слова?

Шар = частина вашого коду , якщо ваше додаток є торт, це шматочок.

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

Ярус розміщує один або кілька шарів.


Приклад шарів:

  • Презентаційний шар = зазвичай весь код, пов'язаний з інтерфейсом користувача
  • Рівень доступу до даних = весь код, пов'язаний з доступом до вашої бази даних

Рівень:

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

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

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


Існує так багато переваг для впровадження шаруватої архітектури. Це складно, і належна реалізація шаруватої програми потребує часу. Якщо у вас є такі, подивіться цю публікацію від Microsoft: http://msdn.microsoft.com/en-gb/library/ee658109.aspx


13

Я знайшов визначення, яке говорить про те, що шари - це логічне розділення, а рівні - це фізичне розділення.


10
  1. Простий англійською мовою Tierпосилається на "кожен з рядів або рівнів структури, розміщених один над одним", тоді як Layerпосилається на "аркуш, кількість або товщину матеріалу, як правило, один з декількох, що охоплюють поверхню або тіло ".

  2. Рівень - фізична одиниця , де працює код / ​​процес. Наприклад: клієнт, сервер додатків, сервер баз даних;

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

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

    Шари - це логічні групування програмних компонентів, що складають додаток або послугу. Вони допомагають розмежувати різні види завдань, що виконуються компонентами, полегшуючи створення конструкції, яка підтримує повторне використання компонентів. Кожен логічний шар містить ряд дискретних типів компонентів, згрупованих у підшари, при цьому кожен підшар виконує певний тип завдання.

Дворівнева модель представляє клієнта та сервера.

У цьому сценарії клієнт і сервер можуть існувати на одній машині або можуть бути розташовані на двох різних машинах. На малюнку нижче зображено загальний сценарій веб-додатків, коли клієнт взаємодіє з веб-сервером, розташованим у клієнтському рівні. Цей рівень містить логіку шару презентації та будь-яку необхідну логіку бізнес-рівня. Веб-додаток спілкується з окремою машиною, на якій розміщений рівень бази даних, що містить логіку рівня даних.

Шари проти ярусів

Переваги шарів і ярусів:

  • Нанесення шарів допомагає максимально підтримувати ремонтопридатність коду, оптимізувати спосіб роботи програми при різному розгортанні та забезпечує чітке розмежування між місцями, де повинні прийматися певні технології чи дизайнерські рішення.

  • Розміщення ваших шарів на окремих фізичних рівнях може сприяти їх продуктивності, розподіляючи навантаження на декілька серверів. Він також може допомогти в безпеці, розділивши більш чутливі компоненти та шари на різні мережі або в Інтернеті проти інтрамережі.

Додаток 1 рівня може бути тришаровим додатком.


6

Так, мої дорогі друзі сказали правильно. Шар - це логічний розділ програми, тоді як рівень фізичного розділу розділів системного рівня залежить від рівня шару. Так само, як виконання програми на одній машині, але вона має тришарову архітектуру, тому ми можемо сказати, що архітектура шарів може існувати в архітектурі ярусів. Простіше кажучи, тришарова архітектура може реалізовуватися в одній машині, тоді ми можемо сказати, що це архітектура 1 рівня. Якщо ми реалізуємо кожен шар на окремій машині, тоді його називається 3-ярусна архітектура. Шар також може виконувати декілька ярусів. У архітектурі шарів пов'язаний компонент, щоб спілкуватися один з одним легко.
Так само, як ми слідуємо наведеній нижче архітектурі

  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, не торкаючись інших рівнів.
Ремонтопридатність : Веб-дизайнер може змінювати View-код, не торкаючись інших шарів на інших ярусах.
Легко оновити або вдосконалити [Наприклад: Ви можете додати додатковий код програми, оновити область зберігання або навіть додати кілька шарів презентації для окремих пристроїв, таких як мобільний, планшетний ПК]


6

Мені подобається нижченаведений опис із Посібника з архітектури додатків Microsoft 2

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


5

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


1

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

Наприклад, гіпотетично може працювати трирівневий додаток

  1. 3 фізичні машини без ОС.
  2. 1 фізична машина з 3 віртуальними машинами без ОС.

    (Це був третій (апаратний) рівень додатка)

  3. 1 фізична машина з 3 віртуальними машинами з 3 різними / однаковими ОС

    (Це був трехрівневий додаток)

  4. 1 фізична машина з 1 віртуальною машиною з 1 ОС, але 3 AppServers

    (Це був третій додаток (AppServer))

  5. 1 фізична машина з 1 віртуальною машиною з 1 ОС з 1 AppServer, але 3 СУБД

    (Це був рівень 3-го рівня (СУБД))

  6. 1 фізична машина з 1 віртуальною машиною з 1 ОС з 1 AppServers і 1 СУБД, але 3 робочі зошити Excel.

    (Це був третій додаток (AppServer))

Робоча книга Excel - це мінімально необхідне середовище для запуску коду VBA.

Ці 3 робочі книжки можуть сидіти на одному фізичному комп’ютері чи декількох.

Я помітив, що на практиці люди мають на увазі "Рівень ОС", коли вони говорять "Рівень" у контексті опису додатків.

Тобто, якщо додаток працює на 3-х окремих ОС, то це 3-рівневий додаток.

Таким чином, педантично правильний спосіб опису програми був би

Додаток "1 до 3 рівня", працює на 2 рівня ".

:)


Шари - це лише типи коду щодо функціонального розподілу обов'язків у програмі (наприклад, презентація, дані, безпека тощо).


0

Шари - це концептуальні утворення, які використовуються для розділення функціональності програмної системи з логічної точки зору; при впровадженні системи ви організовуєте ці шари, використовуючи різні методи; в такому стані ми позначаємо їх не як шари, а як яруси.


0

Коли ви говорите про презентацію, сервіс, дані, мережевий рівень, ви говорите про шари. Коли ви "розгортаєте їх окремо", ви говорите про рівні.

Яруси - це все про розгортання. Прийміть це так: у нас є додаток, який має фронтенд, створений у Angular, у ньому є бекенд, як MongoDB, і середній шар, який взаємодіє між фронтендом і бекендом. Отже, коли цей додаток для фронтену, додаток до бази даних та середній рівень розгортаються окремо, ми говоримо, що це трирівневий додаток.

Перевага: Якщо нам потрібно буде масштабувати наш сервер в майбутньому, нам потрібно лише масштабувати резервний сервер самостійно, і немає необхідності в масштабі розширення фронту.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.