Martin Fowler wyraźnie demonstruje:
Nakładanie warstw jest jedną z najczęstszych technik stosowanych przez projektantów oprogramowania w celu rozbicia skomplikowanego systemu oprogramowania. Widać to w architekturach maszyn, w których warstwy schodzą z języka programowania z wywołaniami systemu operacyjnego do sterowników urządzeń i zestawów instrukcji procesora oraz do bramek logicznych wewnątrz układów. Sieć ma FTP z warstwami na TCP, który jest na IP, który jest na Ethernet.
Myśląc o systemie w kategoriach warstw, wyobrażasz sobie główne podsystemy w oprogramowaniu ułożone w jakiejś formie warstwowego ciasta, gdzie każda warstwa spoczywa na dolnej warstwie. W tym schemacie wyższa warstwa korzysta z różnych usług zdefiniowanych przez niższą warstwę, ale niższa warstwa nie jest świadoma wyższej warstwy. Ponadto każda warstwa zwykle ukrywa swoje dolne warstwy przed warstwami powyżej, więc warstwa 4 korzysta z usług warstwy 3, która korzysta z usług warstwy 2, ale warstwa 4 nie zna warstwy 2. (Nie wszystkie architektury warstw są nieprzezroczyste , ale większość jest - a raczej większość jest w większości nieprzezroczysta).
Podział systemu na warstwy ma wiele ważnych zalet.
• Możesz zrozumieć pojedynczą warstwę jako spójną całość, nie wiedząc wiele o innych warstwach. Możesz zrozumieć, jak zbudować usługę FTP na TCP, nie znając szczegółów działania Ethernetu.
• Możesz zastąpić warstwy alternatywnymi implementacjami tych samych podstawowych usług. Usługa FTP może działać bez zmian przez Ethernet, PPP lub cokolwiek, z czego korzysta firma kablowa.
• Minimalizujesz zależności między warstwami. Jeśli firma kablowa zmieni swój fizyczny system transmisji, pod warunkiem, że sprawi, że IP będzie działać, nie musimy zmieniać naszej usługi FTP.
• Warstwy stanowią dobre miejsce do standaryzacji. TCP i IP są standardami, ponieważ określają sposób działania ich warstw.
• Po zbudowaniu warstwy można jej używać do wielu usług wyższego poziomu. Dlatego TCP / IP jest używany przez FTP, telnet, SSH i HTTP. W przeciwnym razie wszystkie te protokoły wyższego poziomu musiałyby pisać własne protokoły niższego poziomu. Z biblioteki Kyle Geoffrey Passarelli
Warstwowanie jest ważną techniką, ale ma swoje wady.
• Warstwy dobrze uwzględniają niektóre, ale nie wszystkie, rzeczy. W rezultacie czasami pojawiają się zmiany kaskadowe. Klasycznym przykładem tego w warstwowej aplikacji korporacyjnej jest dodanie pola, które musi być wyświetlane w interfejsie użytkownika, musi znajdować się w bazie danych, a zatem musi być dodane do każdej warstwy pomiędzy nimi.
• Dodatkowe warstwy mogą zaszkodzić wydajności. Na każdej warstwie rzeczy zwykle trzeba przekształcić z jednej reprezentacji do drugiej. Jednak hermetyzacja podstawowej funkcji często zapewnia przyrost wydajności, który z nadwyżką kompensuje. Warstwa kontrolująca transakcje może zostać zoptymalizowana, a następnie przyspieszy wszystko. Ale najtrudniejsza część architektury warstwowej decyduje, jakie warstwy mieć i jaka powinna być odpowiedzialność każdej warstwy.