Arquitectura multicapa

Arquitectura del sistema informático

En ingeniería de software , la arquitectura multicapa (a menudo denominada arquitectura de n capas ) es una arquitectura cliente-servidor en la que las funciones de presentación, procesamiento de aplicaciones y gestión de datos están físicamente separadas. El uso más extendido de la arquitectura multicapa es la arquitectura de tres capas (por ejemplo, el modelo de interconexión de redes jerárquica de Cisco ).

La arquitectura de aplicaciones de n niveles proporciona un modelo mediante el cual los desarrolladores pueden crear aplicaciones flexibles y reutilizables. Al segregar una aplicación en niveles, los desarrolladores adquieren la opción de modificar o agregar un nivel específico, en lugar de volver a trabajar toda la aplicación. La arquitectura de n niveles es una buena opción para aplicaciones pequeñas y simples debido a su simplicidad y bajo costo. Además, puede ser un buen punto de partida cuando los requisitos arquitectónicos aún no están claros. [1] [2] Una arquitectura de tres niveles generalmente se compone de un nivel de presentación , un nivel de lógica y un nivel de datos .

Si bien los conceptos de capa y nivel se utilizan a menudo indistintamente, un punto de vista bastante común es que, de hecho, existe una diferencia. Este punto de vista sostiene que una capa es un mecanismo de estructuración lógica para los elementos conceptuales que conforman la solución de software, mientras que un nivel es un mecanismo de estructuración física para los elementos de hardware que conforman la infraestructura del sistema. [3] [4] Por ejemplo, una solución de tres capas podría implementarse fácilmente en un solo nivel, como en el caso de una arquitectura extrema centrada en bases de datos llamada arquitectura solo RDBMS [5] o en una estación de trabajo personal. [6]

Capas

El patrón arquitectónico “Capas” ha sido descrito en varias publicaciones. [7]

Capas comunes

En una arquitectura lógica multicapa para un sistema de información con un diseño orientado a objetos , las cuatro siguientes son las más comunes:

  • Capa de presentación (también conocida como capa de interfaz de usuario, capa de visualización, capa de presentación en arquitectura de múltiples niveles)
  • Capa de aplicación (también conocida como capa de servicio [8] [9] o capa de controlador GRASP [10] )
  • Capa empresarial (también conocida como capa de lógica empresarial (BLL), capa de lógica de dominio)
  • Capa de acceso a datos (también conocida como capa de persistencia , registro, redes y otros servicios necesarios para respaldar una capa empresarial en particular)

El libro Domain Driven Design describe algunos usos comunes de las cuatro capas anteriores, aunque su enfoque principal es la capa de dominio . [11]

Si la arquitectura de la aplicación no tiene una distinción explícita entre la capa de negocios y la capa de presentación (es decir, la capa de presentación se considera parte de la capa de negocios), entonces se ha implementado un modelo tradicional cliente-servidor (dos niveles). [ cita requerida ]

La convención más habitual es que la capa de aplicación (o capa de servicio) se considera una subcapa de la capa empresarial, que normalmente encapsula la definición de API que muestra la funcionalidad empresarial admitida. De hecho, las capas de aplicación/empresa pueden subdividirse aún más para enfatizar subcapas adicionales de responsabilidad específica. Por ejemplo, si se utiliza el patrón modelo-vista-presentador , la subcapa de presentador podría utilizarse como una capa adicional entre la capa de interfaz de usuario y la capa empresarial/aplicación (como se representa mediante la subcapa de modelo). [ cita requerida ]

Algunos también identifican una capa separada llamada capa de infraestructura empresarial (BI), ubicada entre las capas empresariales y las capas de infraestructura. A veces también se la denomina "capa empresarial de bajo nivel" o "capa de servicios empresariales". Esta capa es muy general y se puede utilizar en varios niveles de aplicación (por ejemplo, un CurrencyConverter). [12]

La capa de infraestructura se puede dividir en diferentes niveles (servicios técnicos de alto o bajo nivel). [12] Los desarrolladores a menudo se centran en las capacidades de persistencia (acceso a datos) de la capa de infraestructura y, por lo tanto, solo hablan de la capa de persistencia o la capa de acceso a datos (en lugar de una capa de infraestructura o una capa de servicios técnicos). En otras palabras, el otro tipo de servicios técnicos no siempre se considera explícitamente como parte de ninguna capa en particular. [ cita requerida ] . La capa de acceso a datos normalmente contiene un objeto conocido como objeto de acceso a datos (DAO) .

