stringtranslate.com

Arquitectura hexagonal (software)

La arquitectura hexagonal , o arquitectura de puertos y adaptadores , es un patrón arquitectónico utilizado en el diseño de software . Su objetivo es crear componentes de aplicaciones acoplados de forma flexible que se puedan conectar fácilmente a su entorno de software mediante puertos y adaptadores . Esto hace que los componentes sean intercambiables en cualquier nivel y facilita la automatización de pruebas. [1]

Origen

La arquitectura hexagonal fue inventada por Alistair Cockburn en un intento de evitar los conocidos problemas estructurales en el diseño de software orientado a objetos , como las dependencias no deseadas entre capas y la contaminación del código de la interfaz de usuario con la lógica empresarial . Se discutió al principio en la wiki de Portland Pattern Repository ; [2] [3] en 2005 Cockburn la rebautizó como "Puertos y adaptadores". [1] En abril de 2024, Cockburn publicó un libro completo sobre el tema, en coautoría con Juan Manuel Garrido de Paz. [4]

El término "hexagonal" proviene de las convenciones gráficas que muestran el componente de la aplicación como una celda hexagonal . El propósito no era sugerir que habría seis bordes/puertos, sino dejar suficiente espacio para representar las diferentes interfaces necesarias entre el componente y el mundo externo. [1]

Principio

Ejemplo de arquitectura hexagonal con un hexágono interior que representa el núcleo de la aplicación y un hexágono exterior para los adaptadores, siendo el borde entre los dos los puertos.
Ejemplo de arquitectura hexagonal

La arquitectura hexagonal divide un sistema en varios componentes intercambiables y poco acoplados, como el núcleo de la aplicación, la base de datos, la interfaz de usuario, los scripts de prueba y las interfaces con otros sistemas. Este enfoque es una alternativa a la arquitectura tradicional en capas.

Cada componente está conectado a los demás a través de una serie de "puertos" expuestos. La comunicación a través de estos puertos sigue un protocolo determinado en función de su finalidad. Los puertos y protocolos definen una API abstracta que se puede implementar mediante cualquier medio técnico adecuado (por ejemplo, invocación de métodos en un lenguaje orientado a objetos , llamadas a procedimientos remotos o servicios web ).

La granularidad de los puertos y su número no están restringidos:

Los adaptadores son el nexo de unión entre los componentes y el mundo exterior. Adaptan los intercambios entre el mundo externo y los puertos que representan los requisitos del interior del componente de la aplicación. Puede haber varios adaptadores para un puerto; por ejemplo, los datos pueden ser proporcionados por un usuario a través de una interfaz gráfica de usuario o una interfaz de línea de comandos, por una fuente de datos automatizada o por scripts de prueba.

Crítica

El término "hexagonal" implica que el concepto consta de 6 partes, mientras que solo hay 4 áreas clave. El uso del término proviene de las convenciones gráficas que muestran el componente de la aplicación como una celda hexagonal . El propósito no era sugerir que habría seis bordes/puertos, sino dejar suficiente espacio para representar las diferentes interfaces necesarias entre el componente y el mundo externo. [1]

Según Martin Fowler , la arquitectura hexagonal tiene el beneficio de utilizar similitudes entre la capa de presentación y la capa de fuente de datos para crear componentes simétricos hechos de un núcleo rodeado de interfaces, pero con el inconveniente de ocultar la asimetría inherente entre un proveedor de servicios y un consumidor de servicios que se representaría mejor como capas. [5]

Evolución

Según algunos autores, la arquitectura hexagonal está en el origen de la arquitectura de microservicios . [6]

Variantes

La arquitectura de cebolla propuesta por Jeffrey Palermo en 2008 es similar a la arquitectura hexagonal: también externaliza la infraestructura con interfaces para asegurar un acoplamiento flexible entre la aplicación y la base de datos. [7] Descompone aún más el núcleo de la aplicación en varios anillos concéntricos utilizando la inversión de control . [8]

La arquitectura limpia propuesta por Robert C. Martin en 2012 combina los principios de la arquitectura hexagonal, la arquitectura cebolla y varias otras variantes. Proporciona niveles adicionales de detalle del componente, que se presentan como anillos concéntricos. Aísla adaptadores e interfaces (interfaz de usuario, bases de datos, sistemas externos, dispositivos) en los anillos externos de la arquitectura y deja los anillos internos para casos de uso y entidades . [9] [10] La arquitectura limpia utiliza el principio de inversión de dependencias con la regla estricta de que las dependencias solo deben existir entre un anillo externo a un anillo interno y nunca al contrario.

Véase también

Referencias

  1. ^ abcd Cockburn, Alistair (1 de abril de 2005). "Arquitectura hexagonal". alistair.cockburn.us . Consultado el 18 de noviembre de 2020 .
  2. ^ "Arquitectura hexagonal en el Wiki C2".
  3. ^ "Arquitectura de puertos y adaptadores en el Wiki C2".
  4. ^ "Explicación de la arquitectura hexagonal".
  5. ^ Fowler, Martin (2003). Patrones de arquitectura de aplicaciones empresariales . Addison-Wesley. pág. 21. ISBN 0-321-12742-0.OCLC 50292267  .
  6. ^ Rajesh RV (2017). Microservicios de Spring 5.0: cree microservicios escalables con Reactive Streams, Spring Boot, Docker y Mesos (segunda edición). Packt Publishing. págs. 13-14. ISBN 978-1-78712-051-8.OCLC 999610958  .
  7. ^ Jeffrey, Palermo (29 de julio de 2008). "La arquitectura de la cebolla: parte 1". Programación con Palermo . Consultado el 12 de agosto de 2019 .
  8. ^ Chatekar, Suhas (2015). Aprendiendo NHibernate 4: explora todo el potencial de NHibernate para crear un código de acceso a datos robusto . Packt Publishing. pp. 249–250. ISBN 978-1-78439-206-2.OCLC 937787252  .
  9. ^ Martin, Robert, C. (12 de agosto de 2012). "La arquitectura limpia | Blog de Clean Coder". blog.cleancoder.com . Consultado el 12 de agosto de 2019 .{{cite web}}: CS1 maint: varios nombres: lista de autores ( enlace )
  10. ^ Martin, Robert C. (2017). Arquitectura limpia: guía para el artesano sobre la estructura y el diseño de software . Prentice Hall. ISBN 978-0-13-449416-6.OCLC 1004983973  .