Extractado de La Guía de Arquitectura Versión 2.0a del grupo de Patterns and Practices de Microsoft. Para los que nos gusta en la lengua de cervantes:
La arquitectura basada en capas se enfoca en la distribución de roles y responsabilidades de forma jerárquica proveyendo una forma muy efectiva de separación de responsabilidades. El rol indica el modo y tipo de interacción con otras capas, y la responsabilidad indica la funcionalidad que está siendo desarrollada.
Por ejemplo, una aplicación web típica está compuesta por una capa de presentación (funcionalidad relacionada con la interfaz de usuario), una capa de negocios (procesamiento de reglas de negocios) y una capa de datos (funcionalidad relacionada con el acceso a datos).
El estilo de arquitectura basado en capas se identifica por las siguientes características:
• Describe la descomposición de servicios de forma que la mayoría de la interacción ocurre solamente entre capas vecinas.
• Las capas de una aplicación pueden residir en la misma maquina física (misma capa) o puede estar distribuido sobre diferentes computadores (n-capas).
• Los componentes de cada capa se comunican con otros componentes en otras capas a través de interfaces muy bien definidas.
• Este modelo ha sido descrito como una “pirámide invertida de re-uso” donde cada capa agrega responsabilidad y abstracción a la capa directamente sobre ella.
Principios fundamentales
Los principios comunes que se aplican cuando se diseña para usar este estilo de arquitectura incluyen:
• Abstracción. La arquitectura basada en capas abstrae la vista del modelo como un todo mientras que provee suficiente detalle para entender las relaciones entre capas.
• Encapsulamiento. El diseño no hace asunciones acerca de tipos de datos, métodos, propiedades o implementación.
• Funcionalidad claramente definida. El diseño claramente define la separación entre la funcionalidad de cada capa. Capas superiores como la capa de presentación envía comandos a las capas inferiores como la capa de negocios y la capa de datos y los datos fluyen hacia y desde las capas en cualquier sentido.
• Alta cohesion. Cada capa contiene funcionalidad directamente relacionas con la tarea de dicha capa.
• Reutilizable. Las capas inferiores no tienen ninguna dependencia con las capas superiores, permitiéndoles ser reutilizables en otros escenarios.
• Desacople. La comunicacion entre las capas está basada en la abstracción lo que provee un desacople entre las capas.
Beneficios
Los principales beneficios del estilo de arquitectura basado en capas son:
• Abstracción. Las capas permiten cambios que se realicen en un nivel abstracto. Usted puede incrementar o disminuir el nivel de abstracción usado en cada capa de la “pila” jerárquica.
• Aislamiento. El estilo de arquitectura de capas permite asilar los cambios en tecnologías a ciertas capas para reducir el impacto en el sistema total.
• Rendimiento. Distribuir las capas entre múltiples sistemas (físicos) puede incrementar la escalabilidad, la tolerancia a fallos y el rendimiento.
• Mejoras en Pruebas. La capacidad de realizar pruebas se beneficia de tener una interfaces bien definidas para cada capa así como de la habilidad para cambiar a diferentes implementaciones de las interfaces de cada capa.
• Independencia. El estilo de arquitectura basado en capas el requerimiento de considerar el hardware y los problemas de instalación así como las dependencias de interfaces externas.
Ejemplos
Algunos tipos comunes de aplicaciones por capas incluyen:
• Aplicaciones de línea de negocios (LOB), como contabilidad, y sistemas de gestión de clientes.
• Aplicaciones web Corporativas y sitios Web
• Aplicaciones corporativas de escritorio o clientes inteligentes con servidores centralizados de aplicación con lógica de negocios.
Los siguientes son algunas variaciones del estilo de arquitectura basado en capas:
• Capas estrictas (Strict layering). Cada capa solo puede invocar a la capa directamente debajo de a ella.
• Saltos de Capas (Layer skipping). Las capas pueden invocar otras capas más profundas que las que están directamente debajo de ellas. Esto puede incrementar el rendimiento pero impacta la portabilidad.
• Capa de Caja Negra (Black-box layering). Los limites de las capas y sus dependencias esta definidas de forma estricta usando interfaces, lo que soporta extensiones en run-time, intercepción y mejora la capacidad de realiza pruebas.
• Capa de Caja Blanca (White-box layering). Clases que colaboran entre los límites de las capas y están altamente acopladas.
Arquitectura de N-Capas / 3-Capas
Este estilo de despliegue arquitectónico describe la separación de la funcionalidad en segmentos separados de forma muy parecida al estilo de capas, pero en el cual cada segmento está localizado en un computador físicamente separado. Este estilo ha evolucionado desde la aproximación basada en componentes generalmente usando métodos específicos de comunicación asociados a una plataforma en vez de la aproximación basada en mensajes.
Principios Fundamentales.
Los siguientes son los principios fundamentales del estilo de arquitectura basado en N-capas/3-capas:
• Es un estilo para definir el despliegue de las capas en una instalación.
• La arquitectura de N-capas está caracterizada por la descomposición functional de la aplicación, los componentes de servicio y su instalación distribuida. Mejorando la escalabilidad, disponibilidad, administración, y utilización de recursos.
• Cada capa es completamente independiente de las otras capas, excepto aquella que esta inmediatamente debajo de ella. La capa n solo necesita saber cómo manejar una solicitud de la capa n+1, como hacer la solicitud a la capa n-1 (si existe) y cómo manejar el resultado de la petición.
• La arquitectura de N-capas tiene al menos tres capas separadas o partes, cada una de ellas con su responsabilidad y está localizada en diferentes servidores.
• Una capa es desplegada en un nivel específico si más de un servicio o aplicación está expuesto por esa capa.
Beneficios.
Los principales beneficios del estilo de arquitectura de N-capas/3-capas son:
• Mejoras en las posibilidades de mantenimiento. Debido a que cada capa es independiente de la otra los cambios o actualizaciones pueden ser realizados sin afectar la aplicación como un todo.
• Escalabilidad. Como las capas están basadas en diferentes maquinas, el escalamiento de la aplicación hacia afuera es razonablemente sencillo.
• Flexibilidad. Como cada capa puede ser manejada y escalada de forma independiente, la flexibilidad se incrementa.
• Disponibilidad. Las aplicaciones pueden aprovechar la arquitectura modular de los sistemas habilitados usado componentes que escalan fácilmente lo que incrementa la disponibilidad.
Ejemplos.
Algunos ejemplos del estilo de arquitectura de N-capas/3-capas son:
• Una aplicación Web Financiera donde la seguridad es importante y la capa de negocios necesita estar instalada detrás de un Firewall, lo que obliga la instalación de la capa de presentación en una capa separada del perímetro.
• Una aplicación de cliente rico conectada, donde la capa de presentación esta en las maquinas cliente y las capas de negocios y datos están instaladas en el servidor.
Juan Carlos Pelaez
Arquitecto de Sofware.
Keywords: 3Metas, Juan Pelaez, Arquitectura, Emprendimiento, Desarrollo de Software, Aplicaciones Distribuidas, Juan Carlos Pelaez, Colombia, Desarrollo de Software, Soluciones, Silverlight, Sharepoint, WCF, WPF, Desarrollo de Aplicaciones Web, Desarrollo de Aplicaciones para Intranet, Web 2.0, Nuevos Medios.
Publicado en : www.juanpelaez.com
Publicidad: Necesita Arquitectos en soluciones basadas en plataforma Microsoft? 3Metas Corp tiene un grupo de especialistas que pueden apoyar sus procesos de diseño, construcción e implementación de soluciones. Contáctenos al correo electrónico sales@3metas.com
Algún ejemplo real con ´código ??
salu2
Algunos ejemplos del estilo de arquitectura de N-capas/3-capas son:
• Una aplicación Web Financiera donde la seguridad es importante y la capa de negocios necesita estar instalada detrás de un Firewall, lo que obliga la instalación de la capa de presentación en una capa separada del perímetro.
• Una aplicación de cliente rico conectada, donde la capa de presentación esta en las maquinas cliente y las capas de negocios y datos están instaladas en el servidor.