Una capa está encima de otra porque depende de ella. Cada capa puede existir sin las capas superiores y requiere de las capas inferiores para funcionar. Otra visión común es que las capas no siempre dependen estrictamente de la capa adyacente inferior. Por ejemplo, en un sistema de capas relajado (a diferencia de un sistema de capas estricto), una capa también puede depender de todas las capas inferiores. [7] El sistema de capas relajado tiene más acoplamientos y, por lo tanto, es más difícil de cambiar. Las arquitecturas de múltiples niveles pueden utilizar un enfoque híbrido para que algunas capas sean estrictas mientras que otras sean relajadas. [13] [14]

Arquitectura de tres niveles

Descripción general de una aplicación de tres niveles.

La arquitectura de tres niveles es un patrón de arquitectura de software cliente-servidor en el que la interfaz de usuario (presentación), la lógica del proceso funcional ("reglas de negocio"), el almacenamiento de datos de la computadora y el acceso a los datos se desarrollan y mantienen como módulos independientes , la mayoría de las veces en plataformas separadas . [15] Fue desarrollado por John J. Donovan en Open Environment Corporation (OEC), una empresa de herramientas que fundó en Cambridge, Massachusetts .

Además de las ventajas habituales del software modular con interfaces bien definidas, la arquitectura de tres niveles tiene como objetivo permitir que cualquiera de los tres niveles se actualice o reemplace de forma independiente en respuesta a cambios en los requisitos o la tecnología . Por ejemplo, un cambio de sistema operativo en el nivel de presentación solo afectaría al código de la interfaz de usuario.

Por lo general, la interfaz de usuario se ejecuta en una computadora de escritorio o una estación de trabajo y utiliza una interfaz gráfica de usuario estándar , una lógica de proceso funcional que puede constar de uno o más módulos separados que se ejecutan en una estación de trabajo o un servidor de aplicaciones , y un RDBMS en un servidor de base de datos o mainframe que contiene la lógica de almacenamiento de datos de la computadora. El nivel intermedio puede tener varios niveles (en cuyo caso la arquitectura general se denomina " arquitectura de n niveles"). [16]

Nivel de presentación
Este es el nivel superior de la aplicación. El nivel de presentación muestra información relacionada con servicios como la búsqueda de productos, la compra y el contenido del carrito de compras. Se comunica con otros niveles mediante los cuales muestra los resultados al nivel de navegador/cliente y a todos los demás niveles de la red. En términos simples, es una capa a la que los usuarios pueden acceder directamente (como una página web o la interfaz gráfica de usuario de un sistema operativo).
Nivel de aplicación (lógica empresarial, nivel lógico o nivel intermedio)
El nivel lógico se extrae del nivel de presentación y, como su capa, controla la funcionalidad de una aplicación realizando un procesamiento detallado.
Nivel de datos
La capa de datos incluye los mecanismos de persistencia de datos (servidores de bases de datos, recursos compartidos de archivos, etc.) y la capa de acceso a datos que encapsula los mecanismos de persistencia y expone los datos. La capa de acceso a datos debe proporcionar una API a la capa de aplicación que exponga métodos de gestión de los datos almacenados sin exponer ni crear dependencias de los mecanismos de almacenamiento de datos. Evitar las dependencias de los mecanismos de almacenamiento permite realizar actualizaciones o cambios sin que los clientes de la capa de aplicación se vean afectados por el cambio o ni siquiera sean conscientes de él. Al igual que con la separación de cualquier capa, existen costos de implementación y, a menudo, costos de rendimiento a cambio de una mejor escalabilidad y capacidad de mantenimiento.

Uso del desarrollo web

En el campo del desarrollo web , el término de tres niveles se utiliza a menudo para referirse a sitios web , comúnmente sitios web de comercio electrónico , que se construyen utilizando tres niveles:

  1. Un servidor web front-end que ofrece contenido estático y, potencialmente, contenido dinámico almacenado en caché . En una aplicación basada en web, el front-end es el contenido que muestra el navegador. El contenido puede ser estático o generarse de forma dinámica.
  2. Un servidor de aplicaciones de generación y procesamiento de contenido dinámico medio (por ejemplo, Symfony , Spring , ASP.NET , Django , Rails , Node.js ).
  3. Una base de datos o almacén de datos back-end , que comprende tanto los conjuntos de datos como el software del sistema de gestión de bases de datos que administra y proporciona acceso a los datos.

Otras consideraciones

