Мартін Фаулер наочно демонструє:
Шарування - одна з найпоширеніших методик, яку розробники програмного забезпечення використовують для розбиття складної програмної системи. Ви бачите це в архітектурах машин, де шари спускаються з мови програмування з викликами операційної системи в драйвери пристроїв і набори інструкцій процесора, а також в логічні ворота всередині мікросхем. Мережа має 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. В іншому випадку всі ці протоколи вищого рівня повинні були написати власні протоколи нижчого рівня. З бібліотеки Кайла Джеффрі Пассареллі
Накладення шарів - важлива техніка, але є і мінуси.
• Шари добре капсулюють деякі, але не всі речі. В результаті інколи ви отримуєте каскадні зміни. Класичний приклад цього у багатошаровому корпоративному додатку - додавання поля, яке потрібно відображати в інтерфейсі користувача, повинно бути в базі даних, і, таким чином, його потрібно додавати до кожного шару між ними.
• Додаткові шари можуть пошкодити продуктивність На кожному шарі речі, як правило, потребують перетворення з одного представлення в інше. Однак інкапсуляція основної функції часто дає ефективніші ефекти, які більш ніж компенсують. Шар, який контролює транзакції, можна оптимізувати, а потім зробить все швидше. Але найважча частина шаруватої архітектури - це вирішити, які шари мати і якою повинна бути відповідальність кожного шару.