- Presentación
- Lógica de negocios.
- Persistencia.
- Base de datos.
Contexto
Todos los sistemas complejos experimentan la necesidad de desarrollar y evolucionar partes del sistema de forma independiente. Por esta razón, los desarrolladores del sistema necesitan una clara y bien documentada separación de intereses, de modo que los módulos del sistema pueden ser desarrollados y mantenidos de forma independiente.
Problemas
El software necesita ser segmentado de tal forma que los módulos puedan ser desarrollados y puedan evolucionar de forma separada con poca interacción entre las partes, soportando portabilidad, variación y reutilización.
Solución
Para lograr esta separación de intereses, el patrón de capas divide el software en unidades llamadas capas. Cada capa es una agrupación de módulos que ofrecen un conjunto cohesivo de servicios. El uso debería ser unidireccional. Las capas dividen una parte del software, y cada partición es expuesta a través de una interfaz pública.
- El primer concepto a tener en cuenta es que cada capa tiene un rol y una responsabilidad especifica. Por ejemplo, la capa de presentación es responsable de manejar la interfaz de usuario. La consecuencia de la separación de intereses hace que sea más fácil construir roles y responsabilidades de forma efectiva.
- Como segundo concepto, el patrón de arquitectura en capas es diferente u opuesto a la arquitectura por dominio. Las capas son grupos de componentes, más que por dominio.
- Por último, cada capa está marcada para ser cerrada o abierta. Una capa cerrada significa que una solicitud de mueve de capa en capa, y va entre capas continuas sin saltarse alguna. Es decir de capa 1 va a capa 2 y luego a la capa 3. No puede ir de la capa 1 a la 3.
Debilidades
Las capas contribuyen a una penalidad en el desempeño. El patrón no es muy eficiente ya que una solicitud va de capa en capa para completarse. Eso lo hace menos aplicable a aplicaciones de alto desempeño.
Agregar una capa adicional, eleva el costo y complejidad a un sistema.
Usos
Deberíamos utilizar este estilo para aplicaciones o sitios web pequeños o simples. Es una buena elección para proyectos con poco presupuesto o con restricciones de tiempo.
0 Comentarios