La transferencia de datos entre niveles es parte de la arquitectura. Los protocolos involucrados pueden incluir uno o más de SNMP , CORBA , Java RMI , .NET Remoting , Windows Communication Foundation , sockets , UDP , servicios web u otros protocolos estándar o propietarios. A menudo se utiliza middleware para conectar los distintos niveles. Los distintos niveles a menudo (pero no necesariamente) se ejecutan en servidores físicos separados, y cada nivel puede ejecutarse en un clúster .

Trazabilidad

La trazabilidad de extremo a extremo de los flujos de datos a través de sistemas de n niveles es una tarea desafiante que se vuelve más importante a medida que los sistemas aumentan en complejidad. La medición de respuesta de la aplicación define conceptos y API para medir el rendimiento y correlacionar transacciones entre niveles. Generalmente, el término "niveles" se utiliza para describir la distribución física de los componentes de un sistema en servidores, computadoras o redes independientes (nodos de procesamiento). Una arquitectura de tres niveles tendrá tres nodos de procesamiento. El término "capas" se refiere a una agrupación lógica de componentes que pueden o no estar ubicados físicamente en un nodo de procesamiento.

Véase también

Referencias

  1. ^ Richards, Mark (2020). Fundamentos de la arquitectura de software: un enfoque de ingeniería (1.ª ed.). O'Reilly Media. ISBN 978-1492043454.
  2. ^ Richards, Mark (2022). Patrones de arquitectura de software . O'Reilly Media, Inc. ISBN 9781098134273.
  3. ^ Patrones de implementación (Arquitectura, patrones y prácticas empresariales de Microsoft)
  4. ^ Fowler, Martin "Patrones de arquitectura de aplicaciones empresariales" (2002). Addison Wesley.
  5. ^ Vicente, Alfonso; Etcheverry, Lorena; Sabiguero, Ariel (2021). "Una arquitectura RDBMS-only para aplicaciones web". 2021 XLVII Congreso Latinoamericano de Computación (CLEI) . pp. doi :10.1109/CLEI53233.2021.9640017. ISBN 978-1-6654-9503-5. Número de identificación del sujeto  245387844.
  6. ^ Patrones de implementación (Arquitectura, patrones y prácticas empresariales de Microsoft)
  7. ^ ab Buschmann, Frank; Meunier, Régine; Rohnert, Hans; Sommerlad, Peter; Stal, Michael (1996-08). Arquitectura de software orientada a patrones, volumen 1, un sistema de patrones. Wiley, agosto de 1996. ISBN 978-0-471-95869-7 . Obtenido de http://www.wiley.com/WileyCDA/WileyTitle/productCd-0471958697.html. 
  8. ^ Capa de servicio de Martin Fowler
  9. ^ Martin Fowler explica que la capa de servicio es lo mismo que la capa de aplicación
  10. ^ Comparación/discusión de la capa del controlador GRASP frente a la capa de aplicación/servicio
  11. ^ Domain-Driven Design, el libro, págs. 68-74. Recuperado de http://www.domaindrivendesign.org/books#DDD.
  12. ^ ab Aplicación de UML y patrones, 3.ª edición, página 203 ISBN 0-13-148906-2 
  13. ^ Richards, Mark (3 de marzo de 2020). Fundamentos de la arquitectura de software: un enfoque de ingeniería (1.ª ed.). O'Reilly Media. ISBN 978-1492043454.
  14. ^ Richards, Mark. Patrones de arquitectura de software . O'Reilly Media, Inc.
  15. ^ Eckerson, Wayne W. "Arquitectura cliente/servidor de tres niveles: cómo lograr escalabilidad, rendimiento y eficiencia en aplicaciones cliente-servidor". Open Information Systems 10, 1 (enero de 1995): 3(20)
  16. ^ Este artículo se basa en material tomado de tres niveles del Diccionario gratuito en línea de informática antes del 1 de noviembre de 2008 e incorporado bajo los términos de "renovación de la licencia" del GFDL , versión 1.3 o posterior.
  • Revista Linux, arquitectura de tres niveles
  • Guía de arquitectura de aplicaciones de Microsoft
  • Ejemplo de sistema gratuito de 3 niveles
  • ¿Qué es la arquitectura de 3 niveles?
  • Descripción de una arquitectura en capas concreta para aplicaciones de cliente enriquecidas .NET/WPF
Retrieved from "https://en.wikipedia.org/w/index.php?title=Multitier_architecture&oldid=1250381641"