Мартин Фаулер ясно демонстрирует:
Расслоение является одним из наиболее распространенных методов, которые разработчики программного обеспечения используют для
разбить сложную систему программного обеспечения. Вы видите это в машинных архитектурах,
где слои спускаются с языка программирования с вызовами операционной системы
в драйверы устройств и наборы команд процессора, а также в логические элементы внутри чипов.
Сеть имеет 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. В противном случае все эти
протоколы более высокого уровня должны будут писать свои собственные протоколы более низкого уровня.
Из библиотеки Кайла Джеффри Пассарелли
Расслоение является важной техникой, но есть и недостатки.
• Слои хорошо инкапсулируют некоторые, но не все вещи. В результате вы иногда
получить каскадные изменения. Классический пример этого на многослойном предприятии
Приложение добавляет поле, которое должно отображаться в пользовательском интерфейсе, должно быть
в базе данных, и, следовательно, должны быть добавлены к каждому слою между ними.
• Дополнительные слои могут ухудшить производительность. На каждом слое вещи обычно должны
трансформироваться из одного представления в другое. Тем не менее, инкапсуляция
основной функции часто дает вам повышение эффективности, что более
чем компенсировать. Уровень, который контролирует транзакции, может быть оптимизирован и
тогда сделает все быстрее.
Но самая сложная часть многоуровневой архитектуры - это решить, какие слои иметь
и какова ответственность каждого слоя.