Martin Fowler açıkça gösteriyor:
Katmanlama, yazılım tasarımcılarının karmaşık bir yazılım sistemini ayırmak için kullandığı en yaygın tekniklerden biridir. Bunu, işletim sistemi ile katmanların bir programlama dilinden indiği makine mimarilerinde aygıt sürücülerine ve CPU komut setlerine ve yongaların içindeki mantık kapılarına bakın. Ağ üzerinde, Ethernet'in üstünde bulunan IP'nin üstünde olan TCP'nin üstünde FTP katmanı vardır.
Bir sistemi katmanlar olarak düşünürken, yazılımdaki temel alt sistemlerin, her katmanın bir alt katmana dayandığı katman kek biçiminde düzenlenmiş olduğunu hayal edersiniz. Bu şemada, üst katman, alt katman tarafından tanımlanan çeşitli hizmetleri kullanır, ancak alt katman, üst katmandan habersizdir. Ayrıca, her katman genellikle alt katmanlarını yukarıdaki katmanlardan gizler, bu nedenle katman 4, katman 2'nin hizmetlerini kullanan katman 3'ün hizmetlerini kullanır, ancak katman 4, katman 2'den habersizdir. (Tüm katman mimarileri böyle opak değildir. , ancak çoğu - ya da çoğu çoğunlukla opaktır.)
Bir sistemi katmanlara ayırmanın birçok önemli faydası vardır.
• Tek bir katmanı, diğer katmanlar hakkında fazla bir şey bilmeden tutarlı bir bütün olarak anlayabilirsiniz. Ethernet'in nasıl çalıştığının ayrıntılarını bilmeden TCP'nin üstünde bir FTP hizmetinin nasıl oluşturulacağını anlayabilirsiniz.
• Katmanları, aynı temel hizmetlerin alternatif uygulamalarıyla değiştirebilirsiniz. Bir FTP hizmeti, ethernet, PPP veya bir kablo şirketinin kullandığı her şey üzerinde değişiklik yapmadan çalışabilir.
• Katmanlar arasındaki bağımlılıkları en aza indirirsiniz. Kablo şirketi IP iletimini yapmaları koşuluyla fiziksel iletim sistemini değiştirirse, FTP hizmetimizi değiştirmek zorunda değiliz.
• Katmanlar standardizasyon için iyi yerlerdir. TCP ve IP standartlardır çünkü katmanlarının nasıl çalışması gerektiğini tanımlarlar.
• Bir katman oluşturulduktan sonra, birçok üst düzey hizmet için kullanabilirsiniz. Böylece, TCP / IP FTP, telnet, SSH ve HTTP tarafından kullanılır. Aksi takdirde, tüm bu üst düzey protokollerin kendi alt düzey protokollerini yazmaları gerekir. Kyle Geoffrey Passarelli Kütüphanesi'nden
Katmanlama önemli bir tekniktir, ancak dezavantajları vardır.
• Katmanlar bazı şeyleri, ancak hepsini değil, iyi bir şekilde kapsar. Sonuç olarak, bazen basamaklı değişiklikler elde edersiniz. Katmanlı bir kurumsal uygulamada bunun klasik örneği, kullanıcı arayüzünde görüntülenmesi gereken bir alan eklemektir, veritabanında olmalı ve bu nedenle aradaki her katmana eklenmelidir.
• Ek katmanlar performansa zarar verebilir. Her katmanda işler tipik olarak bir gösterimden diğerine dönüştürülmelidir. Bununla birlikte, altta yatan bir fonksiyonun kapsüllenmesi genellikle size telafi etmekten daha fazla verimlilik kazancı sağlar. İşlemleri kontrol eden bir katman optimize edilebilir ve her şeyi daha hızlı hale getirir. Ancak katmanlı bir mimarinin en zor kısmı, hangi katmanlara sahip olacağınıza ve her katmanın sorumluluğunun ne olacağına karar vermektir.