Martin Fowler demostrando claramente:
La estratificación es una de las técnicas más comunes que usan los diseñadores de software para separar un sistema de software complicado. Lo ves en arquitecturas de máquinas, donde las capas descienden de un lenguaje de programación con llamadas del sistema operativo a controladores de dispositivos y conjuntos de instrucciones de CPU, y a puertas lógicas dentro de chips. Las redes tienen FTP en capas sobre TCP, que está sobre IP, que está sobre Ethernet.
Al pensar en un sistema en términos de capas, imagina los subsistemas principales del software dispuestos en alguna forma de torta de capas, donde cada capa descansa en una capa inferior. En este esquema, la capa superior utiliza varios servicios definidos por la capa inferior, pero la capa inferior desconoce la capa superior. Además, cada capa generalmente oculta sus capas inferiores de las capas superiores, por lo que la capa 4 usa los servicios de la capa 3, que usa los servicios de la capa 2, pero la capa 4 desconoce la capa 2. (No todas las arquitecturas de capas son opacas como esta , pero la mayoría son, o mejor dicho, la mayoría son opacos).
Desglosar un sistema en capas tiene una serie de beneficios importantes.
• Puede comprender una sola capa como un todo coherente sin saber mucho sobre las otras capas. Puede comprender cómo crear un servicio FTP sobre TCP sin conocer los detalles de cómo funciona Ethernet.
• Puede sustituir capas con implementaciones alternativas de los mismos servicios básicos. Un servicio FTP puede ejecutarse sin cambios a través de Ethernet, PPP o lo que sea que use una compañía de cable.
• Minimiza las dependencias entre capas. Si la compañía de cable cambia su sistema de transmisión física, siempre que haga funcionar el IP, no tenemos que alterar nuestro servicio FTP.
• Las capas hacen buenos lugares para la estandarización. TCP e IP son estándares porque definen cómo deberían funcionar sus capas.
• Una vez que haya creado una capa, puede usarla para muchos servicios de nivel superior. Por lo tanto, TCP / IP es utilizado por FTP, telnet, SSH y HTTP. De lo contrario, todos estos protocolos de nivel superior tendrían que escribir sus propios protocolos de nivel inferior. De la biblioteca de Kyle Geoffrey Passarelli
La estratificación es una técnica importante, pero hay inconvenientes.
• Las capas encapsulan algunas, pero no todas, las cosas bien. Como resultado, a veces se producen cambios en cascada. El ejemplo clásico de esto en una aplicación empresarial en capas es agregar un campo que debe mostrarse en la interfaz de usuario, debe estar en la base de datos y, por lo tanto, debe agregarse a cada capa intermedia.
• Las capas adicionales pueden dañar el rendimiento. En cada capa, las cosas generalmente necesitan ser transformadas de una representación a otra. Sin embargo, la encapsulación de una función subyacente a menudo le brinda ganancias de eficiencia que más que compensan. Se puede optimizar una capa que controla las transacciones y luego hará que todo sea más rápido. Pero la parte más difícil de una arquitectura en capas es decidir qué capas tener y cuál debe ser la responsabilidad de cada capa.