Arquitectura Onion: Diseño y Aplicación en Desarrollo de Software
Clase 7 de 24 • Curso de Arquitecturas Limpias para Desarrollo de Software
Contenido del curso
Conceptos detrás de las Arquitecturas Limpias
Arquitecturas de referencia
- 6

Arquitectura Hexagonal: Puertos y Adaptadores en Desarrollo de Software
07:00 min - 7

Arquitectura Onion: Diseño y Aplicación en Desarrollo de Software
Viendo ahora - 8

Desglose de Capas en Clean Architecture
03:20 min - 9

Implementación de Arquitectura Limpia en Empresas Reales
10:06 min - 10

Conclusiones sobre Arquitectura de Software Adaptativa
04:00 min
Dominio de una arquitectura
- 11

Errores Comunes al Manejar la Lógica de Dominio en Sistemas de Información
08:37 min - 12

Script de Transacción en Arquitectura de Software
08:26 min - 13

Inyección de Dependencias e Inversión de Control en Java
07:40 min - 14

Modelos de Dominio en Programación Orientada a Objetos
06:43 min - 15

Capa de Servicios y Fachada en la Arquitectura de Software
04:19 min - 16

Casos de Uso en Clean Architecture con C#
07:08 min - 17

Implementación de CQRS en Arquitecturas Limpias con C#
12:00 min
Capa externa
- 18

Acceso a Datos en Arquitectura Limpia: Fuentes y Pruebas Efectivas
06:03 min - 19

Implementación del Patrón Repository en Arquitectura de Software
08:17 min - 20

Implementación de APIs y Web con Spring Boot en Arquitectura Limpia
05:28 min - 21

Implementación de Integraciones con el Patrón Adapter en Arquitectura Limpia
09:06 min - 22

Pruebas Unitarias en Arquitecturas Limpias con Java y Spring Boot
05:39 min - 23

Pruebas de Integración con Dobles de Prueba en Aplicaciones
09:26 min
Cierre
¿Qué es la arquitectura cebolla y por qué es importante?
La arquitectura cebolla, también conocida como Onion Architecture, es un patrón de diseño de software propuesto en 2008 por Jeffrey Palermo. Este modelo arquitectónico es esencial porque promueve la independencia del lenguaje de programación y de las herramientas de implementación. Se centra en la separación de preocupaciones, asegurando que el núcleo de negocio no se vea afectado por cambios en otras capas como la infraestructura o la interfaz de usuario.
¿Cómo está estructurada la arquitectura cebolla?
La arquitectura cebolla se organiza en capas concéntricas, donde cada capa tiene una función específica y depende únicamente de las capas más internas. A continuación, se detalla la estructura:
-
Modelo de dominio: Es el corazón de la cebolla. Aquí se definen las entidades que modelan el problema que se está abordando. Por ejemplo, si se tratara de un sistema para hoteles, las entidades podrían ser "hotel", "reserva" y "habitación". Es crucial que el modelo de dominio no dependa de ninguna otra capa.
-
Servicios de dominio: Rodeando al modelo de dominio, esta capa contiene la lógica y las reglas de negocio. Además, aquí se definen interfaces para acceder a los datos, conocidos como repositorios, los cuales no se implementan en esta capa.
-
Servicios de aplicación: Esta capa envuelve a los servicios de dominio y contiene operaciones más específicas ligadas a la aplicación. Es en esta capa donde se comienza a implementar la funcionalidad de la aplicación de manera más concreta.
-
Capa externa: Incluye elementos que son considerados externos al núcleo pero esenciales, como las pruebas unitarias y de integración, la infraestructura, y la interfaz gráfica. Estos elementos no deben influir en el núcleo del sistema.
¿Cuáles son las ventajas del uso de la arquitectura cebolla?
Implementar la arquitectura cebolla ofrece varios beneficios significativos:
- Aislamiento del dominio: La lógica del negocio se mantiene independiente de cuestiones tecnológicas como bases de datos o interfaces de usuario.
- Flexibilidad y mantenimiento: Al tener las dependencias en las capas internas, facilita el mantenimiento y la adaptación a cambios.
- Facilita las pruebas: Permite realizar pruebas exhaustivas de unidades e integración sin que el dominio se vea afectado.
La arquitectura cebolla ha ganado popularidad en el ecosistema .NET, pero su uso es aplicable en cualquier lenguaje de programación, confirmando su versatilidad y eficacia en la producción de software robusto y mantenible. ¡No dudes en explorar este fascinante enfoque arquitectónico y comprobar su impacto positivo en tus proyectos!